定義:
MySQL檢查約束(CHECK)可以通過 CREATE TABLE 或 ALTER TABLE 語句實現,根據用戶實際的完整性要求來定義。它可以分別對列或表實施 CHECK 約束。
檢查約束使用 CHECK 關鍵字,具體的語法格式如下:
CHECK <表達式> //表達式即為SQL 表達式,用於指定需要檢查的限定條件。
在更新表數據的時候,系統會檢查更新后的數據行是否滿足 CHECK 約束中的限定條件。MySQL 可以使用簡單的表達式來實現 CHECK 約束,也允許使用復雜的表達式作為限定條件,例如在限定條件中加入子查詢。
• 若將 CHECK 約束子句置於表中某個列的定義之后,則這種約束也稱為基於列的 CHECK 約束。
• 若將 CHECK 約束子句置於所有列的定義以及主鍵約束和外鍵定義之后,則這種約束也稱為基於表的 CHECK 約束。該約束可以同時對表中多個列設置限定條件。
設置檢查約束
1、在創建表時設置檢查約束
語法規則如下:
CHECK(<檢查約束>)
【實例 1】在 test_db 數據庫中創建 tb_emp7 數據表,要求 salary 字段值大於 0 且小於 10000


上圖中tb_emp7_ibfk_1是系統自動生成的外鍵約束名;
2、修改表時添加檢查約束
語法規則如下:
ALTER TABLE <數據表名> ADD CONSTRAINT <檢查約束名> CHECK(<檢查約束>)
【實例 2】修改 tb_dept 數據表,要求 id 字段值大於 0

刪除檢查約束(待補充完善)
ALTER TABLE <數據表名> DROP CONSTRAINT <檢查約束名>;
在通過show create table <數據表名>查看 的時候發現並無創建的check約束名,刪除的時候也報錯,所以不知道是不是check不生效導致的;在查詢資料的時候發現說MySQL中check約束並不生效;
https://blog.csdn.net/ldx19980108/article/details/79921853 //MySQL check不生效文檔查詢參考;

