如何在SQL表中的性別進(jìn)行check約束的方法。
如下參考:
1.現(xiàn)在打開(kāi)SQLSERVER查看要操作的表的數(shù)據(jù)結(jié)構(gòu)。
2.接下來(lái),將檢查約束添加到表中,約束將檢測(cè)Country字段的已知值,如下圖所示。
3.接下來(lái),通過(guò)insert語(yǔ)句向表中添加一行數(shù)據(jù)。請(qǐng)注意,Country字段被分配給一個(gè)隨機(jī)值,如下圖所示。
4.檢查數(shù)據(jù)表跟蹤中是否反插入了數(shù)據(jù),您將看到不應(yīng)該插入數(shù)據(jù)。
5.將國(guó)家更改為Check允許的值,然后插入。
6.如果再次執(zhí)行select語(yǔ)句,您將看到該語(yǔ)句已經(jīng)插入到表中。
1、下面打開(kāi)SQL SERVER查看一下要操作的表的數(shù)據(jù)結(jié)構(gòu)。
2、接下來(lái)給這個(gè)表添加一個(gè)Check約束,約束將會(huì)對(duì)Country字段的值進(jìn)行檢測(cè),如下圖所示。
3、接下來(lái)通過(guò)insert語(yǔ)句向表中添加一行數(shù)據(jù),注意Country字段先隨便賦一個(gè)值,如下圖所示,會(huì)看到語(yǔ)句執(zhí)行報(bào)錯(cuò)了
4、查一下數(shù)據(jù)表中是否已經(jīng)插入了數(shù)據(jù),會(huì)看到數(shù)據(jù)并未被插入。
5、將Country改成Check允許的值,然后在進(jìn)行插入操作。
6、再執(zhí)行select語(yǔ)句,會(huì)看到這條語(yǔ)句已經(jīng)插入進(jìn)數(shù)據(jù)表中了。
1、下面打開(kāi)SQL SERVER查看一下要操作的表的數(shù)據(jù)結(jié)構(gòu)。
2、接下來(lái)給這個(gè)表添加一個(gè)Check約束,約束將會(huì)對(duì)Country字段的值進(jìn)行檢測(cè),如下圖所示。
3、接下來(lái)通過(guò)insert語(yǔ)句向表中添加一行數(shù)據(jù),注意Country字段先隨便賦一個(gè)值,如下圖所示,會(huì)看到語(yǔ)句執(zhí)行報(bào)錯(cuò)了。
4、查一下數(shù)據(jù)表中是否已經(jīng)插入了數(shù)據(jù),你會(huì)看到數(shù)據(jù)并未被插入。
5、如果將Country改成Check允許的值,然后在進(jìn)行插入操作。
6、這個(gè)時(shí)候在執(zhí)行select語(yǔ)句,會(huì)看到這條語(yǔ)句已經(jīng)插入進(jìn)數(shù)據(jù)表中了,如下圖所示。
在SQL表中的性別進(jìn)行check約束步驟如下:
1、下面我們打開(kāi)SQL SERVER查看一下要操作的表的數(shù)據(jù)結(jié)構(gòu)。
2、接下來(lái)我們給這個(gè)表添加一個(gè)Check約束,約束將會(huì)對(duì)Country字段的值進(jìn)行檢測(cè)。
3、接下來(lái)我們通過(guò)insert語(yǔ)句向表中添加一行數(shù)據(jù),注意Country字段先隨便賦一個(gè)值,如下圖所示,你會(huì)看到語(yǔ)句執(zhí)行報(bào)錯(cuò)了。
4、我們查一下數(shù)據(jù)表中是否已經(jīng)插入了數(shù)據(jù),你會(huì)看到數(shù)據(jù)并未被插入。
5、如果我們將Country改成Check允許的值,然后在進(jìn)行插入操作。
6、這個(gè)時(shí)候我們?cè)趫?zhí)行select語(yǔ)句,你會(huì)看到這條語(yǔ)句已經(jīng)插入進(jìn)數(shù)據(jù)表中了。
當(dāng)表已被創(chuàng)建時(shí),如需在 “P_Id” 列創(chuàng)建 CHECK 約束,請(qǐng)使用下面的 SQL:
MySQL / SQL Server / Oracle / MS Access:
-from shulanxt
如需命名 CHECK 約束,并定義多個(gè)列的 CHECK 約束,請(qǐng)使用下面的 SQL 語(yǔ)法:
MySQL / SQL Server / Oracle / MS Access:
-from shulanxt
按題主的要求,定義了多個(gè)CHECK,所以應(yīng)該用 ALTER TABLE <table_name> ADD CONSTRAINT <chk_name> CHECK (<colunm_name>='男' OR <colunm_name>='女');或者直接用一個(gè)語(yǔ)句合并,將CHECK后面括號(hào)里的判斷語(yǔ)句直接換成(<列名> IN ('男','女'))即可。
希望對(duì)樓主有所幫助~
用sql命令語(yǔ)句寫(xiě)CHECK約束的格式為CHECK (約束條件)。
如:
CREATE TABLE 成績(jī)信息(
成績(jī)編號(hào) int NOT NULL PRIMARY KEY,
學(xué)生編號(hào) nchar(50) NOT NULL,
考試編號(hào) nchar(10) NOT NULL,
課程編號(hào)nchar(10) NOT NULL,
分?jǐn)?shù) nchar(10) NOT NULL CHECK (分?jǐn)?shù)in(between '0' and '100'))
在數(shù)據(jù)庫(kù)中,CHECK 約束是指約束表中某一個(gè)或者某些列中可接受的數(shù)據(jù)值或者數(shù)據(jù)格式。CHECK約束可以應(yīng)用于一個(gè)或者多個(gè)列,也可以將多個(gè)CHECK 約束應(yīng)用于一個(gè)列。當(dāng)除去某個(gè)表時(shí),對(duì)這個(gè)表的CHECK 約束也將同時(shí)被去除。
擴(kuò)展資料:
CHECK 約束不接受計(jì)算結(jié)果為 FALSE 的值。因?yàn)榭罩档挠?jì)算結(jié)果為 UNKNOWN,所以如果賦值表達(dá)式中存在這些值,則約束可能會(huì)被覆蓋而不起作用。如果 CHECK 約束檢查的條件對(duì)于表中的任何行都不是 FALSE,它將返回 TRUE。
如果剛創(chuàng)建的表沒(méi)有任何行,則此表的任何 CHECK 約束都視為有效。執(zhí)行 DELETE 語(yǔ)句時(shí)不驗(yàn)證 CHECK 約束。因此,使用特定類型的 CHECK 約束對(duì)表執(zhí)行 DELETE 語(yǔ)句時(shí)可能會(huì)產(chǎn)生意外結(jié)果。
現(xiàn)在要說(shuō)的是在列這一層次過(guò)濾的基于表定義之前就規(guī)范好的 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 約束的相關(guān)限制如下:
1. constraint 名字在每個(gè)數(shù)據(jù)庫(kù)中唯一。
也就是說(shuō)單個(gè)數(shù)據(jù)庫(kù)里不存在相同的兩個(gè) constraint,如果不定義,系統(tǒng)自動(dòng)生成一個(gè)唯一的約束名字。
2. check 約束針對(duì)語(yǔ)句 insert/update/replace/load data/load xml 生效;針對(duì)對(duì)應(yīng)的 ignore 語(yǔ)句失效。
3. 并非每個(gè)函數(shù)都可以使用,比如函數(shù)結(jié)果不確定的:NOW(),CONNECTION_ID(),CURRENT_USER()。
4. 不適用于存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)。
5. 系統(tǒng)變量不適用。
6. 子查詢不適用。
7. 外鍵動(dòng)作(比如 ON UPDATE, ON DELETE) 不適用。
8. enforced 默認(rèn)啟用,如果單獨(dú)加上 not enforced ,check 約束失效。
相關(guān)推薦: