下面是幾種不同數據庫的升級腳本比較,實際上是對不同數據庫版本的ALTER命令用法的比較
約定:[]內的內容可有可無
1,修改字段類型[關鍵字:modify&alter]
mysql:
ALTER TABLE 表名 MODIFY [COLUMN] 字段名 字段類型定義;
sqlserver:
ALTER TABLE 表名 ALTER COLUMN 字段名 字段類型定義;
[這里在修改約束的時候需要用到專門的關鍵字CONSTRAINT]
oracle:
ALTER TABLE 表名 MODIFY ( 字段名 字段類型定義);
[Oracle,修改類型時所改字段的數據必須為空:]
2,增加和刪除字段
增加字段
ALTER TABLE 表名 ADD 字段名 字段類型定義;
刪除字段
mysql:
ALTER TABLE 表名 DROP[COLUMN] 字段名
sqlserver:
ALTER TABLE 表名 DROP COLUMN 字段名
3,修改列名
mysql:
可以用CHANGE同時修改列名和列類型,如:
ALTER TABLE table CHANGE column newcolumn BIT NOT NULL
這里column和newcolumn可以相同,
也就是說,CHANGE可以取代MODIFY了,可以用來單純修改列類型或者列名
sqlserver:
暫時只能調用存儲過程
EXEC SP_RENAME table.column','newcolumn','COLUMN'
oracle:
在817版本以上支持RENAME了,沒有具體測試過,9i以上版本比較保險
ALTER TABLE table RENAME COLUMN column TO newcolumn;