亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > mysql外鍵基本功能與用法詳解

mysql外鍵基本功能與用法詳解

熱門標(biāo)簽:400電話到哪辦理優(yōu)惠 機(jī)器人打電銷電話 南寧外呼系統(tǒng)招商 鄭州網(wǎng)絡(luò)外呼系統(tǒng)價(jià)錢 博樂電銷機(jī)器人 上海市三維地圖標(biāo)注 云南大數(shù)據(jù)外呼系統(tǒng) 怎么更改高德地圖標(biāo)注 電話機(jī)器人是電腦呼號嗎

本文實(shí)例講述了mysql外鍵基本功能與用法。分享給大家供大家參考,具體如下:

本文內(nèi)容:

  • 什么是外鍵
  • 外鍵的增加
  • 外鍵的修改和刪除
  • 外鍵的約束模式

首發(fā)日期:2018-04-12


什么是外鍵:

  • 外鍵就是表中存在一個(gè)字段指向另外一個(gè)表的主鍵,那么這個(gè)字段就可以稱為外鍵。
  • 一張表可以有多個(gè)外鍵。
  • 外鍵用于約束表與表之間的關(guān)系,可以說外鍵是表之間的映射關(guān)系,這個(gè)關(guān)系可以幫助我們處理表之間關(guān)系的緊密性和存在性(比如學(xué)生表的cid班級號與班級表的id建立關(guān)聯(lián),cid應(yīng)該不能為不存在的,如果不增加外鍵cid,沒有建立上關(guān)系,我們就不知道班級號不存在。)。
  • 或者說,外鍵是告訴數(shù)據(jù)庫系統(tǒng),我們所認(rèn)為的關(guān)系,單純的數(shù)據(jù),系統(tǒng)是不知道實(shí)際意義的,外鍵就是告訴系統(tǒng)應(yīng)該如何處理他們的關(guān)系。
  • 所以,外鍵的核心是約束。

外鍵的增加:

  • 創(chuàng)建外鍵的前提是該字段首先是一個(gè)索引,如果不是的話,創(chuàng)建外鍵是會創(chuàng)建成一個(gè)普通索引【所以可以不在意】。
  • 創(chuàng)建外鍵的另外一個(gè)前提是“指向表”已經(jīng)創(chuàng)建,對于一個(gè)不存在的表,將無法使用外鍵對應(yīng)上。
  • 增加的方式:
    • 1.在創(chuàng)建表的時(shí)候定義,在所有字段定義結(jié)束后使用foreign key(外鍵字段) references 指向表(主鍵)來 定義,比如
    • 2.也可以修改字段來增加: alter table 表名 add [constraint 外鍵名字] foreign key(外鍵字段) references 父表(主鍵字段);
      • constraint 外鍵名字:可以幫助定義外鍵的名字,但不建議使用,因?yàn)橐笸怄I名都唯一,而使用系統(tǒng)自定義的絕對不會重復(fù),
create table student(
id int primary key auto_increment,
name varchar(15) not null,
gender varchar(10) not null,
cid int,
foreign key(cid) references class(id)
);
create table class(
id int primary key auto_increment,
cname varchar(15)
);

補(bǔ)充:

  • 在Mysql中,如果存儲引擎不是innodb,那么無法使外鍵的約束作用生效,即使是能成功增加外鍵。
  • 外鍵名不能重復(fù),所以不建議使用constraint 外鍵名字

外鍵的修改與刪除:

  • 修改:不能修改外鍵信息,如外鍵指向之類的,只能先刪除再新增。
  • 刪除語法:alter table 表名 drop foreign key 外鍵名;
    • 這里的外鍵名不是外鍵字段,而是外鍵名。如果沒有使用constraint來定義,可以通過show create來查看表創(chuàng)建語句中系統(tǒng)定義的外鍵名。

補(bǔ)充:

  • 刪除外鍵時(shí),如果使用desc會看到表結(jié)構(gòu)還有MUL,那是一個(gè)索引。因?yàn)閯?chuàng)建外鍵時(shí),字段會被創(chuàng)建成一個(gè)索引。如果不想保留,可以使用drop index 字段名 on 表名.

外鍵的約束模式:

  • 外鍵是用來約束表之間的關(guān)系的。
  • (約定創(chuàng)建外鍵的表稱為子表,指向的表稱為父表)
    • 針對子表:可以約束子表的插入和修改【這種約束是父表對子表的約束】
      • 涉及到外鍵的插入和修改時(shí),如果外鍵字段找不到對應(yīng)的匹配那么會插入\修改失敗(像插入選課記錄不可能插入一門課程表中沒有的課程)。
      • 比如:
    • 針對父表:可以約束父表的刪除和更新,通常有可以以下幾種約束模式。【這種約束是子表對父表的約束】
      • 模式:
        • strict嚴(yán)格模式:涉及到外鍵的刪除和更新時(shí),如果對應(yīng)記錄的主鍵數(shù)據(jù)已經(jīng)被子表使用時(shí),那么無法刪除(像已經(jīng)有人入學(xué)了某個(gè)班級,學(xué)校不可能犯傻去把某個(gè)班級刪除,只能刪除那些沒人入學(xué)的班級。)
        • cascade級聯(lián)模式:涉及到外鍵的刪除和更新時(shí),如果字段已經(jīng)被子表使用,子表中的數(shù)據(jù)會對應(yīng)更新(像某個(gè)班改了班號,那么學(xué)生表中的班別都對應(yīng)更改;如果某個(gè)班被刪除,就刪除對應(yīng)班的所有學(xué)生)
        • set null置空模式:涉及到外鍵的刪除和更新時(shí),如果字段已經(jīng)被子表使用,那么子表中的外鍵數(shù)據(jù)會置空(像某個(gè)班被刪掉了,不應(yīng)該刪掉所有學(xué)生,而是應(yīng)該給他們先置空再重新分配班別)【子表允許置空的前提是該字段允許為空】
      • 其實(shí)可以給不同操作指定不同模式
      • 綜上所述(根據(jù)我的那些舉例),實(shí)際上,合適的舉措是刪除時(shí)置空(即使某個(gè)班太垃圾了,想刪除某個(gè)班,但也不應(yīng)該將所有學(xué)生退學(xué),而是將它們分到別的班),修改時(shí)級聯(lián)(允許更改班號,而且更改會更新到學(xué)生中)
      • 不同操作設(shè)置不同模式的設(shè)置方法(在子表中操作):foreign key(外鍵字段) references 父表(主鍵) on 操作 模式
        foreign key(外鍵字段) references 父表 (主鍵) on delete set null on update cascade;
-- 實(shí)驗(yàn)表結(jié)構(gòu)
create table class(
id int primary key auto_increment,
cname varchar(15)
);
create table student2(
id int primary key auto_increment,
name varchar(15) not null,
gender varchar(10) not null,
cid int,
foreign key(cid) references class(id) on delete set null on update cascade
);
-- 實(shí)驗(yàn)表數(shù)據(jù):
insert into class(cname) values("python"),("linux"),("java"),("html5");

insert into student2(name,gender,cid) values("Alice","female",1);
insert into student2(name,gender,cid) values("John","female",2);
insert into student2(name,gender,cid) values("Jack","female",3);
insert into student2(name,gender,cid) values("Amy","female",4);

select * from student2;
select * from class;
-- 嘗試更新級聯(lián)
update class set id = 6 where cname="python";
select * from student2; -- 結(jié)果原來的python的cid=6
-- 嘗試刪除置空
delete from class where cname="java";
select * from student2; -- 結(jié)果原來的java的cid=null

補(bǔ)充:

  • 需要設(shè)置好約束模式,不要在多個(gè)子表中使用不同的約束模式,不然會沖突。

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》

希望本文所述對大家MySQL數(shù)據(jù)庫計(jì)有所幫助。

您可能感興趣的文章:
  • mysql外鍵的三種關(guān)系實(shí)例詳解
  • Mysql數(shù)據(jù)庫中數(shù)據(jù)表的優(yōu)化、外鍵與三范式用法實(shí)例分析
  • MySQL創(chuàng)建數(shù)據(jù)表并建立主外鍵關(guān)系詳解
  • MySQL外鍵約束常見操作方法示例【查看、添加、修改、刪除】
  • MySQL無法創(chuàng)建外鍵的原因及解決方法
  • MySQL刪除有外鍵約束的表數(shù)據(jù)方法介紹
  • MySQL刪除表的時(shí)候忽略外鍵約束的簡單實(shí)現(xiàn)
  • MySQL添加外鍵時(shí)報(bào)錯(cuò):1215 Cannot add the foreign key constraint的解決方法
  • MySQL使用外鍵實(shí)現(xiàn)級聯(lián)刪除與更新的方法
  • Mysql表創(chuàng)建外鍵報(bào)錯(cuò)解決方案

標(biāo)簽:寧夏 恩施 澳門 杭州 益陽 秦皇島 白銀 定西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mysql外鍵基本功能與用法詳解》,本文關(guān)鍵詞  mysql,外鍵,基本,功能,與,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mysql外鍵基本功能與用法詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于mysql外鍵基本功能與用法詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日本特黄一级| 久久成人综合网| 久久成人综合网| 久久久成人影院| 久久久久久久免费视频| 99热精品一区| 国产网站麻豆精品视频| 国产网站麻豆精品视频| 成人高清护士在线播放| 日韩中文字幕一区| 毛片电影网| 国产一区二区精品| 99久久精品国产片| 国产麻豆精品免费密入口| 国产91精品露脸国语对白| 精品视频在线观看一区二区 | 亚欧成人毛片一区二区三区四区| 成人影视在线观看| 999久久狠狠免费精品| 国产一区二区精品久| 亚欧视频在线| 精品久久久久久中文字幕一区| 99色精品| 国产一区国产二区国产三区| 久草免费资源| 黄视频网站在线免费观看| 日韩一级黄色| 久草免费资源| 国产综合成人观看在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 成人免费一级毛片在线播放视频| 毛片电影网| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 91麻豆高清国产在线播放| 一级毛片看真人在线视频| 欧美爱色| 精品视频免费看| 欧美爱色| 成人免费一级毛片在线播放视频| 欧美激情一区二区三区视频| 国产亚洲精品aaa大片| 国产美女在线观看| 日韩一级黄色| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 美女免费精品视频在线观看| 久久久成人影院| 国产成人精品影视| 欧美日本韩国| 亚洲第一页乱| 国产网站在线| 99色精品| 99久久精品国产片| 国产麻豆精品免费密入口| 免费一级片在线观看| 国产视频一区在线| 久久久成人影院| 精品国产亚洲人成在线| 一级毛片视频播放| 国产一区二区精品| 日韩在线观看视频免费| 日韩avdvd| 国产成人啪精品| 日韩欧美一二三区| 高清一级毛片一本到免费观看| 国产一区二区精品久| 国产激情一区二区三区| 国产不卡福利| 久久福利影视| 九九热国产视频| 国产麻豆精品免费视频| 国产一区二区精品久| 国产美女在线一区二区三区| 四虎影视久久久免费| 成人影院久久久久久影院| 国产一区二区精品久| 亚洲天堂免费| 国产国语对白一级毛片| 九九干| 亚洲精品中文字幕久久久久久| 国产亚洲免费观看| 四虎影视久久久免费| 精品在线观看国产| 免费毛片基地| 久久99青青久久99久久| 九九干| 精品国产一区二区三区久久久蜜臀 | 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 99久久精品国产高清一区二区| 黄视频网站免费看| 精品久久久久久影院免费| 色综合久久天天综合观看| 亚洲精品中文字幕久久久久久| 久久99中文字幕久久| 韩国三级一区| a级黄色毛片免费播放视频| 99热精品在线| 国产一区二区精品| 精品在线观看国产| 久久精品店| 久久福利影视| 亚洲精品中文字幕久久久久久| 国产视频网站在线观看| 国产网站在线| 精品在线观看国产| 欧美国产日韩一区二区三区| 黄视频网站免费看| 精品国产一区二区三区国产馆| 黄视频网站免费看| 国产成人精品影视| 国产视频网站在线观看| 精品久久久久久综合网| 欧美日本免费| 麻豆污视频| 国产网站在线| 精品毛片视频| 精品视频在线观看一区二区| 999久久狠狠免费精品| 免费国产在线视频| 亚洲天堂免费| 国产视频一区在线| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 一级片免费在线观看视频| 国产伦久视频免费观看 视频| 亚洲 激情| 日本伦理片网站| 999精品视频在线| 久久久久久久男人的天堂| 亚欧视频在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 亚洲天堂免费| 欧美大片aaaa一级毛片| 高清一级毛片一本到免费观看| 欧美激情一区二区三区在线播放 | 99色视频| 99久久精品国产片| a级黄色毛片免费播放视频| 欧美a级成人淫片免费看| 亚洲天堂免费| 精品视频一区二区三区免费| 精品视频免费看| 久久国产精品自线拍免费| 韩国毛片| 天天做人人爱夜夜爽2020| 99久久精品国产片| 亚飞与亚基在线观看| 亚洲精品影院久久久久久| 欧美激情一区二区三区视频高清 | 国产伦久视频免费观看 视频| 欧美电影免费| a级黄色毛片免费播放视频| 久久国产一久久高清| 99久久精品国产片| 成人免费观看男女羞羞视频| 天天做人人爱夜夜爽2020| 久久福利影视| 999久久狠狠免费精品| 精品国产香蕉伊思人在线又爽又黄| 韩国毛片| 国产一区二区精品久| 沈樵在线观看福利| 日韩欧美一二三区| 日韩在线观看视频免费| 成人免费观看男女羞羞视频| 国产麻豆精品免费视频| 国产视频一区在线| 精品视频免费看| 91麻豆精品国产自产在线| 成人免费一级纶理片| 99色视频| 精品视频在线观看一区二区| 久久精品欧美一区二区| 日韩在线观看视频免费| 久久国产精品自线拍免费| 成人高清免费| 麻豆污视频| 亚洲爆爽| 久久久成人网| 精品视频在线观看一区二区| 久久久成人网| 成人免费观看男女羞羞视频| 青草国产在线观看| 韩国三级一区| 欧美激情在线精品video| 成人免费观看男女羞羞视频| 一级毛片视频播放| 九九干| 欧美另类videosbestsex久久 | 亚欧视频在线| 99久久精品国产片| 久久久成人网| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 高清一级毛片一本到免费观看| 精品国产一区二区三区国产馆| 午夜在线影院| 国产成人啪精品| 久久国产一久久高清| 韩国三级一区| 久久国产一久久高清| 国产麻豆精品| 高清一级毛片一本到免费观看|