国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

詳解MySQL中ALTER命令的使用

2020-01-18 22:53:44
字體:
供稿:網(wǎng)友

MySQL的ALTER命令是非常有用的,當(dāng)想改變表的名稱,表的字段,或者如果要添加或刪除一個(gè)現(xiàn)有的表中的列。

讓我們開始創(chuàng)建一個(gè)表名為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)

丟棄,添加或重新定位字段:

假設(shè)要?jiǎng)h除一個(gè)現(xiàn)有的第i列從上面的MySQL表,那么使用DROP子句一起使用ALTER命令如下

mysql> ALTER TABLE testalter_tbl DROP i;

如果該表中剩下唯一的一個(gè)字段,DROP命令是不起作用的。

要添加一列,使用“添加”ADD“指定的列定義。下面的語句恢復(fù)?列的testalter_tbl

mysql> ALTER TABLE testalter_tbl ADD i INT;

testalter將包含相同的兩列,當(dāng)?shù)谝淮蝿?chuàng)建表不會(huì)有相同的結(jié)構(gòu)。這是因?yàn)樾铝刑砑拥侥J(rèn)情況下,該表結(jié)束。即使ioriginally是第一列MYTBL,現(xiàn)在是最后一條:

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)

想指定的表中的一列位置,可以使用第一個(gè)它的第一列,,或ALTER COL_NAME到指示新列應(yīng)該放在后COL_NAME。請(qǐng)嘗試以下ALTER TABLE語句中,使用SHOW COLUMNS后,每個(gè)人都有不同的影響:

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;
第一和AFTER符只能與ADD子句。這意味著,如果要重新定位現(xiàn)有的列在一個(gè)表中,必須先刪除它,然后將它添加在新的位置。
更改列定義或名稱:

要更改列的定義,修改或變更條款,連同ALTER命令。例如,要更改列c從CHAR(1)為CHAR(10),這樣做:

mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
CHANGE語法是有點(diǎn)不同。變更后的關(guān)鍵字,要更改的列的名字,然后指定新的定義,其中包括新的名稱。試試下面的例子:
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;

如果現(xiàn)在使用轉(zhuǎn)換j字段的BIGINT為int而不改變列名,該聲明應(yīng)該是:

mysql> ALTER TABLE testalter_tbl CHANGE j j INT;

ALTER TABLE的影響,NULL和默認(rèn)值屬性:

當(dāng)修改或更改列,也可以指定是否該列可以包含NULL值,它的默認(rèn)值是什么。事實(shí)上,如果不這樣做,MySQL會(huì)自動(dòng)分配給這些屬性的值。

下面是示例默認(rèn)情況下,NOT NULL列的值將是100。

mysql> ALTER TABLE testalter_tbl   -> MODIFY j BIGINT NOT NULL DEFAULT 100;

如果不使用上面的命令,那么MySQL將填補(bǔ)所有的列中的NULL值。
更改列的默認(rèn)值:

可以使用ALTER命令更改任何列的默認(rèn)值。試試下面的例子。

mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;mysql> SHOW COLUMNS FROM testalter_tbl;+-------+---------+------+-----+---------+-------+| Field | Type  | Null | Key | Default | Extra |+-------+---------+------+-----+---------+-------+| c   | char(1) | YES |   | NULL  |    || i   | int(11) | YES |   | 1000  |    |+-------+---------+------+-----+---------+-------+2 rows in set (0.00 sec)

可以從任何一列中刪除默認(rèn)約束通過使用DROP子句一起使用ALTER命令。

mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;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命令及TYPE子句一起使用的修改表類型。試試下面的示例中,改變testalter_tbl 為InnoDB類型。

要找出一個(gè)表的當(dāng)前類型,使用SHOW TABLE STATUS語句。

mysql> ALTER TABLE testalter_tbl TYPE = InnoDB;mysql> SHOW TABLE STATUS LIKE 'testalter_tbl'/G*************************** 1. row ****************      Name: testalter_tbl      Type: InnoDB   Row_format: Fixed      Rows: 0 Avg_row_length: 0  Data_length: 0Max_data_length: 25769803775  Index_length: 1024   Data_free: 0 Auto_increment: NULL  Create_time: 2007-06-03 08:04:36  Update_time: 2007-06-03 08:04:36   Check_time: NULL Create_options:    Comment:1 row in set (0.00 sec)

重命名表:

要重命名表,使用ALTER TABLE語句中RENAME選項(xiàng)。試試下面的例子,重命名testalter_tbl為alter_tbl

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

可以使用ALTER命令來創(chuàng)建和刪除索引在MySQL文件。在下一章中,我們將看到此功能。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 清水河县| 台州市| 延安市| 洪雅县| 阿瓦提县| 胶南市| 青海省| 汕头市| 耒阳市| 辉县市| 正蓝旗| 陆丰市| 威远县| 石棉县| 石首市| 托克逊县| 仪陇县| 涟源市| 洛扎县| 屏东市| 浑源县| 阿克苏市| 谢通门县| 郸城县| 汕头市| 萨嘎县| 镇赉县| 临汾市| 调兵山市| 石棉县| 阿城市| 日照市| 体育| 河北省| 商丘市| 石柱| 彭阳县| 开封县| 上高县| 黄山市| 孟州市|