如何将表中salary
列的列大小employee
从numeric(18,0)
更改为numeric(22,5)
10 回答
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
alter table Employee alter column salary numeric(22,5)
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
可以在这里找到有趣的方法:如何在不停机的情况下扩大您的列,由 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 table_name MODIFY column_name varchar(new_length);