共計 2271 個字符,預計需要花費 6 分鐘才能閱讀完成。
本篇內容主要講解“mysql 外鍵怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“mysql 外鍵怎么使用”吧!
mysql 外鍵是一個非常好用的數據處理功能,可以快速地進行表之間的數據更新;簡單的來說就是可以將兩張表之間建立一個關聯,能做到操作一張表的時候,另外一個表的數據也會同步發生變化。
Mysql 外鍵的使用
外鍵是一個非常非常好用的一個東西,同時也是很多種關系數據庫都有的一種功能,簡單的來說就是可以將兩張表之間建立一個關聯,可以做到操作一張表的時候,另外一個表的數據也會同步發生變化。
例子:
一個學生表里面有學生的所有信息,其中有一個字段是班級 id,又有一個班級表,記錄著所有的班級信息,按照邏輯來說,如果我們刪除了班級
表里面的某個班級,學生表里面是這個班級 id 的信息就應該修改。
以上的例子我們如果是使用程序是可以正常的完成的,先刪除這個班級,再在學生表里將是這個班級的學生信息的班級 id 字段進行修改,分為這兩部。但是這個如果我們使用了外鍵,只需要一步就可以了呀,關聯了外鍵 只要一個有修改,另外一個會自動的更新過去,顯然這個是更加符合程序的。也更輕松
使用前的細節
數據庫在選用存儲引擎的時候要選擇適配外鍵的存儲引擎,如 mysql 的默認存儲引擎 innodb
相互關聯的外鍵字段的字段類型必須要保持一致,如學生表的 class_id 是 int 類型,那么班級表的 class_id 的類型最好也要使用 int 類型,這個十分的重要
在新表中創建外鍵約束
create table stu_study (
sid int primary key auto_increment,-- 定義 Sid
sname varchar(15) not null,
course_id int default null, -- 定義課程 id 課程 id 是外鍵所以要與關聯的主表的字段類型保持一致
constraint stu_study_class -- 一個表里可能有多個表之間關聯,所以外鍵需要起一個名字
foreign key (class_id) -- 關聯的外鍵名
references classes(id) -- 關聯的主表和主表的字段
on delete cascade -- 當刪除的時候觸發
)engine=InnoDB default charset utf8 -- 默認存儲引擎和編碼的字符串
在已有的表中進行外鍵的添加和刪除
刪除外鍵
···
– 刪除外鍵(外鍵約束)
alter table stu_study drop foreign key stu_study_classes;
···
刪除外鍵是通過在表格中根據外鍵名進行刪除,這個也是間接的讓我們知道了外鍵名是不能夠重復的。
添加外鍵
-- 添加外鍵
alter table stu_study add
constraint stu_study_classes -- 外鍵名 是一定不能夠重復的,通常會用關聯的兩個表名進行命名
foreign key(course_id)
references classes(id)
on delete cascade;
在已有的表中添加外鍵和創建表的時候添加外鍵是非常像的,有個細節就是他要使用 contraint 外鍵名 來設置外鍵的名稱
外鍵的增加修改我們會發現和表格字段的增加修改是很像的,使用的關鍵字都是 add drop 等等
關聯動作的操作
子表
主表
字表和子表我們可以簡單的理解成,設置了外鍵的那個表就是子表
關聯動作有很多種,如 cascade,set Null,no action 這三個都是在設置外鍵的時候設置關聯動作,如
表示的是在刪除時的執行的動作,主要區別如下:
cascade 刪除主表的某個字段的時候,子表含有這個字段的數據會被清空,這個還是屬于相對危險的一個操作的
+set null 刪除主表的某個字段的時候,子表含有這個字段的這個哪一行的這個字段會用 null 來顯示,但是有個細節就是設置外鍵的這個字段字段類型就不能設置為 not null 類型的,否則會報錯
no action 這個字段會比較有意思,也就是說當主表要刪除某個行的時候,如果外鍵關聯有含有這個主表的外鍵的字段數據的話,就不會刪除成功,系統會直接報錯
關聯更新操作
之前是主要講了關聯刪除,是因為外鍵在使用的時候關聯刪除操作是使用的比較頻繁的,關聯更新的頻率是相對來說低一點兒的
關聯更新的三個關聯操作和刪除時一樣的,分別是 cascade,set null,no action 意思是也是一樣的,主表某個字段更新了,子表也會更新那個字段!??!,主表更新的某條數據,子表的使用的那個數據會變成空,和子表在使用的情況下,主表就不能夠更新數據
alter table stu_study drop foreign key stu_study_classes; -- 刪除外鍵
-- 添加外鍵
alter table stu_study add
constraint stu_study_classes
foreign key (course_id)
references classes(id)
on delete set null -- 一次性設置外鍵的兩種動作
on update cascade
到此,相信大家對“mysql 外鍵怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
向 AI 問一下細節丸趣 TV 網 – 提供最優質的資源集合!