1. 程式人生 > >MySQL ALTER命令小結

MySQL ALTER命令小結

1.使用了 ALTER 命令和ADD 子句來向資料表中新增列
ALTER TABLE testalter_tbl ADD i INT;
i 欄位會自動新增到資料表字段的末尾。


**2.使用了 ALTER 命令及 DROP 子句來刪除:** `ALTER TABLE testalter_tbl DROP i;` 如果資料表中只剩餘一個欄位則無法使用DROP來刪除欄位。

如果你需要指定新增欄位的位置,可以使用MySQL提供的關鍵字 FIRST (設定位第一列), AFTER 欄位名(設定位於某個欄位之後)
嘗試以下 ALTER TABLE 語句, 在執行成功後,使用 SHOW COLUMNS 查看錶結構的變化:
ALTER TABLE testalter_tbl DROP i;


ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c;
FIRST 和 AFTER 關鍵字只佔用於 ADD 子句,所以如果你想重置資料表字段的位置就需要先使用 DROP 刪除欄位然後使用 ADD 來新增欄位並設定位置。(這個說法不對了,後補處用modify修改位置也行)


**3.修改欄位型別及名稱**

ALTER命令中使用 MODIFY 或 CHANGE 子句 。
ex:把欄位 c 的型別從 CHAR(1) 改為 CHAR(10),可以執行以下命令:
ALTER TABLE testalter_tbl MODIFY c CHAR(10);

使用 CHANGE 子句, 語法有很大的不同。
在 CHANGE 關鍵字之後,緊跟著的是你要修改的欄位名,然後指定新欄位名及型別。
ALTER TABLE testalter_tbl CHANGE i j BIGINT;
ALTER TABLE testalter_tbl CHANGE j j INT;


**4.ALTER TABLE 對 Null 值和預設值的影響**

當你修改欄位時,你可以指定是否包含值或者是否設定預設值。
以下例項,指定欄位 j 為 NOT NULL 且預設值為100 。
ALTER TABLE testalter_tbl MODIFY j BIGINT NOT NULL DEFAULT 100;


如果你不設定預設值,MySQL會自動設定該欄位預設為 NULL。


5.修改欄位預設值
ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
//檢視
SHOW COLUMNS FROM testalter_tbl;

ALTER 命令及 DROP子句來刪除欄位的預設值
ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

6.修改資料表型別
使用 ALTER 命令及 TYPE 子句來完成。嘗試以下例項,我們將表 testalter_tbl 的型別修改為 MYISAM :
注意:檢視資料表型別可以使用 SHOW TABLE STATUS 語句。
ALTER TABLE testalter_tbl ENGINE = MYISAM;
SHOW TABLE STATUS LIKE 'testalter_tbl'\G

7.修改表名
ALTER TABLE 語句中使用 RENAME 子句來實現。
ALTER TABLE testalter_tbl RENAME TO alter_tbl;

後補:
ALTER 命令還可以用來建立及刪除MySQL資料表的索引

刪除外來鍵約束:keyName是外來鍵別名
alter table tableName drop foreign key keyName;

修改欄位的相對位置:這裡name1為想要修改的欄位,type1為該欄位原來型別,first和after二選一,這應該顯而易見,first放在第一位,after放在name2欄位後面

alter table tableName modify name1 type1 first|after name2;