日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:27日期:2023-10-15 15:16:36

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

本文內(nèi)容: 什么是外鍵 外鍵的增加 外鍵的修改和刪除 外鍵的約束模式

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

什么是外鍵: 外鍵就是表中存在一個字段指向另外一個表的主鍵,那么這個字段就可以稱為外鍵。 一張表可以有多個外鍵。 外鍵用于約束表與表之間的關(guān)系,可以說外鍵是表之間的映射關(guān)系,這個關(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)是不知道實際意義的,外鍵就是告訴系統(tǒng)應(yīng)該如何處理他們的關(guān)系。 所以,外鍵的核心是約束。外鍵的增加: 創(chuàng)建外鍵的前提是該字段首先是一個索引,如果不是的話,創(chuàng)建外鍵是會創(chuàng)建成一個普通索引【所以可以不在意】。 創(chuàng)建外鍵的另外一個前提是“指向表”已經(jīng)創(chuàng)建,對于一個不存在的表,將無法使用外鍵對應(yīng)上。 增加的方式: 1.在創(chuàng)建表的時候定義,在所有字段定義結(jié)束后使用foreign key(外鍵字段) references 指向表(主鍵)來 定義,比如mysql外鍵基本功能與用法詳解 2.也可以修改字段來增加: alter table 表名 add [constraint 外鍵名字] foreign key(外鍵字段) references 父表(主鍵字段); constraint 外鍵名字:可以幫助定義外鍵的名字,但不建議使用,因為要求外鍵名都唯一,而使用系統(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));補充: 在Mysql中,如果存儲引擎不是innodb,那么無法使外鍵的約束作用生效,即使是能成功增加外鍵。 外鍵名不能重復(fù),所以不建議使用constraint 外鍵名字外鍵的修改與刪除: 修改:不能修改外鍵信息,如外鍵指向之類的,只能先刪除再新增。 刪除語法:alter table 表名 drop foreign key 外鍵名; 這里的外鍵名不是外鍵字段,而是外鍵名。如果沒有使用constraint來定義,可以通過show create來查看表創(chuàng)建語句中系統(tǒng)定義的外鍵名。 mysql外鍵基本功能與用法詳解 補充: 刪除外鍵時,如果使用desc會看到表結(jié)構(gòu)還有MUL,那是一個索引。因為創(chuàng)建外鍵時,字段會被創(chuàng)建成一個索引。如果不想保留,可以使用drop index 字段名 on 表名.外鍵的約束模式: 外鍵是用來約束表之間的關(guān)系的。 (約定創(chuàng)建外鍵的表稱為子表,指向的表稱為父表) 針對子表:可以約束子表的插入和修改【這種約束是父表對子表的約束】 涉及到外鍵的插入和修改時,如果外鍵字段找不到對應(yīng)的匹配那么會插入修改失敗(像插入選課記錄不可能插入一門課程表中沒有的課程)。 比如:mysql外鍵基本功能與用法詳解 針對父表:可以約束父表的刪除和更新,通常有可以以下幾種約束模式?!具@種約束是子表對父表的約束】 模式: strict嚴(yán)格模式:涉及到外鍵的刪除和更新時,如果對應(yīng)記錄的主鍵數(shù)據(jù)已經(jīng)被子表使用時,那么無法刪除(像已經(jīng)有人入學(xué)了某個班級,學(xué)校不可能犯傻去把某個班級刪除,只能刪除那些沒人入學(xué)的班級。)cascade級聯(lián)模式:涉及到外鍵的刪除和更新時,如果字段已經(jīng)被子表使用,子表中的數(shù)據(jù)會對應(yīng)更新(像某個班改了班號,那么學(xué)生表中的班別都對應(yīng)更改;如果某個班被刪除,就刪除對應(yīng)班的所有學(xué)生)set null置空模式:涉及到外鍵的刪除和更新時,如果字段已經(jīng)被子表使用,那么子表中的外鍵數(shù)據(jù)會置空(像某個班被刪掉了,不應(yīng)該刪掉所有學(xué)生,而是應(yīng)該給他們先置空再重新分配班別)【子表允許置空的前提是該字段允許為空】 其實可以給不同操作指定不同模式 綜上所述(根據(jù)我的那些舉例),實際上,合適的舉措是刪除時置空(即使某個班太垃圾了,想刪除某個班,但也不應(yīng)該將所有學(xué)生退學(xué),而是將它們分到別的班),修改時級聯(lián)(允許更改班號,而且更改會更新到學(xué)生中) 不同操作設(shè)置不同模式的設(shè)置方法(在子表中操作):foreign key(外鍵字段) references 父表(主鍵) on 操作 模式

foreign key(外鍵字段) references 父表 (主鍵) on delete set null on update cascade;

-- 實驗表結(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ù)據(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 補充: 需要設(shè)置好約束模式,不要在多個子表中使用不同的約束模式,不然會沖突。

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

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

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩二区三区四区| 日韩高清二区| 久久国产乱子精品免费女| 男人的天堂亚洲一区| 久久精品国产大片免费观看| 国产va免费精品观看精品视频| 色一区二区三区| 国内一区二区三区| 精品国产一区二区三区性色av| 国产精品国产三级在线观看| 国产精品尤物| 日韩国产专区| 久久精品欧美一区| 国产在线欧美| 欧美精品自拍| 亚洲香蕉久久| 国产另类在线| 久久精品二区亚洲w码| 久久99青青| 国产不卡一区| 亚洲91视频| 国产婷婷精品| 日韩精品欧美大片| 麻豆精品新av中文字幕| 韩日一区二区| 亚洲一级高清| 男女男精品网站| 日韩av不卡一区二区| 国产精品免费大片| 超碰超碰人人人人精品| 好吊日精品视频| 日本亚洲欧美天堂免费| 欧美永久精品| 正在播放日韩精品| 欧美专区18| 国产精品一区二区精品视频观看 | 日韩精品国产精品| 国产精品分类| 亚洲www啪成人一区二区| 模特精品在线| 精品中文在线| 国产韩日影视精品| 亚洲欧美日本国产专区一区| 日韩和欧美一区二区| 精品国产一区二区三区av片| 午夜欧美在线| 国产精品亲子伦av一区二区三区 | 日韩精品中文字幕吗一区二区| 国产精品亚洲片在线播放| 久久电影tv| 国产精品88久久久久久| 日韩精品成人在线观看| 美腿丝袜亚洲一区| 久久国产小视频| 日韩av网站在线观看| 免费高潮视频95在线观看网站| 天堂va蜜桃一区二区三区| 国产精品男女| 亚洲一区二区三区四区五区午夜| 久久xxx视频| 亚洲一区日韩| 精品一级视频| 免费人成精品欧美精品| 国产aⅴ精品一区二区三区久久| 午夜精品网站| 精品精品久久| 欧美一区=区| 免费一级欧美在线观看视频| 婷婷激情图片久久| 国产精品黄网站| 免费国产自线拍一欧美视频| 精品国产a一区二区三区v免费| 在线精品一区| 群体交乱之放荡娇妻一区二区| 日本成人中文字幕| 亚洲午夜精品久久久久久app| 欧美国产先锋| 亚洲aa在线| 亚洲成人免费| 午夜久久中文| 久久精品国产999大香线蕉| 亚洲精品免费观看| 欧美精品日日操| 久久成人av| 亚洲精品在线二区| 91精品1区| se01亚洲视频 | 久久99蜜桃| 亚洲aa在线| 国产亚洲在线| 91精品综合| 成人午夜网址| 日本一区免费网站| 欧美日韩国产亚洲一区| 久久久久亚洲精品中文字幕| 亚洲制服欧美另类| 日韩视频二区| 欧美成人基地| 正在播放日韩精品| 精品亚洲二区| 久久av网址| 国产欧美一区| 自拍自偷一区二区三区| 精品一区在线| 久久免费国产| 国产精品原创| 久久精品国产福利| 麻豆精品久久久| 亚州av日韩av| 蜜桃久久久久久| 91久久亚洲| 黄色精品网站| 蜜臀91精品国产高清在线观看| 日韩在线精品| 中文字幕成在线观看| 国内不卡的一区二区三区中文字幕| 欧美在线看片| 青草国产精品久久久久久| 日本欧美在线看| 99亚洲视频| 在线亚洲观看| 亚洲专区欧美专区| 亚洲一区二区成人| 精品一区亚洲| 亚洲经典在线| 国产午夜精品一区二区三区欧美| 婷婷综合网站| 香蕉国产精品| 天堂va蜜桃一区二区三区| 首页国产欧美久久| 综合干狼人综合首页| 免播放器亚洲一区| 中文字幕中文字幕精品| 日韩不卡在线观看日韩不卡视频 | 欧美一区成人| 国产精品一级| 国产一区丝袜| 日韩久久精品网| 久久精品动漫| 中文在线不卡| 亚洲精一区二区三区| 亚洲精品无播放器在线播放| 久热精品在线| 国产一精品一av一免费爽爽| 国产激情精品一区二区三区| 97人人精品| 九九久久电影| 综合一区在线| 国产日韩中文在线中文字幕| 国产精品视频一区二区三区四蜜臂| 精品国产一区二区三区性色av| 日韩欧美另类一区二区| 亚洲天堂黄色| 亚洲精一区二区三区| 久久不见久久见免费视频7| 久久久久久网| 欧美大黑bbbbbbbbb在线| 中文字幕一区二区三区在线视频| 日韩高清一级| 国产色播av在线| 亚洲韩日在线| 蜜桃视频在线观看一区二区| 国产精品综合色区在线观看| 国产精品hd| 电影亚洲精品噜噜在线观看| 久久国产精品久久久久久电车| 日韩和欧美的一区| 成人污污视频| 亚洲午夜久久久久久尤物| 亚洲一二av| 激情综合五月| 日韩视频久久| 国产日产一区| 久久精品主播| 91免费精品国偷自产在线在线| 国产一区二区三区国产精品| 亚洲激情婷婷| 欧美aa在线视频| 亚洲一级高清| 欧美一区激情| 激情欧美日韩一区| 国产亚洲观看| 久久人人97超碰国产公开结果| 亚洲影院天堂中文av色| 国精品产品一区| 亚洲精品成人| 免费亚洲婷婷| 玖玖精品视频| 热三久草你在线| 日本欧美韩国一区三区| 久久天堂av| 国产日韩一区二区三区在线播放| 欧美中文字幕一区二区| 亚洲精品在线二区| 日韩激情一区| 欧美日韩一区二区三区在线电影| 久久一级电影| 国产精品久久久久久久久久齐齐| 亚洲大全视频| 精品三级久久久|