mysql怎麼增加外鍵約束

青灯夜游
發布: 2021-12-28 09:10:06
原創
12494 人瀏覽過

mysql中可用「ALTER TABLE」語句和「FOREIGN KEY」關鍵字增加外鍵,語法「ALTER TABLE 表名ADD CONSTRAINT 外鍵名FOREIGN KEY(列名) REFERENCES 主表名(列名) ;」。

mysql怎麼增加外鍵約束

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

MySQL 外鍵約束(FOREIGN KEY)是表格的一個特殊字段,經常與主鍵約束一起使用。對於兩個具有關聯關係的表而言,相關聯字段中主鍵所在的表就是主表(父表),外鍵所在的表就是從表(子表)。

外鍵用來建立主表與從表的關聯關係,為兩個表的資料建立連接,約束兩個表中資料的一致性和完整性。

定義外鍵時,需要遵守下列規則:

  • 主表必須已經存在於資料庫中,或是目前正在建立的表。如果是後一種情況,則主表與從表是同一個表,這樣的表稱為自參照表,這種結構稱為自參照完整性。

  • 必須為主表定義主鍵。

  • 主鍵不能包含空值,但允許在外鍵中出現空值。也就是說,只要外鍵的每個非空值出現在指定的主鍵中,這個外鍵的內容就是正確的。

  • 在主表的表名後面指定列名或列名的組合。這個列或列的組合必須是主表的主鍵或候選鍵。

  • 外鍵中列的數目必須和主表的主鍵中列的數目相同。

  • 外鍵中列的資料型別必須和主表主鍵中對應列的資料型別相同。

mysql為表增加外鍵約束

外鍵約束可以在修改表時添加,但是添加外鍵約束的前提是:從表中外鍵列中的資料必須與主表中主鍵列中的資料一致或沒有資料。

在修改資料表時新增外鍵約束的語法格式如下:

ALTER TABLE <数据表名> ADD CONSTRAINT <外键名>
FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);
登入後複製

#範例

修改資料表tb_emp2,將欄位deptId 設為外鍵,與資料表tb_dept1 的主鍵id 進行關聯

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影片教學

#

以上是mysql怎麼增加外鍵約束的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!