好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 詳解MySQL 外鍵約束

詳解MySQL 外鍵約束

熱門標簽:新鄉智能外呼系統好處 地圖標注客戶付款 咸陽防封電銷卡 申請400電話電話價格 石家莊400電話辦理公司 臨沂做地圖標注 許昌外呼增值業務線路 廣東400企業電話申請流程 宜賓全自動外呼系統廠家

官方文檔:
https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html

1.外鍵作用:

MySQL通過外鍵約束來保證表與表之間的數據的完整性和準確性。

2.外鍵的使用條件

  • 兩個表必須是InnoDB表,MyISAM表暫時不支持外鍵(據說以后的版本有可能支持,但至少目前不支持)
  • 外鍵列必須建立了索引,MySQL 4.1.2以后的版本在建立外鍵時會自動創建索引,但如果在較早的版本則需要顯示建立;
  • 外鍵關系的兩個表的列必須是數據類型相似,也就是可以相互轉換類型的列,比如int和tinyint可以,而int和char則不可以。

3.創建語法

[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

該語法可以在 CREATE TABLE 和 ALTER TABLE 時使用,如果不指定CONSTRAINT symbol,MYSQL會自動生成一個名字。
ON DELETE、ON UPDATE表示事件觸發限制,可設參數:
RESTRICT(限制外表中的外鍵改動)
CASCADE(跟隨外鍵改動)
SET NULL(設空值)
SET DEFAULT(設默認值)
NO ACTION(無動作,默認的)

CASCADE:表示父表在進行更新和刪除時,更新和刪除子表相對應的記錄
RESTRICT和NO ACTION:限制在子表有關聯記錄的情況下,父表不能單獨進行刪除和更新操作
SET NULL:表示父表進行更新和刪除的時候,子表的對應字段被設為NULL

4.案例演示

以CASCADE(級聯)約束方式

1. 創建勢力表(父表)country
create table country (
id int not null,
name varchar(30),
primary key(id)
);

2. 插入記錄
insert into country values(1,'西歐');
insert into country values(2,'瑪雅');
insert into country values(3,'西西里');

3. 創建兵種表(子表)并建立約束關系
create table solider(
id int not null,
name varchar(30),
country_id int,
primary key(id),
foreign key(country_id) references country(id) on delete cascade on update cascade,
);

4. 參照完整性測試
insert into solider values(1,'西歐見習步兵',1);
#插入成功
insert into solider values(2,'瑪雅短矛兵',2);
#插入成功
insert into solider values(3,'西西里諾曼騎士',3)
#插入成功
insert into solider values(4,'法蘭西劍士',4);
#插入失敗,因為country表中不存在id為4的勢力

5. 約束方式測試

insert into solider values(4,'瑪雅猛虎勇士',2);
#成功插入
delete from country where id=2;
#會導致solider表中id為2和4的記錄同時被刪除,因為父表中都不存在這個勢力了,那么相對應的兵種自然也就消失了
update country set id=8 where id=1;
#導致solider表中country_id為1的所有記錄同時也會被修改為8

以SET NULL約束方式

1. 創建兵種表(子表)并建立約束關系

drop table if exists solider;
create table solider(
id int not null,
name varchar(30),
country_id int,
primary key(id),
foreign key(country_id) references country(id) on delete set null on update set null,
);

2. 參照完整性測試

insert into solider values(1,'西歐見習步兵',1);
#插入成功
insert into solider values(2,'瑪雅短矛兵',2);
#插入成功
insert into solider values(3,'西西里諾曼騎士',3)
#插入成功
insert into solider values(4,'法蘭西劍士',4);
#插入失敗,因為country表中不存在id為4的勢力

3. 約束方式測試

insert into solider values(4,'西西里弓箭手',3);
#成功插入
delete from country where id=3;
#會導致solider表中id為3和4的記錄被設為NULL
update country set id=8 where id=1;
#導致solider表中country_id為1的所有記錄被設為NULL

以NO ACTION 或 RESTRICT方式 (默認)

1. 創建兵種表(子表)并建立約束關系

drop table if exists solider;
create table solider(
id int not null,
name varchar(30),
country_id int,
primary key(id),
foreign key(country_id) references country(id) on delete RESTRICT on update RESTRICT,
);

2. 參照完整性測試

insert into solider values(1,'西歐見習步兵',1);
#插入成功
insert into solider values(2,'瑪雅短矛兵',2);
#插入成功
insert into solider values(3,'西西里諾曼騎士',3)
#插入成功
insert into solider values(4,'法蘭西劍士',4);
#插入失敗,因為country表中不存在id為4的勢力

3. 約束方式測試

insert into solider values(4,'西歐騎士',1);
#成功插入
delete from country where id=1;
#發生錯誤,子表中有關聯記錄,因此父表中不可刪除相對應記錄,即兵種表還有屬于西歐的兵種,因此不可單獨刪除父表中的西歐勢力
update country set id=8 where id=1;
#錯誤,子表中有相關記錄,因此父表中無法修改

以上就是詳解MySQL 外鍵約束的詳細內容,更多關于MySQL 外鍵約束的資料請關注腳本之家其它相關文章!

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

標簽:北京 鷹潭 鎮江 貴州 臺灣 日照 合肥 阜新

巨人網絡通訊聲明:本文標題《詳解MySQL 外鍵約束》,本文關鍵詞  詳解,MySQL,外鍵,約束,詳解,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解MySQL 外鍵約束》相關的同類信息!
  • 本頁收集關于詳解MySQL 外鍵約束的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 亚洲码欧洲码一二三四五区别 | 欧美午夜精品免费视频APP| 男女啪啪抽搐一进一出第一次| 欧美色图偷窥自拍| 成人a在线观看| 美女隐私直播下载| 日本Av免费无码专区一区渡部 | 国产97在线视频| 久久人人爽人人爽人人片AV| 脱了她裙子摸进她的内裤亲吻??| 国产美女又黄又爽又色视频网站| 巨吊荒淫录| 国产精品?????| 中文字幕亚洲一区婷婷| 91福利网| 0855影视午夜福利在线观看| 金门县| 日本高清免费不卡在线| 欧美日韩一区在线观看| JAVA高潮喷吹.滙集视频| 苏玉被脔日常H苏玉NP| 日本不卡在线一区二区三区视频 | 国产熟妇人妻ⅩXXXX麻四虎| 韩国美女人妻人人妻人人妻| stockingsvideos教师| 91国内外精品自在线播放| 暗卫高H肉1V1| 色噜噜狠狠色综合日日| 一级毛片A穿牛仔裤| 女人XXOO高潮黄暴| 91精品丝袜国产高跟在线一区| 欧美一级二级三级情欲视频| 美女隐私视频的网站| 狗狗猛涨精肉狗大壮增肥增食欲| 爽死你个放荡小婬妇视频| 中文字幕一区二区三区红楼| www.污网站| 伦理片app| 厨房里挺进岳丰满大屁股| 老熟女浓毛BBwBBwBBw| 丝袜女仆被震蛋折磨调教视频|