下面是幾種不同數(shù)據(jù)庫(kù)的升級(jí)腳本比較,實(shí)際上是對(duì)不同數(shù)據(jù)庫(kù)版本的ALTER命令用法的比較

約定:[]內(nèi)的內(nèi)容可有可無(wú)

1,修改字段類型[關(guān)鍵字:modify&alter]

mysql:

ALTER TABLE 表名 MODIFY [COLUMN] 字段名 字段類型定義;

sqlserver:

ALTER TABLE 表名 ALTER COLUMN 字段名 字段類型定義;
[這里在修改約束的時(shí)候需要用到專門(mén)的關(guān)鍵字CONSTRAINT]

oracle:

ALTER TABLE 表名 MODIFY ( 字段名 字段類型定義);
[Oracle,修改類型時(shí)所改字段的數(shù)據(jù)必須為空:]

2,增加和刪除字段

增加字段

ALTER TABLE 表名 ADD 字段名 字段類型定義;

刪除字段

mysql:
ALTER TABLE 表名 DROP[COLUMN] 字段名

sqlserver:
ALTER TABLE 表名 DROP COLUMN 字段名

3,修改列名

mysql:
可以用CHANGE同時(shí)修改列名和列類型,如:
ALTER TABLE table CHANGE column newcolumn BIT NOT NULL
這里column和newcolumn可以相同,
也就是說(shuō),CHANGE可以取代MODIFY了,可以用來(lái)單純修改列類型或者列名

sqlserver:
暫時(shí)只能調(diào)用存儲(chǔ)過(guò)程
EXEC SP_RENAME table.column','newcolumn','COLUMN'

oracle:
在817版本以上支持RENAME了,沒(méi)有具體測(cè)試過(guò),9i以上版本比較保險(xiǎn)
ALTER TABLE table RENAME COLUMN column TO newcolumn;