在mysql中,可以利用ALTER TABLE語(yǔ)句配合DROP關(guān)鍵字來(lái)刪除外鍵關(guān)系(約束),語(yǔ)法“ALTER TABLE 數(shù)據(jù)表名 DROP FOREIGN KEY 外鍵約束名;”;“ALTER TABLE”語(yǔ)句用于修改表(改變?cè)斜淼慕Y(jié)構(gòu)),而添加了“DROP FOREIGN KEY”語(yǔ)句后,修改功能就限制在刪除外鍵關(guān)系(約束)上。
本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
外鍵關(guān)系(外鍵約束)是表的一個(gè)特殊字段,經(jīng)常與主鍵約束一起使用。對(duì)于兩個(gè)具有關(guān)聯(lián)關(guān)系的表而言,相關(guān)聯(lián)字段中主鍵所在的表就是主表(父表),外鍵所在的表就是從表(子表)。
外鍵用來(lái)建立主表與從表的關(guān)聯(lián)關(guān)系,為兩個(gè)表的數(shù)據(jù)建立連接,約束兩個(gè)表中數(shù)據(jù)的一致性和完整性。比如,一個(gè)水果攤,只有蘋(píng)果、桃子、李子、西瓜等 4 種水果,那么,你來(lái)到水果攤要買(mǎi)水果就只能選擇蘋(píng)果、桃子、李子和西瓜,其它的水果都是不能購(gòu)買(mǎi)的。
主表刪除某條記錄時(shí),從表中與之對(duì)應(yīng)的記錄也必須有相應(yīng)的改變。一個(gè)表可以有一個(gè)或多個(gè)外鍵,外鍵可以為空值,若不為空值,則每一個(gè)外鍵的值必須等于主表中主鍵的某個(gè)值。
當(dāng)一個(gè)表中不需要外鍵約束時(shí),就需要從表中將其刪除。外鍵一旦刪除,就會(huì)解除主表和從表間的關(guān)聯(lián)關(guān)系。
那么mysql怎么刪除外鍵關(guān)系(約束)?
在mysql中,可以利用ALTER TABLE語(yǔ)句配合DROP關(guān)鍵字來(lái)刪除外鍵關(guān)系(約束)。
刪除外鍵約束的語(yǔ)法格式如下所示:
ALTER TABLE 數(shù)據(jù)表名 DROP FOREIGN KEY 外鍵約束名;
-
ALTER TABLE 語(yǔ)句用于改變?cè)斜淼慕Y(jié)構(gòu),例如增加或刪減列、更改原有列類(lèi)型、重新命名列或表等。
-
DROP FOREIGN KEY語(yǔ)句用于刪除外鍵關(guān)系
示例:
使用以下語(yǔ)句查看數(shù)據(jù)表 tb_emp2 的外鍵約束:
SHOW CREATE TABLE tb_emp2G
mysql> SHOW CREATE TABLE tb_emp2G *************************** 1. row *************************** Table: tb_emp2 Create Table: CREATE TABLE `tb_emp2` ( `id` int(11) NOT NULL, `name` varchar(30) DEFAULT NULL, `deptId` int(11) DEFAULT NULL, `salary` float DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_tb_dept1` (`deptId`), CONSTRAINT `fk_tb_dept1` FOREIGN KEY (`deptId`) REFERENCES `tb_dept1` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 1 row in set (0.12 sec)
刪除數(shù)據(jù)表 tb_emp2 中的外鍵約束 fk_tb_dept1
ALTER TABLE tb_emp2 DROP FOREIGN KEY fk_tb_dept1;
mysql> ALTER TABLE tb_emp2 -> DROP FOREIGN KEY fk_tb_dept1; Query OK, 0 rows affected (0.19 sec) Records: 0 Duplicates: 0 Warnings: 0
【