<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
今天繼續給大家介紹MySQL相關知識,本文主要內容是MySQL外來鍵約束詳解。
外來鍵約束(Foreign Key)即資料庫中兩個資料表之間的某個列建立的一種聯絡。這種聯絡通常是以實際場景中含義完全相同的欄位所造成的。MySQL通過外來鍵約束的引入,可以使得資料表中的資料完整性更強,也更符合顯示情況。下面,我舉一個例子來說明MySQL外來鍵約束的作用。
假如我們對大學學生成績管理系統建立資料庫,有兩張表,一張表是學生表,儲存了學生的學號、姓名、性別、院系等資訊,還有一張表是成績表,儲存了學生學號、課程編號、考試成績等資訊。這樣,這兩張表之間就會通過學生學號建立外來鍵約束。很自然的我們想到,成績表的學生學號依賴於學生表的學生學號存在,如果一個學生畢業、或者退學,從學生表中刪除時,那麼他的相關成績也就沒有必要在成績表中存在了。在沒有建立外來鍵關係之前,這兩張表完全是獨立存在的,我們可以強行在成績表中插入一個不存在學生的相關成績,也可以強行刪除學生表中的一個學生,並且不管其成績資訊是否在成績表中存在。但是,在建立外來鍵關係後,MySQL資料庫會約束上述兩種行為,每次對資料進行插入或者刪除時,都會檢查資料完整性,使得我們的操作必須符合實際情況。
MySQL資料庫外來鍵的建立,需要滿足以下四個條件,否則會被MySQL資料庫拒絕:
1、建立外來鍵的表和列存在
2、組成外來鍵的列存在索引
3、必須指定資料表的引擎為InnoDB
4、外來鍵欄位和關聯欄位,資料型別必須一致
在建立資料表時建立外來鍵約束,只需要在建立資料表的create語句後面,使用foreign key關鍵字指定本表的外來鍵欄位,使用reference關鍵字指定關聯表的關聯欄位,並且明確約束行為即可。
建立外來鍵約束的SQL語句範例如下:
create table student (id int(8),name varchar(20),department varchar(20) ,index (id))ENGINE=InnoDB; create table grade (Sid int(8),Cid int(10),score int,index(Sid),foreign key (Sid) references student(id) on delete restrict on update cascade)ENGINE=InnoDB;
在上述SQL語句中,on delete restrict 是指明在刪除時外來鍵會對該刪除操作進行限制,而on update cascade是指名在更新時會對該更新操作進行同步。
同樣的,MySQL也支援在建立資料表後再新增外來鍵約束。在上例中,我們先刪除grade表,然後再建立grade表,現不建立外來鍵,嘗試在建立grade表後新增外來鍵,相關SQL命令如下:
drop table grade; create table grade(Sid int(8),Cid int(10),score int); alter table grade add index(Sid); alter table grade add foreign key (Sid) references student(id) on delete restrict on update cascade;
執行結果如下:
下面,我們就來測試一下外來鍵約束的功能,首先,嘗試向grade表插入一個不存在學生的成績,發現被拒絕:
之後,嘗試刪除student表中存在成績的學生,發現被拒絕:
緊接著,我們測試一下MySQL外來鍵約束級聯更新功能,發現,如果更改了student表中的資料,grade表也會跟著變動,如下所示:
到此這篇關於MySQL外來鍵約束詳解的文章就介紹到這了,更多相關Mysql外來鍵約束 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45