MySQL的ALTER命令是非常有用的,當想改變表的名稱,表的字段,或者如果要添加或刪除一個現有的表中的列。
讓我們開始創建一個表名為testalter_tbl的用例:
| root@host# mysql -u root -p password;Enter password:*******mysql> use TUTORIALS;Database changedmysql> create table testalter_tbl -> ( -> i INT, -> c CHAR(1) -> );Query OK, 0 rows affected (0.05 sec)mysql> SHOW COLUMNS FROM testalter_tbl;+-------+---------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+---------+------+-----+---------+-------+| i | int(11) | YES | | NULL | || c | char(1) | YES | | NULL | |+-------+---------+------+-----+---------+-------+2 rows in set (0.00 sec) |
丟棄,添加或重新定位字段:
假設要刪除一個現有的第i列從上面的MySQL表,那么使用DROP子句一起使用ALTER命令如下
| mysql> ALTER TABLE testalter_tbl DROP i; |
如果該表中剩下唯一的一個字段,DROP命令是不起作用的。
要添加一列,使用“添加”ADD“指定的列定義。下面的語句恢復?列的testalter_tbl
| mysql> ALTER TABLE testalter_tbl ADD i INT; |
testalter將包含相同的兩列,當第一次創建表不會有相同的結構。這是因為新列添加到默認情況下,該表結束。即使ioriginally是第一列MYTBL,現在是最后一條:
| mysql> SHOW COLUMNS FROM testalter_tbl;+-------+---------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+---------+------+-----+---------+-------+| c | char(1) | YES | | NULL | || i | int(11) | YES | | NULL | |+-------+---------+------+-----+---------+-------+2 rows in set (0.00 sec) |
想指定的表中的一列位置,可以使用第一個它的第一列,,或ALTER COL_NAME到指示新列應該放在后COL_NAME。請嘗試以下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; |
要更改列的定義,修改或變更條款,連同ALTER命令。例如,要更改列c從CHAR(1)為CHAR(10),這樣做:
| mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10); |
| mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT; |