婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL外鍵約束(FOREIGN KEY)案例講解

MySQL外鍵約束(FOREIGN KEY)案例講解

熱門標簽:400電話可以辦理嗎 外東北地圖標注 云南電商智能外呼系統價格 高清地圖標注道路 大眾點評星級酒店地圖標注 話務外呼系統怎么樣 拉卡拉外呼系統 智能外呼系統復位 臨清電話機器人

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

外鍵用來建立主表與從表的關聯關系,為兩個表的數據建立連接,約束兩個表中數據的一致性和完整性。比如,一個水果攤,只有蘋果、桃子、李子、西瓜等 4 種水果,那么,你來到水果攤要買水果就只能選擇蘋果、桃子、李子和西瓜,其它的水果都是不能購買的。

主表刪除某條記錄時,從表中與之對應的記錄也必須有相應的改變。一個表可以有一個或多個外鍵,外鍵可以為空值,若不為空值,則每一個外鍵的值必須等于主表中主鍵的某個值。

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

  • 主表必須已經存在于數據庫中,或者是當前正在創建的表。如果是后一種情況,則主表與從表是同一個表,這樣的表稱為自參照表,這種結構稱為自參照完整性。
  • 必須為主表定義主鍵。
  • 主鍵不能包含空值,但允許在外鍵中出現空值。也就是說,只要外鍵的每個非空值出現在指定的主鍵中,這個外鍵的內容就是正確的。
  • 在主表的表名后面指定列名或列名的組合。這個列或列的組合必須是主表的主鍵或候選鍵。
  • 外鍵中列的數目必須和主表的主鍵中列的數目相同。
  • 外鍵中列的數據類型必須和主表主鍵中對應列的數據類型相同。

在創建表時設置外鍵約束

在 CREATE TABLE 語句中,通過 FOREIGN KEY 關鍵字來指定外鍵,具體的語法格式如下:

[CONSTRAINT 外鍵名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES 主表名> 主鍵列1 [,主鍵列2,…]

例 1

為了展現表與表之間的外鍵關系,本例在 test_db 數據庫中創建一個部門表 tb_dept1,表結構如下表所示。

字段名稱 數據類型 備注
id INT(11) 部門編號
name VARCHAR(22) 部門名稱
location VARCHAR(22) 部門位置

創建 tb_dept1 的 SQL 語句和運行結果如下所示。

mysql> CREATE TABLE tb_dept1
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(22) NOT NULL,
    -> location VARCHAR(50)
    -> );
Query OK, 0 rows affected (0.37 sec)

創建數據表 tb_emp6,并在表 tb_emp6 上創建外鍵約束,讓它的鍵 deptId 作為外鍵關聯到表 tb_dept1 的主鍵 id,SQL 語句和運行結果如下所示。

mysql> CREATE TABLE tb_emp6
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> CONSTRAINT fk_emp_dept1
    -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
    -> );
Query OK, 0 rows affected (0.37 sec)

mysql> DESC tb_emp6;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   | PRI | NULL    |       |
| name   | varchar(25) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  | MUL | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (1.33 sec)

以上語句執行成功之后,在表 tb_emp6 上添加了名稱為 fk_emp_dept1 的外鍵約束,外鍵名稱為 deptId,其依賴于表 tb_dept1 的主鍵 id。

注意:從表的外鍵關聯的必須是主表的主鍵,且主鍵和外鍵的數據類型必須一致。例如,兩者都是 INT 類型,或者都是 CHAR 類型。如果不滿足這樣的要求,在創建從表時,就會出現“ERROR 1005(HY000): Can't create table”錯誤。

在修改表時添加外鍵約束

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

在修改數據表時添加外鍵約束的語法格式如下:

ALTER TABLE 數據表名> ADD CONSTRAINT 外鍵名>
FOREIGN KEY(列名>) REFERENCES 主表名> (列名>);

例 2

修改數據表 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)

注意:在為已經創建好的數據表添加外鍵約束時,要確保添加外鍵約束的列的值全部來源于主鍵列,并且外鍵列不能為空。

刪除外鍵約束

當一個表中不需要外鍵約束時,就需要從表中將其刪除。外鍵一旦刪除,就會解除主表和從表間的關聯關系。

刪除外鍵約束的語法格式如下所示:

ALTER TABLE 表名> DROP FOREIGN KEY 外鍵約束名>;

例 3

刪除數據表 tb_emp2 中的外鍵約束 fk_tb_dept1,SQL 語句和運行結果如下所示。

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

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`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)

可以看到,tb_emp2 中已經不存在 FOREIGN KEY,原有的名稱為 fk_emp_dept 的外鍵約束刪除成功。

到此這篇關于MySQL外鍵約束(FOREIGN KEY)案例講解的文章就介紹到這了,更多相關MySQL外鍵約束(FOREIGN KEY)內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL非空約束(not null)案例講解
  • MySQL 外鍵約束和表關系相關總結
  • MySQL完整性約束的定義與實例教程
  • MySQL 8.0新特性 — 檢查性約束的使用簡介
  • MySQL中外鍵的創建、約束以及刪除
  • Mysql中索引和約束的示例語句
  • MySQL外鍵約束的實例講解
  • 詳解MySQL 外鍵約束
  • mysql完整性約束實例詳解
  • MySQL約束超詳解

標簽:無錫 阿里 溫州 山西 揚州 定西 福州 三明

巨人網絡通訊聲明:本文標題《MySQL外鍵約束(FOREIGN KEY)案例講解》,本文關鍵詞  MySQL,外鍵,約束,FOREIGN,KEY,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL外鍵約束(FOREIGN KEY)案例講解》相關的同類信息!
  • 本頁收集關于MySQL外鍵約束(FOREIGN KEY)案例講解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    在线播放国产精品二区一二区四区 | 日韩一级精品视频在线观看| 精品视频一区二区不卡| 亚洲精品视频一区二区| 国产欧美日韩三级| 免费美女久久99| 久久久www免费人成精品| 欧美日韩在线播放| 久久久高清一区二区三区| 久久成人免费网| 日韩精品一区二区三区中文不卡 | 91福利小视频| 亚洲成人手机在线| 69成人精品免费视频| 日本亚洲三级在线| 精品蜜桃在线看| 94色蜜桃网一区二区三区| 亚洲综合色噜噜狠狠| 欧美一级搡bbbb搡bbbb| 久久国产乱子精品免费女| 国产午夜久久久久| 色婷婷精品久久二区二区蜜臀av | 久久女同性恋中文字幕| 懂色一区二区三区免费观看| 亚洲婷婷在线视频| 欧美美女一区二区在线观看| 久草精品在线观看| 久久99精品国产.久久久久久| 国产亚洲精品资源在线26u| 精品日韩99亚洲| 粗大黑人巨茎大战欧美成人| 一区二区成人在线视频| 日韩视频在线你懂得| 成人美女视频在线看| 性久久久久久久久久久久| 国产欧美一区二区精品性色| 99视频超级精品| 久久se精品一区精品二区| 亚洲色图一区二区三区| 日韩欧美一区在线观看| 日本道在线观看一区二区| 国产精品一线二线三线精华| 一区二区三区91| 国产亚洲欧美日韩日本| 日韩一级免费观看| 欧美色网一区二区| 99国产精品久久久久| 加勒比av一区二区| 日韩高清电影一区| 亚洲影院久久精品| 亚洲精品综合在线| 中文字幕成人在线观看| 欧美大尺度电影在线| 91精品欧美一区二区三区综合在 | 成人欧美一区二区三区小说 | 午夜精品爽啪视频| 亚洲最快最全在线视频| 亚洲视频在线观看一区| 中文一区在线播放| 久久久久久久久99精品| 精品国产精品网麻豆系列| 日韩欧美国产一区二区三区 | 精品国产乱码久久| 日韩午夜三级在线| 4438x成人网最大色成网站| 91视频免费播放| 9i在线看片成人免费| 不卡av在线网| 成人av高清在线| 91丨九色丨尤物| 色久综合一二码| 色欧美乱欧美15图片| 欧美伊人久久久久久午夜久久久久| 91在线播放网址| 91年精品国产| 日本丶国产丶欧美色综合| 91久久香蕉国产日韩欧美9色| 色菇凉天天综合网| 欧美喷潮久久久xxxxx| 91麻豆精品91久久久久久清纯| 欧美日韩你懂的| 欧美一卡二卡在线观看| 精品国产髙清在线看国产毛片| 欧美mv日韩mv| 国产精品视频yy9299一区| 中文字幕亚洲区| 亚洲一区二区在线免费观看视频 | 国内不卡的二区三区中文字幕| 国产麻豆一精品一av一免费| 国产麻豆精品一区二区| 岛国精品在线观看| 欧美三级电影精品| 欧美精品一区二区在线播放| 久久精品一区二区三区不卡| 亚洲视频一区二区在线| 偷拍一区二区三区| 国产一区欧美日韩| 91色乱码一区二区三区| 欧美日韩国产bt| 亚洲国产高清aⅴ视频| 亚洲成人动漫精品| 国产成人精品aa毛片| 欧美少妇xxx| 久久久久99精品一区| 亚洲午夜在线观看视频在线| 久久91精品久久久久久秒播| 色综合天天天天做夜夜夜夜做| 日韩一区二区免费在线观看| 欧美国产视频在线| 蜜桃视频免费观看一区| 99久久精品一区二区| 日韩女优av电影| 亚洲成人在线免费| 不卡的av在线| www一区二区| 日韩在线一二三区| 一本色道久久综合亚洲精品按摩| 欧美v日韩v国产v| 天堂资源在线中文精品| 99久久99精品久久久久久| 日韩视频在线观看一区二区| 一区二区三区免费网站| 国产成人午夜精品影院观看视频| 69p69国产精品| 一区二区三区在线视频观看58| 丁香激情综合国产| 国产日韩欧美制服另类| 久久 天天综合| 日韩欧美一区在线观看| 日韩高清在线一区| 欧美日韩一区视频| 亚洲国产另类av| 欧美性色综合网| 亚洲福利视频三区| 久久免费看少妇高潮| 亚洲电影中文字幕在线观看| 99r国产精品| 欧美高清在线一区| 懂色一区二区三区免费观看| 国产人妖乱国产精品人妖| 国产精品一区不卡| 国产精品嫩草99a| 成人av综合在线| 日韩一区有码在线| 在线精品亚洲一区二区不卡| 一个色在线综合| 欧美精品在线一区二区三区| 日韩精品成人一区二区在线| 日韩欧美国产一区在线观看| 国产一区二区三区av电影| 国产亚洲欧美激情| 99国产欧美另类久久久精品| 国产精品国产三级国产a| 99r国产精品| 日一区二区三区| 欧美zozozo| 成人国产一区二区三区精品| 国产精品国产三级国产aⅴ入口 | 久久久午夜精品| 国产99精品国产| 夜夜爽夜夜爽精品视频| 欧美精品一二三四| 国产一区二区三区黄视频 | 欧美三级电影网| 日韩不卡一区二区| 久久这里都是精品| 色拍拍在线精品视频8848| 毛片av中文字幕一区二区| 久久先锋影音av鲁色资源网| 不卡免费追剧大全电视剧网站| 亚洲网友自拍偷拍| 欧美夫妻性生活| 久久91精品国产91久久小草| 亚洲国产激情av| 欧美日韩一区久久| 处破女av一区二区| 亚洲欧美一区二区三区久本道91 | 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国内国产精品久久| ㊣最新国产の精品bt伙计久久| 69成人精品免费视频| 丁香天五香天堂综合| 中文字幕日韩一区二区| 欧美日韩国产美| 国产·精品毛片| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美精品一区二区三| eeuss鲁一区二区三区| 裸体歌舞表演一区二区| 亚洲一区二区三区视频在线| 久久精品一区二区三区不卡牛牛 | 国产亚洲一区字幕| 欧美日韩国产大片| 91丨九色丨黑人外教| 美国欧美日韩国产在线播放| 亚洲成人午夜影院| 国产精品久久久久久久午夜片 | 亚洲人精品一区| 国产亚洲精品7777| 91精品免费在线观看|