如何在SQL表中的性別進行check約束的方法。
如下參考:
1.現在打開SQLSERVER查看要操作的表的數據結構。
2.接下來,將檢查約束添加到表中,約束將檢測Country字段的已知值,如下圖所示。
3.接下來,通過insert語句向表中添加一行數據。請注意,Country字段被分配給一個隨機值,如下圖所示。
4.檢查數據表跟蹤中是否反插入了數據,您將看到不應該插入數據。
5.將國家更改為Check允許的值,然后插入。
6.如果再次執行select語句,您將看到該語句已經插入到表中。
1、下面打開SQL SERVER查看一下要操作的表的數據結構。
2、接下來給這個表添加一個Check約束,約束將會對Country字段的值進行檢測,如下圖所示。
3、接下來通過insert語句向表中添加一行數據,注意Country字段先隨便賦一個值,如下圖所示,會看到語句執行報錯了
4、查一下數據表中是否已經插入了數據,會看到數據并未被插入。
5、將Country改成Check允許的值,然后在進行插入操作。
6、再執行select語句,會看到這條語句已經插入進數據表中了。
1、下面打開SQL SERVER查看一下要操作的表的數據結構。
2、接下來給這個表添加一個Check約束,約束將會對Country字段的值進行檢測,如下圖所示。
3、接下來通過insert語句向表中添加一行數據,注意Country字段先隨便賦一個值,如下圖所示,會看到語句執行報錯了。
4、查一下數據表中是否已經插入了數據,你會看到數據并未被插入。
5、如果將Country改成Check允許的值,然后在進行插入操作。
6、這個時候在執行select語句,會看到這條語句已經插入進數據表中了,如下圖所示。
在SQL表中的性別進行check約束步驟如下:
1、下面我們打開SQL SERVER查看一下要操作的表的數據結構。
2、接下來我們給這個表添加一個Check約束,約束將會對Country字段的值進行檢測。
3、接下來我們通過insert語句向表中添加一行數據,注意Country字段先隨便賦一個值,如下圖所示,你會看到語句執行報錯了。
4、我們查一下數據表中是否已經插入了數據,你會看到數據并未被插入。
5、如果我們將Country改成Check允許的值,然后在進行插入操作。
6、這個時候我們在執行select語句,你會看到這條語句已經插入進數據表中了。
當表已被創建時,如需在 “P_Id” 列創建 CHECK 約束,請使用下面的 SQL:
MySQL / SQL Server / Oracle / MS Access:
如需命名 CHECK 約束,并定義多個列的 CHECK 約束,請使用下面的 SQL 語法:
MySQL / SQL Server / Oracle / MS Access:
按題主的要求,定義了多個CHECK,所以應該用 ALTER TABLE <table_name> ADD CONSTRAINT <chk_name> CHECK (<colunm_name>='男' OR <colunm_name>='女');或者直接用一個語句合并,將CHECK后面括號里的判斷語句直接換成(<列名> IN ('男','女'))即可。
希望對樓主有所幫助~
用sql命令語句寫CHECK約束的格式為CHECK (約束條件)。
如:
CREATE TABLE 成績信息(
成績編號 int NOT NULL PRIMARY KEY,
學生編號 nchar(50) NOT NULL,
考試編號 nchar(10) NOT NULL,
課程編號nchar(10) NOT NULL,
分數 nchar(10) NOT NULL CHECK (分數in(between '0' and '100'))
在數據庫中,CHECK 約束是指約束表中某一個或者某些列中可接受的數據值或者數據格式。CHECK約束可以應用于一個或者多個列,也可以將多個CHECK 約束應用于一個列。當除去某個表時,對這個表的CHECK 約束也將同時被去除。
擴展資料:
CHECK 約束不接受計算結果為 FALSE 的值。因為空值的計算結果為 UNKNOWN,所以如果賦值表達式中存在這些值,則約束可能會被覆蓋而不起作用。如果 CHECK 約束檢查的條件對于表中的任何行都不是 FALSE,它將返回 TRUE。
如果剛創建的表沒有任何行,則此表的任何 CHECK 約束都視為有效。執行 DELETE 語句時不驗證 CHECK 約束。因此,使用特定類型的 CHECK 約束對表執行 DELETE 語句時可能會產生意外結果。
現在要說的是在列這一層次過濾的基于表定義之前就規范好的 CHECK 約束。(MySQL 版本 >= 8.0.16)
mysql> create table f1 (r1 int constraint tb_f1_r1_chk1 check (mod(r1,3)=0));
Query OK, 0 rows affected (0.03 sec)
mysql> create table f2 (r1 int constraint tb_f2_r1_chk1 check (mod(r1,3)=0) not enforced);
Query OK, 0 rows affected (0.02 sec)
這里 CHECK 約束的相關限制如下:
1. constraint 名字在每個數據庫中唯一。
也就是說單個數據庫里不存在相同的兩個 constraint,如果不定義,系統自動生成一個唯一的約束名字。
2. check 約束針對語句 insert/update/replace/load data/load xml 生效;針對對應的 ignore 語句失效。
3. 并非每個函數都可以使用,比如函數結果不確定的:NOW(),CONNECTION_ID(),CURRENT_USER()。
4. 不適用于存儲過程和存儲函數。
5. 系統變量不適用。
6. 子查詢不適用。
7. 外鍵動作(比如 ON UPDATE, ON DELETE) 不適用。
8. enforced 默認啟用,如果單獨加上 not enforced ,check 約束失效。
相關推薦: