MySQL基礎:約束
概述
- 概念:約束是作用于表中欄位上的規則,用于限制存盤在表中的資料,
- 目的:保證資料庫中的資料的正確、有效和完整性,
- 分類:
| 約束 | 描述 | 關鍵字 |
|---|---|---|
| 非空約束 | 限制該欄位的資料不能為null | NOT NULL |
| 唯一約束 | 保證該欄位的所有資料都是唯一、不重復的 | UNIQUE |
| 主鍵約束 | 主鍵是一行資料的唯一標識,要求非空且唯一 | PRIMARY KEY |
| 默認約束 | 保存資料時,如果未指定該欄位的值,則采用默認值 | DEFAULT |
| 檢查約束(8.0.16版本之后) | 保證欄位值滿足某一個條件 | CHECK |
| 外鍵約束 | 用來讓兩張表之間建立連接,保證資料的一致性和完整性 | FOREIGN KEY |
- 注意:約束是作用于表中欄位上的,可以在創建表/修改表的時候添加約束,
外鍵約束
子表(從表)是具有外鍵的表,父表(主表)是外鍵所關聯的表,
- 語法
- 添加外鍵
-- 創建表時添加外鍵
CREATE TABLE 表名(
欄位名 資料型別,
...
[CONSTRAINT] [外鍵名稱] FOREIGN KEY (外鍵欄位名) REFERENCES 主表(主表列名)
);
-- 額外添加外鍵 ADD CONSTRAINT表示添加一個約束 REFERENCES表示關聯的主表
ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY (外鍵欄位名) REFERENCES 主表(主表列名);
- 洗掉外鍵
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱;
- 洗掉/更新行為
| 行為 | 說明 |
|---|---|
| NO ACTION | 當在父表中洗掉/更新對應記錄時,首先應該檢查記錄是否有對應外鍵,如果有則不允許洗掉/更新,(與RESTRICT一致) |
| RESTRICT | 當在父表中洗掉/更新對應記錄時,首先應該檢查記錄是否有對應外鍵,如果有則不允許洗掉/更新,(與NO ACTION一致) |
| CASCADE | 當在父表中洗掉/更新對應記錄時,首先應該檢查記錄是否有對應外鍵,如果有,則也洗掉/更新外鍵在子表中的記錄, |
| SET NULL | 當在父表中洗掉/更新對應記錄時,首先應該檢查記錄是否有對應外鍵,如果有則設定子表中該外鍵值為null(這就要求外鍵允許取null), |
| SET DELETE | 父表有變更時,子表將外鍵列設定成一個默認的值(Innodb不支持) |
語法:
ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY (外鍵欄位名) REFERENCES 主表(主表列名) ON UPDATE CASCADE ON DELETE CASCADE;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/547712.html
標籤:MySQL
上一篇:虹科分享|虹科Redis企業版資料庫帶你跑贏MySQL數字時代!
下一篇:SQL之連表查詢
