SQL外鍵約束可透過FOREIGN KEY關鍵字來指定,建立語句為「ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY(列名) REFERENCES 主表名 (列名);」。
本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。
MySQL 外鍵約束(FOREIGN KEY)是表格的一個特殊字段,經常與主鍵約束一起使用。對於兩個具有關聯關係的表而言,相關聯字段中主鍵所在的表就是主表(父表),外鍵所在的表就是從表(子表)。
外鍵用來建立主表與從表的關聯關係,為兩個表的資料建立連接,約束兩個表中資料的一致性和完整性。
建立表格外鍵約束
可以在ALTER TABLE語句中,透過 FOREIGN KEY 關鍵字來指定外鍵;新增外鍵約束的前提是:從表中外鍵列中的資料必須與主表中主鍵列中的資料一致或沒有資料。
具體的語法格式如下:
ALTER TABLE <数据表名> ADD CONSTRAINT <外键名> FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);
定義外鍵時,需要遵守下列規則
主表必須已經存在於資料庫中,或是目前正在建立的表。如果是後一種情況,則主表與從表是同一個表,這樣的表稱為自參照表,這種結構稱為自參照完整性。
必須為主表定義主鍵。
主鍵不能包含空值,但允許在外鍵中出現空值。也就是說,只要外鍵的每個非空值出現在指定的主鍵中,這個外鍵的內容就是正確的。
在主表的表名後面指定列名或列名的組合。這個列或列的組合必須是主表的主鍵或候選鍵。
外鍵中列的數目必須和主表的主鍵中列的數目相同。
外鍵中列的資料型別必須和主表主鍵中對應列的資料型別相同。
範例:
修改資料表tb_emp2,將欄位deptId 設定為外鍵,與資料表tb_dept1 的主鍵id 進行關聯,SQL 語句和運行結果如下所示。
mysql> ALTER TABLE tb_emp2 -> ADD CONSTRAINT fk_tb_dept1 -> FOREIGN KEY(deptId) -> REFERENCES tb_dept1(id); Query OK, 0 rows affected (1.38 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> SHOW CREATE TABLE tb_emp2\G *************************** 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)
注意:在已建立好的資料表新增外鍵約束時,請確保新增外鍵約束的資料列的值全部來自主鍵列,且外鍵列不能為空。
(推薦教學:mysql影片教學)
以上是SQL建立表格外鍵約束的語句是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!