mysql外鍵是什麼
mysql外鍵是一個非常好用的資料處理功能,可以快速地進行表格之間的資料更新;簡單的來說就是可以將兩張表之間建立一個關聯,能做到操作一張表的時候,另外一個表的資料也會同步改變。
本教學操作環境:Windows10系統、mysql8版、Dell G3電腦。
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视频教程》
以上是mysql外鍵是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

可以通過以下步驟打開 phpMyAdmin:1. 登錄網站控制面板;2. 找到並點擊 phpMyAdmin 圖標;3. 輸入 MySQL 憑據;4. 點擊 "登錄"。

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

Redis 使用單線程架構,以提供高性能、簡單性和一致性。它利用 I/O 多路復用、事件循環、非阻塞 I/O 和共享內存來提高並發性,但同時存在並發性受限、單點故障和不適合寫密集型工作負載的局限性。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

構建 SQL 數據庫涉及 10 個步驟:選擇 DBMS;安裝 DBMS;創建數據庫;創建表;插入數據;檢索數據;更新數據;刪除數據;管理用戶;備份數據庫。
