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

外鍵約束RESTRICT和NO ACTION有何不同?MySQL外鍵詳解

 更新時(shí)間:2026年07月25日 10:43:17   作者:遇星  
還在為MySQL外鍵約束的創(chuàng)建和規(guī)則頭疼嗎?本文手把手教你建立外鍵約束的語法,詳解CASCADE、SET NULL、RESTRICT等刪除更新規(guī)則,并總結(jié)外鍵約束的常見注意事項(xiàng),助你避免數(shù)據(jù)不一致的坑,輕松管理數(shù)據(jù)庫關(guān)系

一、建立外鍵約束

語法如下:

[CONSTRAINT [symbol]] FOREIGN KEY
 [index_name] (col_name, ...)
 REFERENCES tbl_name (col_name,...)
 [ON DELETE reference_option]
 [ON UPDATE reference_option]
reference_option:
 RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

1. CONSTRAINT [symbol]]指定約束名字,不寫則系統(tǒng)自動(dòng)生成外鍵約束名;

2. MySQL強(qiáng)制外鍵約束的列上必須要有索引, [index_name]指定索引名,不寫則系統(tǒng)自動(dòng)生成索引名,如果已經(jīng)存在可以用于支持外鍵約束的索引,那么指定的索引名則無效,采用已有的索引;

3. [ON DELETE reference_option][ON UPDATE reference_option]指定主表update和delete操作時(shí),子表對應(yīng)的數(shù)據(jù)怎么響應(yīng);

建立外鍵約束例子如:

create table tab1 (id int primary key);
create table tab2 (
id int primary key,
col1 int,
foreign key (col1)
references tab1(id)
);

下面看一下[ON DELETE reference_option][ON UPDATE reference_option]reference_option都有哪些參數(shù):

1.CASCADE,級聯(lián)刪除/級聯(lián)更新,即主表delete或update了被其他表引用的數(shù)據(jù),對應(yīng)子表的數(shù)據(jù)也被delte或update;

2.SET NULL,當(dāng)主表delete或update了被其他表引用的數(shù)據(jù),對應(yīng)子表的數(shù)據(jù)被設(shè)為null,注意子表的外鍵不能設(shè)為not null;

3.RESTRICT,主表不允許delete或update被其他表引用的數(shù)據(jù);當(dāng)沒有指定任何[ON DELETE reference_option][ON UPDATE reference_option],默認(rèn)是采用RESTRICT;

4.NO ACTION,在MySQL中,等效于RESTRICT;

5.SET DEFAULT,InnoDB和NDB中無法使用該參數(shù)。

二、添加外鍵約束

語法如下:

ALTER TABLE tbl_name
 ADD [CONSTRAINT [symbol]] FOREIGN KEY
 [index_name] (col_name, ...)
 REFERENCES tbl_name (col_name,...)
 [ON DELETE reference_option]
 [ON UPDATE reference_option]

基本的語法參數(shù)在上文已經(jīng)解釋了。

三、刪除外鍵約束

語法如下:

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol;

fk_symbol即外鍵約束名,如果不知道具體是什么,可以使用show create table tab_name\G來查看。

四、外鍵約束注意事項(xiàng)

1.外鍵上無法插入主表沒有的數(shù)據(jù),也無法更新為主表沒有的數(shù)據(jù);

2.外鍵上必須要有索引,主表上對應(yīng)的列最好也創(chuàng)建索引,因?yàn)楫?dāng)子表外鍵插入數(shù)據(jù)時(shí),也是需要到主表對應(yīng)的列上去檢查數(shù)據(jù)是否存在,有索引可以提高效率;

3.如果一個(gè)表被其他表的外鍵引用,則這個(gè)表無法被刪除;如果通過set foreign_key_checks=0強(qiáng)制刪除主表,則子表無法插入任何數(shù)據(jù);

4.外鍵的字段類型,字符集必須要跟引用的字段一致,unsigned屬性也要一致,否則無法創(chuàng)建外鍵約束;

5.被引用的列上必須要有索引,否則無法創(chuàng)建外鍵約束。

五、總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL常用表級操作總結(jié)

    MySQL常用表級操作總結(jié)

    這篇文章主要為大家詳細(xì)介紹了MySQL中常用的表級操作,文中的示例代碼簡潔易懂,對我們學(xué)習(xí)MySQL有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-08-08
  • Mysql中常用的幾種join連接方式總結(jié)

    Mysql中常用的幾種join連接方式總結(jié)

    join語句是面試中經(jīng)常會讓你現(xiàn)場寫出來的語句,下面這篇文章主要給大家介紹了關(guān)于Mysql中常用的幾種join連接方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • MySQL中DISTINCT語句去重優(yōu)化機(jī)制詳解

    MySQL中DISTINCT語句去重優(yōu)化機(jī)制詳解

    本文深入解析了SQL中DISTINCT的優(yōu)化機(jī)制,介紹了內(nèi)SQL內(nèi)內(nèi)核如何自動(dòng)將DISTINCT改寫為GROUPBY或LIMIT以提高查詢效率,通過具體案例展示了優(yōu)化器如何通過語義推理確定目標(biāo)列是否被常量固定,從而實(shí)現(xiàn)高效去重
    2026-06-06
  • Mysql 5.5.56版本(二進(jìn)制包安裝)自定義安裝路徑步驟記錄

    Mysql 5.5.56版本(二進(jìn)制包安裝)自定義安裝路徑步驟記錄

    這篇文章主要介紹了Mysql 5.5.56版本(二進(jìn)制包安裝)自定義安裝路徑步驟記錄,需要的朋友可以參考下
    2017-07-07
  • MySQL實(shí)現(xiàn)批量插入測試數(shù)據(jù)的方式小結(jié)

    MySQL實(shí)現(xiàn)批量插入測試數(shù)據(jù)的方式小結(jié)

    在開發(fā)過程中我們不管是用來測試性能還是在生產(chǎn)環(huán)境中頁面展示好看一點(diǎn),?經(jīng)常需要一些測試數(shù)據(jù),?本文主要介紹了兩種常用的MySQL測試數(shù)據(jù)批量生成方式,希望對大家有所幫助
    2023-11-11
  • MYSQL 性能分析器 EXPLAIN 用法實(shí)例分析

    MYSQL 性能分析器 EXPLAIN 用法實(shí)例分析

    這篇文章主要介紹了MYSQL 性能分析器 EXPLAIN 用法,結(jié)合實(shí)例形式分析了MYSQL 性能分析器 EXPLAIN 基本功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • MySQL定期分析檢查與優(yōu)化表的方法小結(jié)

    MySQL定期分析檢查與優(yōu)化表的方法小結(jié)

    聽DBA的人說,相比oracle,MySQL就是一個(gè)玩具級別的數(shù)據(jù)庫,在網(wǎng)易門戶中,DBA基本很少去管理到MySQL的東西,所以我們產(chǎn)品使用到的MySQL的一些配置和優(yōu)化還是需要我們開發(fā)人員自己動(dòng)手,下面就簡單介紹一下實(shí)用的定期優(yōu)化方法
    2014-06-06
  • mysql中redo log和 binlog的區(qū)別

    mysql中redo log和 binlog的區(qū)別

    本文主要介紹了mysql中redo log和 binlog的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • MySQL5.7 JSON類型使用詳解

    MySQL5.7 JSON類型使用詳解

    MySQL5.7發(fā)布后,專門設(shè)計(jì)了JSON數(shù)據(jù)類型以及關(guān)于這種類型的檢索以及其他函數(shù)解析。 我們先看看MySQL老版本的JSON存取方式,具體內(nèi)容詳情大家參考下本文吧
    2017-10-10
  • mysql滑動(dòng)訂單問題原理與解決方法實(shí)例分析

    mysql滑動(dòng)訂單問題原理與解決方法實(shí)例分析

    這篇文章主要介紹了mysql滑動(dòng)訂單問題原理與解決方法,結(jié)合實(shí)例形式分析了mysql滑動(dòng)訂單的問題的基本原理、解決方法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-12-12

最新評論

丰城市| 台山市| 内乡县| 南宁市| 龙泉市| 新郑市| 霞浦县| 繁峙县| 湄潭县| 林州市| 太仓市| 肇源县| 习水县| 师宗县| 绥滨县| 平江县| 大丰市| 宜丰县| 秦皇岛市| 平邑县| 安庆市| 富蕴县| 涟源市| 竹溪县| 故城县| 青龙| 长乐市| 宜昌市| 诸城市| 玉树县| 巴马| 方正县| 连云港市| 崇阳县| 镇宁| 崇礼县| 高陵县| 永昌县| 平和县| 澜沧| 义乌市|