Mysql-基本練習(07-修改表-新增主鍵、唯一、外來鍵約束、新增/刪除預設約束、刪除約束)
1.新增主鍵約束
語法:ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,……)
新增主鍵約束前表結構
為表tb1的id欄位新增主鍵約束,約束名為pk_tb1_id
ALTER TABLE tb1 ADD CONSTRAINT pk_tb1_id PRIMARY KEY(id);
新增主鍵約束後的表結構
2.新增唯一約束
語法:ALTER TABLE tb_name ADD
[CONSTRAINT [symbol]] UNIQUE [index | KEY] [index_name] [index_type] (index_col_name,……)
為表tb1的name欄位新增唯一約束
ALTER TABLE tb1 ADD UNIQUE (name);
新增唯一約束後的表結構
3.新增外來鍵約束
語法:ALTER TABLE tb_name ADD
[CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,……) reference_definition
先為表tb1新增列tb2_id,在為表tb1的tb2_id 欄位新增外來鍵約束,引用表tb2的主鍵id
ALTER TABLE tb1 ADD FOREIGN KEY (tb2_id) REFERENCES tb2 (id);
新增外來鍵約束後的建表細節
4.新增/刪除預設約束
語法:ALTER TABLE tb_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
為表tb1的name欄位新增預設約束,值為“笑笑”
ALTER TABLE tb1 ALTER name SET DEFAULT "笑笑";
新增預設約束後的表結構
刪除預設約束
ALTER TABLE tb1 ALTER name DROP DEFAULT;
刪除預設約束後的表結構
5.刪除約束
1)刪除主鍵約束
語法:ALTER TABLE tb_name DROP PRIMARY KEY
刪除表tb1的主鍵約束
ALTER TABLE tb1 DROP PRIMARY KEY;
2)刪除唯一約束
語法:ALTER TABLE tb_name DROP {INDEX | KEY} index_name
根據語法可知,我們先得檢視唯一約束的索引
語法:SHOW INDEXES FROM tb_name\G (\G表示以網格的形式顯示資訊)
SHOW INDEXES FROM tb1\G;
由結果得知,唯一約束的索引名稱為name
刪除表tb1的唯一約束
ALTER TABLE tb1 DROP INDEX name;
3)刪除外來鍵約束
語法:ALTER TABLE tb_name DROP FOREIGN KEY fk_symbol
我們先得檢視外來鍵約束的名稱
SHOW CREATE TABLE tb1;
根據結果可知,外來鍵約束名稱為:tb1_ibfk_1
刪除表tb1的外來鍵約束
ALTER TABLE tb1 DROP FOREIGN KEY tb1_ibfk_1;
刪除外來鍵約束的索引,索引名由上圖可知為:tb2_id
ALTER TABLE tb1 DROP INDEX tb2_id;
刪除所有約束、索引之後的表結構為