您好,登錄后才能下訂單哦!
這篇文章主要介紹SQL創建表外鍵約束的語句怎么寫,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
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)
注意:在為已經創建好的數據表添加外鍵約束時,要確保添加外鍵約束的列的值全部來源于主鍵列,并且外鍵列不能為空。
以上是“SQL創建表外鍵約束的語句怎么寫”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。