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

MySQL  外鍵(foreign key)約束的作用和使用

 更新時(shí)間:2023年09月26日 10:00:11   作者:永遠(yuǎn)是少年啊  
外鍵約束是用于建立兩個(gè)表之間關(guān)系的一種約束,本文主要介紹了MySQL外鍵約束詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

什么是外鍵約束?

外鍵:用來讓兩張表的數(shù)據(jù)之間建立連接,從而保證數(shù)據(jù)的一致性和完整性。

外鍵約束是用于建立兩個(gè)表之間關(guān)系的一種約束,它定義了一個(gè)表中的列與另一個(gè)表中的列之間的關(guān)系。外鍵約束可以保證數(shù)據(jù)的完整性和一致性,確保表與表之間的關(guān)系得到正確維護(hù)

外鍵約束的使用方法

基本語法:

-- 創(chuàng)建表時(shí)添加外鍵
create table 表名(
字段名 數(shù)據(jù)類型,
...
[constraint] [外鍵名稱] foreign key (外鍵字段名) references 主表 (主表列名)
);
-- 單獨(dú)添加外鍵
alter table 表名 add constraint 外鍵名稱 foreign key (外鍵字段名)
references 主表 (主表列名) ;
-- 刪除外鍵
alter table 表名 drop foreign key 外鍵名稱;

外鍵產(chǎn)生的行為(刪除/更新行為)

添加了外鍵之后,再刪除父表數(shù)據(jù)時(shí)產(chǎn)生的約束行為,我們就稱為刪除/更新行為。具體的刪除/更新行為有以下幾種:

行為說明
no action當(dāng)在父表(主表)中刪除/更新對(duì)應(yīng)記錄時(shí),首先檢查該記錄是否有對(duì)應(yīng)外鍵,如果有則不允許刪除/更新。 (與 RESTRICT 一致) 默認(rèn)行為
restrict當(dāng)在父表中刪除/更新對(duì)應(yīng)記錄時(shí),首先檢查該記錄是否有對(duì)應(yīng)外鍵,如果有則不
允許刪除/更新。 (與 NO ACTION 一致) 默認(rèn)行為
cascade當(dāng)在父表中刪除/更新對(duì)應(yīng)記錄時(shí),首先檢查該記錄是否有對(duì)應(yīng)外鍵,如果有,則
也刪除/更新外鍵在子表中的記錄。
set null當(dāng)在父表中刪除對(duì)應(yīng)記錄時(shí),首先檢查該記錄是否有對(duì)應(yīng)外鍵,如果有則設(shè)置子表
中該外鍵值為null(這就要求該外鍵允許取null)。
set default父表有變更時(shí),子表將外鍵列設(shè)置成一個(gè)默認(rèn)的值 (Innodb不支持)

可以添加行為:

-- 設(shè)置update和delete為cascade行為
alter table 表名 add constraint 外鍵名稱 foreign key (外鍵字段) references 
主表名 (主表字段名) on update cascade on delete cascade;

實(shí)例介紹

假設(shè)有兩個(gè)表: students (學(xué)生表)和 courses (課程表)。每個(gè)學(xué)生可以選擇多門課程,因此我們希望通過外鍵約束來確保學(xué)生表中的 course_id 列與課程表中的 course_id 列保持一致。

1. 數(shù)據(jù)完整性:通過外鍵約束,我們可以確保學(xué)生表中的 course_id 列只引用了課程表中存在的有效 course_id 值。這樣可以防止無效的或不存在的課程ID被插入到學(xué)生表中,保證數(shù)據(jù)的完整性。

2. 數(shù)據(jù)一致性:外鍵約束可以確保學(xué)生表中的 course_id 列與課程表中的 course_id 列保持一致。如果在課程表中更新或刪除了某門課程的記錄,外鍵約束會(huì)自動(dòng)處理相關(guān)的學(xué)生表中的數(shù)據(jù),以保持?jǐn)?shù)據(jù)的一致性。

3. 數(shù)據(jù)查詢和關(guān)聯(lián):使用外鍵約束可以簡(jiǎn)化數(shù)據(jù)查詢和關(guān)聯(lián)操作。通過外鍵關(guān)聯(lián),我們可以輕松地從學(xué)生表中獲取與特定課程相關(guān)的學(xué)生信息,或者從課程表中獲取與特定學(xué)生相關(guān)的課程信息。

注意事項(xiàng)

1. 外鍵約束只能在InnoDB存儲(chǔ)引擎下使用,因此需要確保表使用的是InnoDB引擎。

2. 外鍵列和主鍵列的數(shù)據(jù)類型和長度必須相同,否則無法建立外鍵約束。

3. 當(dāng)刪除或更新主表中的數(shù)據(jù)時(shí),需要謹(jǐn)慎選擇ON DELETE和ON UPDATE子句,以確保從表中的數(shù)據(jù)處理方式符合業(yè)務(wù)需求。

4. 外鍵約束可能會(huì)影響數(shù)據(jù)庫的性能,特別是在大量數(shù)據(jù)插入或更新時(shí)。因此,在設(shè)計(jì)數(shù)據(jù)庫時(shí),需要權(quán)衡使用外鍵約束的必要性和性能影響。

到此這篇關(guān)于MySQL  外鍵(foreign key)約束的作用和使用的文章就介紹到這了,更多相關(guān)Mysql外鍵約束內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql中循環(huán)截取用戶信息并插入到目標(biāo)表對(duì)應(yīng)的字段中

    mysql中循環(huán)截取用戶信息并插入到目標(biāo)表對(duì)應(yīng)的字段中

    將各個(gè)用戶對(duì)應(yīng)的屬性插入到目標(biāo)表對(duì)應(yīng)的字段中,last_update為數(shù)據(jù)更新日期
    2014-08-08
  • mysql中insert ignore、insert和replace的區(qū)別及說明

    mysql中insert ignore、insert和replace的區(qū)別及說明

    這篇文章主要介紹了mysql中insert ignore、insert和replace的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • mysql大批量插入數(shù)據(jù)的4種方法示例

    mysql大批量插入數(shù)據(jù)的4種方法示例

    這篇文章主要給大家介紹了關(guān)于mysql大批量插入數(shù)據(jù)的4種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • CentOS 6.5下yum安裝 MySQL-5.5全過程圖文教程

    CentOS 6.5下yum安裝 MySQL-5.5全過程圖文教程

    在linux安裝mysql是一個(gè)困難的事情,yum安裝一般是安裝的mysql5.1,現(xiàn)在經(jīng)過自己不懈努力終于能用yum安裝mysql5.5了。下面通過兩種方法給大家介紹CentOS 6.5下yum安裝 MySQL-5.5全過程,一起學(xué)習(xí)吧
    2016-05-05
  • MySQL中的運(yùn)算符使用實(shí)例展示

    MySQL中的運(yùn)算符使用實(shí)例展示

    請(qǐng)問,什么是最好的參考文檔,我的答案是:真實(shí)可行的樣例語句。
    2010-12-12
  • MySQL主鍵批量修改的坑與解決方案

    MySQL主鍵批量修改的坑與解決方案

    在日常開發(fā)中,我們可能會(huì)遇到需要批量修改 MySQL 數(shù)據(jù)表主鍵的情況,乍一看,修改主鍵 ID 似乎是一個(gè)簡(jiǎn)單的操作,但如果處理不當(dāng),會(huì)導(dǎo)致操作失敗甚至數(shù)據(jù)丟失,本文將詳細(xì)剖析問題成因,并總結(jié)多種安全高效的解決方案,需要的朋友可以參考下
    2024-12-12
  • SQL觸發(fā)器定義與使用

    SQL觸發(fā)器定義與使用

    SQL的觸發(fā)器和存儲(chǔ)過程一樣,都是嵌入到SQL中的一段程序,是SQL中管理數(shù)據(jù)的有力工具,本文給大家詳細(xì)介紹SQL觸發(fā)器的定義語法知識(shí),感興趣的朋友一起看看吧
    2023-01-01
  • Centos 6.4源碼安裝mysql-5.6.28.tar.gz教程

    Centos 6.4源碼安裝mysql-5.6.28.tar.gz教程

    這篇文章主要為大家詳細(xì)介紹了Centos 6.4源碼安裝mysql-5.6.28.tar.gz教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • MySql中表單輸入數(shù)據(jù)出現(xiàn)中文亂碼的解決方法

    MySql中表單輸入數(shù)據(jù)出現(xiàn)中文亂碼的解決方法

    這篇文章主要介紹了MySql中表單輸入數(shù)據(jù)出現(xiàn)中文亂碼的解決方法的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • mysql alter table修改表命令整理

    mysql alter table修改表命令整理

    這篇文章主要介紹了mysql alter table修改表命令整理的相關(guān)資料,需要的朋友可以參考下
    2016-10-10

最新評(píng)論

沙湾县| 龙川县| 贵溪市| 驻马店市| 漠河县| 望谟县| 郸城县| 垫江县| 泰州市| 合水县| 晴隆县| 南和县| 凤台县| 武山县| 东平县| 淄博市| 安西县| 佳木斯市| 永仁县| 章丘市| 台北市| 治县。| 大荔县| 南丰县| 塔城市| 台东市| 化隆| 延川县| 紫云| 花莲市| 陵水| 孝昌县| 墨竹工卡县| 苗栗县| 聂拉木县| 镇沅| 格尔木市| 临猗县| 吴堡县| 龙岩市| 吴忠市|