中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL外鍵約束怎么創建

發布時間:2022-07-29 11:32:57 來源:億速云 閱讀:238 作者:iii 欄目:開發技術

這篇文章主要介紹“MySQL外鍵約束怎么創建”,在日常操作中,相信很多人在MySQL外鍵約束怎么創建問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”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;

執行結果如下:

MySQL外鍵約束怎么創建

三、外鍵約束功能演示

下面,我們就來測試一下外鍵約束的功能,首先,嘗試向grade表插入一個不存在學生的成績,發現被拒絕:

MySQL外鍵約束怎么創建

之后,嘗試刪除student表中存在成績的學生,發現被拒絕:

MySQL外鍵約束怎么創建

緊接著,我們測試一下MySQL外鍵約束級聯更新功能,發現,如果更改了student表中的數據,grade表也會跟著變動,如下所示:

MySQL外鍵約束怎么創建

到此,關于“MySQL外鍵約束怎么創建”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平湖市| 贵定县| 丹寨县| 岱山县| 双牌县| 罗定市| 汉寿县| 肇州县| 高州市| 循化| 高雄市| 象州县| 铁岭市| 衡山县| 乌海市| 临湘市| 麻城市| 沙坪坝区| 共和县| 津南区| 深泽县| 盖州市| 交城县| 阿荣旗| 玉田县| 黄大仙区| 汽车| 临猗县| 昌都县| 韶山市| 东港市| 那曲县| 莆田市| 南京市| 广灵县| 营山县| 土默特右旗| 定兴县| 汉川市| 游戏| 孙吴县|