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

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

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

瀏覽:24日期: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));補(bǔ)充: 在Mysql中,如果存儲引擎不是innodb,那么無法使外鍵的約束作用生效,即使是能成功增加外鍵。 外鍵名不能重復(fù),所以不建議使用constraint 外鍵名字外鍵的修改與刪除: 修改:不能修改外鍵信息,如外鍵指向之類的,只能先刪除再新增。 刪除語法:alter table 表名 drop foreign key 外鍵名; 這里的外鍵名不是外鍵字段,而是外鍵名。如果沒有使用constraint來定義,可以通過show create來查看表創(chuàng)建語句中系統(tǒng)定義的外鍵名。 mysql外鍵基本功能與用法詳解 補(bǔ)充: 刪除外鍵時,如果使用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 補(bǔ)充: 需要設(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久久,三上悠亚国产精品一区二区三区
韩日一区二区三区| 国产在线成人| 欧美日韩国产一区精品一区| 久久精品日韩欧美| 日韩动漫一区| 欧美一区成人| 91成人在线精品视频| 日本aⅴ亚洲精品中文乱码| 视频一区视频二区中文| 欧美日韩国产探花| 亚洲欧美久久| 国产99久久久国产精品成人免费| 精品一区二区三区视频在线播放| 久久99青青| 久久91视频| 久久人人97超碰国产公开结果| 欧美久久天堂| 在线国产一区| 最新国产精品视频| 久久成人av| 国产乱码午夜在线视频| 人人草在线视频| 欧美高清一区| 日韩精品一区二区三区免费视频 | 樱桃视频成人在线观看| av高清不卡| 国产综合婷婷| 三级欧美韩日大片在线看| 亚洲精品黄色| 91欧美日韩| 久久最新视频| 国产伦精品一区二区三区在线播放| 精品无人区麻豆乱码久久久| 欧美肉体xxxx裸体137大胆| 亚洲色图国产| 欧美午夜精彩| 蜜桃视频在线观看一区二区| 国产欧美三级| 99xxxx成人网| 成人在线视频免费| 亚洲精品伊人| 婷婷成人综合| 国产网站在线| 久久久久97| 国产伦一区二区三区| 亚洲精品成人一区| 亚洲美洲欧洲综合国产一区 | 久久精品国产一区二区| 亚洲欧美在线专区| 91精品久久久久久久久久不卡| 日本视频在线一区| 六月丁香综合| 一区二区三区四区在线看| 久久精品国产久精国产| 亚洲精品福利| 久久福利毛片| 日韩激情一区| 加勒比视频一区| 久久99高清| 91嫩草精品| 免费成人av在线播放| 日韩欧美看国产| 欧美黄页在线免费观看| 日韩中文字幕视频网| 国产伦理一区| 日韩区欧美区| 91成人在线精品视频| 免费欧美在线视频| re久久精品视频| 国产超碰精品| 樱桃视频成人在线观看| 国产欧美一区| 国产毛片久久久| 久久国产婷婷国产香蕉| 免费视频最近日韩| 欧美.日韩.国产.一区.二区| 亚洲高清毛片| 国产精品毛片在线看| 欧美jjzz| 欧美成人精品| 婷婷综合亚洲| 国产99亚洲| 91久久亚洲| 国产亚洲精品自拍| 国产视频一区免费看| 久久都是精品| 爽好久久久欧美精品| 视频一区欧美精品| 欧美一区网站| 精品不卡一区| 精精国产xxxx视频在线野外| 日韩在线欧美| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲精品人人| 日韩av电影一区| 欧美1区2区3| 国产一区二区三区天码| 欧美sm一区| 国产一区二区高清| 91欧美极品| 中文字幕一区久| 国产精品日韩欧美一区| 亚洲综合色婷婷在线观看| 久久97久久97精品免视看秋霞| 亚洲成人不卡| 婷婷成人av| 日韩在线欧美| 日本伊人午夜精品| 国产高潮在线| 欧美日韩国产在线观看网站| 日韩专区欧美专区| 国产一区二区三区四区| 午夜在线一区| 久久精品资源| 国产乱人伦精品一区| 999精品在线| 国产精品毛片aⅴ一区二区三区| 欧美男人天堂| 欧美伊人久久| 99pao成人国产永久免费视频| 亚洲三区欧美一区国产二区| 免费观看亚洲天堂| 国产午夜精品一区在线观看| 亚洲午夜电影| 欧美日韩一区二区国产| 欧美日韩高清| 日韩在线高清| 精品久久久网| 国产欧美日韩综合一区在线播放| 中文字幕日韩亚洲| 好吊日精品视频| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 日韩在线a电影| 久久精品国产成人一区二区三区| 国产精品色网| 欧美一区二区性| 国产91精品对白在线播放| 久久99影视| 国产精品99久久免费观看| 午夜视频一区二区在线观看| 激情婷婷欧美| 尤物tv在线精品| 亚洲二区视频| 亚洲a在线视频| 日韩国产成人精品| 国产日韩亚洲| 国产精品视频一区二区三区| 日韩午夜视频在线| 日韩一区欧美二区| 亚洲欧美日韩国产一区二区| 欧美影院三区| 五月天久久777| 蜜桃免费网站一区二区三区| 国产日韩高清一区二区三区在线 | 丝袜美腿一区二区三区| 中日韩男男gay无套| 精品中文一区| 日韩专区欧美专区| 亚洲精品网址| 中文日韩在线| 亚洲欧美网站在线观看| 日韩精品导航| 中文在线资源| 蜜桃视频欧美| 日韩精品一区第一页| 日本国产亚洲| 欧美aaaaaa午夜精品| 日韩欧美午夜| 伊人久久亚洲| 亚洲成人不卡| 国产精品美女| 奇米777国产一区国产二区| 免费日韩一区二区三区| 激情国产在线| 亚洲一区欧美激情| 日韩有码av| 国产 日韩 欧美 综合 一区| 欧美日韩在线观看视频小说| 香蕉久久夜色精品国产| 国产日韩欧美三区| 欧美亚洲国产一区| 国产精品一区二区99| 国产一区观看| 日本午夜免费一区二区| 欧美国产美女| 日本麻豆一区二区三区视频| av资源亚洲| 亚久久调教视频| 999久久久精品国产| 欧美专区一区| 久久国产高清| 一区二区三区四区在线看| 日本不卡一区二区三区| 最近国产精品视频| 亚洲第一精品影视| 国产一区不卡| 国产女人18毛片水真多18精品| 午夜欧美精品| 中文字幕系列一区| 成人片免费看|