最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql增加外鍵約束具體方法

 更新時間:2021年12月28日 08:26:44   作者:青燈夜游  
在本篇文章里小編給大家整理的是一篇關于mysql增加外鍵約束具體方法及相關實例內容,有興趣的朋友們可以跟著學習下。

本教程操作環(huán)境:windows7系統、mysql8版本、Dell G3電腦。

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

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

定義外鍵時,需要遵守下列規(guī)則:

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

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)

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

內容擴展:

使用外鍵約束的時機

老實說,在MySQL中使用InnoDB表的時候,不一定非用外鍵約束不可,然而,為了外鍵約束在某些情況下的功用,我們將通過前面提到的例子的代碼進行具體說明。它包括兩個MyISAM表,分別用于存放博客文章和評論。

定義數據庫模式時,我們要在這兩個表之間建立起一對多的關系,方法是在存放評論的表中創(chuàng)建一個外鍵,以將其中的數據行(即評論)對應到特定的博客文章。下面是創(chuàng)建示例MyISAM表的基本SQL代碼:

DROP TABLE IF EXISTS `test`.`blogs`;

CREATE TABLE `test`.`blogs` (

`id` INT(10) UNSIGNED AUTO_INCREMENT,

`title` TEXT,

`content` TEXT,

`author` VARCHAR(45) DEFAULT NULL,

PRIROSE KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `test`.`comments`;

CREATE TABLE `test`.`comments` (

`id` INT(10) UNSIGNED AUTO_INCREMENT,

`blog_id` INT(10) UNSIGNED DEFAULT NULL,

`comment` TEXT,

`author` VARCHAR(45) DEFAULT NULL,

PRIROSE KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

到此這篇關于mysql增加外鍵約束具體方法的文章就介紹到這了,更多相關mysql怎么增加外鍵約束內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL主鍵生成的四種方式及對比詳解

    MySQL主鍵生成的四種方式及對比詳解

    在數據庫設計中,主鍵(Primary Key)的選擇至關重要,它不僅是數據行的唯一標識,還直接影響查詢效率、數據存儲甚至系統架構的擴展性,本文給大家分析了常見四種主鍵ID生成的方式,需要的朋友可以參考下
    2025-03-03
  • MySQL清空數據表的方法實例與分析

    MySQL清空數據表的方法實例與分析

    這篇文章給大家詳細介紹了MySQL清空數據表的方法,文中給出了實例代碼,對大家學習使用MySQL具有一定的參考借鑒價值,有需要的可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • MySQL時間盲注的五種延時方法實現

    MySQL時間盲注的五種延時方法實現

    MySQL時間盲注主要有五種,sleep(),benchmark(t,exp),笛卡爾積,GET_LOCK() RLIKE正則,本文就主要介紹了這五種方法,感興趣的可以了解一下
    2021-05-05
  • mysql如何定時自動新增分區(qū)

    mysql如何定時自動新增分區(qū)

    這篇文章主要介紹了mysql如何定時自動新增分區(qū)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • mysql實現將字符串轉化成int類型

    mysql實現將字符串轉化成int類型

    這篇文章主要介紹了mysql實現將字符串轉化成int類型方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • SQL實現LeetCode(183.從未下單訂購的顧客)

    SQL實現LeetCode(183.從未下單訂購的顧客)

    這篇文章主要介紹了SQL實現LeetCode(182.從未下單訂購的顧客),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • 選擇MySQL數據庫的命令以及PHP腳本下的操作方法

    選擇MySQL數據庫的命令以及PHP腳本下的操作方法

    這篇文章主要介紹了選擇MySQL數據庫的命令以及PHP腳本下的操作方法,此外文中還對MySQL的基本數據類型作了介紹,需要的朋友可以參考下
    2015-11-11
  • Java的Struts框架中append標簽與generator標簽的使用

    Java的Struts框架中append標簽與generator標簽的使用

    這篇文章主要介紹了Java的Struts框架中append標簽與generator標簽的使用方法,Struts是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • MySQL時間戳與日期格式的相互轉換

    MySQL時間戳與日期格式的相互轉換

    在MySQL數據庫中,時間戳和日期格式是常用的數據類型,在MySQL中,我們可以使用函數還相互轉換時間戳和日期格式,下面我將詳細的給大家介紹如何進行轉換,并提供相應的代碼示例,感興趣的小伙伴跟著小編一起來看看吧
    2024-01-01
  • MySQL表添加某一列和刪除某一列的方法

    MySQL表添加某一列和刪除某一列的方法

    MySQL是一種廣泛使用的關系型數據庫管理系統,它是一種開源的軟件,由瑞典的MySQL?AB公司開發(fā)的,這篇文章主要介紹了關于MySQL表添加某一列和刪除某一列的sql語句,需要的朋友可以參考下
    2023-06-06

最新評論

朝阳市| 资源县| 元谋县| 汝州市| 龙山县| 宜川县| 榆中县| 宣汉县| 海南省| 绥德县| 桂东县| 潜山县| 江源县| 宣汉县| 舞钢市| 宁波市| 昌吉市| 互助| 舟曲县| 察哈| 塔河县| 莎车县| 阳朔县| 高唐县| 施甸县| 上杭县| 邯郸县| 岑巩县| 昭苏县| 江山市| 隆昌县| 贡觉县| 磴口县| 射洪县| 天峻县| 乌兰察布市| 会理县| 延边| 长治县| 桐庐县| 自贡市|