国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql如何增加外鍵約束

2024-07-24 12:34:06
字體:
來源:轉載
供稿:網友

  小編給大家分享一下mysql如何增加外鍵約束,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
  
  mysql中可用“ALTER TABLE”語句和“FOREIGN KEY”關鍵字增加外鍵,語法“ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY(列名) REFERENCES 主表名 (列名);”。
 
  本教程操作環境: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)
  注意:在為已經創建好的數據表添加外鍵約束時,要確保添加外鍵約束的列的值全部來源于主鍵列,并且外鍵列不能為空。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 都安| 凉城县| 连江县| 弥渡县| 礼泉县| 渭南市| 西盟| 莲花县| 德兴市| 罗平县| 平阳县| 容城县| 新野县| 石城县| 彝良县| 新宾| 镇康县| 新绛县| 南部县| 清新县| 华蓥市| 师宗县| 梧州市| 邢台县| 威远县| 长阳| 边坝县| 德江县| 英德市| 土默特右旗| 和林格尔县| 西和县| 静安区| 波密县| 农安县| 青龙| SHOW| 万载县| 铜川市| 荣昌县| 唐山市|