【发布时间】:2012-04-25 15:46:39
【问题描述】:
如何将employee表中salary列的列大小从numeric(18,0)更改为numeric(22,5)
【问题讨论】:
标签: sql sql-server database tsql alter-table
如何将employee表中salary列的列大小从numeric(18,0)更改为numeric(22,5)
【问题讨论】:
标签: sql sql-server database tsql alter-table
alter table Employee alter column salary numeric(22,5)
【讨论】:
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
【讨论】:
NOT NULL,则必须在查询中提及,否则默认情况下会将其设置为NULL。 ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)
【讨论】:
运行ALTER COLUMN 而不提及属性NOT NULL 将导致列被更改为可为空,如果它已经不是。因此,您需要首先检查该列是否可以为空,如果不是,请指定属性NOT NULL。或者,您可以使用以下语句预先检查列的可空性并运行具有正确属性的命令。
IF COLUMNPROPERTY(OBJECT_ID('Employee', 'U'), 'Salary', 'AllowsNull')=0
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
ELSE
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NULL
【讨论】:
【讨论】:
可以在这里找到有趣的方法:How To Enlarge Your Columns With No Downtime by spaghettidba
如果您尝试使用直接的“ALTER TABLE”命令来扩大此列,您将不得不等待 SQLServer 遍历所有行并写入新的数据类型
ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;为了克服这种不便,您的桌子可以服用一种神奇的列扩大药丸,它被称为行压缩。 (...) 使用行压缩,您的固定大小的列只能使用适合实际数据的最小数据类型所需的空间。
当表在ROW 级别压缩时,ALTER TABLE ALTER COLUMN 是仅元数据操作。
【讨论】:
您可以使用ALTER 命令修改表架构。
修改列大小的语法是
ALTER table table_name modify COLUMN column_name varchar (size);
【讨论】:
ALTER TABLE "Employee" MODIFY ("Salary" NUMERIC(22,5));
【讨论】:
对于数据库的 Oracle:
ALTER TABLE table_name MODIFY column_name VARCHAR2(255 CHAR);
【讨论】:
在这种情况下,您需要使用 ALTER TABLE 语句来增加列大小。
这是它的语法
ALTER TABLE 表名 修改列名 varchar(new_length);
【讨论】: