SQL的約束 概述 概念:約束是作用於表中欄位上的規則,用於限制存儲表中的數據; 目的:保證資料庫中數據的正確性、有效性、完整性; 常見的約束分類: 約束 描述 關鍵字 非空約束 限制該欄位的數據不能為null not null 唯一約束 保證該欄位的所有數據都是唯一的、不重覆的 unique 主鍵 ...
SQL的約束
-
概述
-
概念:約束是作用於表中欄位上的規則,用於限制存儲表中的數據;
-
目的:保證資料庫中數據的正確性、有效性、完整性;
-
常見的約束分類:
約束 描述 關鍵字 非空約束 限制該欄位的數據不能為null not null 唯一約束 保證該欄位的所有數據都是唯一的、不重覆的 unique 主鍵約束 主鍵是一行數據的唯一標識,要求非空且唯一 primary key 預設約束 保存數據時,如果未指定該欄位的值,則採用預設值 default '預設值' 檢查約束 保證欄位滿足某一個條件 check (條件1 && 條件2) 外鍵約束 用來兩張表之間建立連接,保證數據的一致性、完整性 foreign key (PS:檢查約束僅在MySQL8.0.16版本之後;約束是作用於表中欄位上的,可以在創建表、修改表的時候添加;)
-
外鍵約束
-
外鍵約束 - 語法
-
添加外鍵:
create table 表名( 欄位名 數據類型, ... [constraint] [外鍵名稱] foreign key(外鍵欄位名) references 主表(主表列名) );
alter table 表名 add constraint 外鍵名稱_表名_欄位名 foreign key (需要的外鍵欄位名) references 主表(主表列名);
-
刪除外鍵:
alter table 表名 drop foreign key 外鍵名稱_表名_欄位名;
-
刪除、更新行為:
alter table 表名 add constraint 外鍵名稱_表名_欄位名 foreign key (外鍵欄位) references 主表名(主表欄位名) on update 更新時行為 on delete 刪除時行為;
-
-
外鍵約束 - 刪除、更新行為
行為 說明 no action 當在父表中刪除、更新對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則不允許刪除、更新。 restrict 當在父表中刪除、更新對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則不允許刪除、更新。 cascade 當在父表中刪除、更新對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則刪除、更新外鍵在子表中的記錄。 set null 當在父表中刪除對應記錄時,首先檢查該記錄是否有對應外鍵,如果有則設置子表中該外鍵值為null。 set default 父表有變更時,子表將外鍵列設置成一個預設的值 (PS:set null的要求取決於外鍵允許設置null;set default在MySQL中的lnnodb不支持;)