偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

SQL Server使用檢查約束來驗(yàn)證數(shù)據(jù)實(shí)戰(zhàn)演示

數(shù)據(jù)庫 SQL Server
如果你是SQL Server使用檢查約束來驗(yàn)證數(shù)據(jù)方面的新手,對(duì)SQL Server使用檢查約束來驗(yàn)證數(shù)據(jù)的相關(guān)實(shí)際應(yīng)用不是很了解的話,以下的文章會(huì)給你提供更全面的知識(shí)。

以下文章主要是介紹在SQL Server使用檢查約束來驗(yàn)證數(shù)據(jù)的實(shí)際操作步驟,以及對(duì)其在實(shí)際操作中要用到的一些事項(xiàng)的描述,下面的文章就是對(duì)SQL Server使用檢查約束來驗(yàn)證數(shù)據(jù)的實(shí)際操作步驟的相關(guān)內(nèi)容的具體介紹。

什么是檢查約束?

檢查約束是一個(gè)規(guī)則,它確認(rèn)一個(gè)SQL Server表中某條記錄中的數(shù)據(jù)可接受的字段值。檢查約束幫助執(zhí)行域完整性。域完整性定義了一個(gè)數(shù)據(jù)庫表中字段的有效值。檢查約束可以驗(yàn)證一個(gè)單獨(dú)字段或一些字段的域完整性。你對(duì)一個(gè)單獨(dú)的字段可以有多個(gè)檢查完整性。假如被插入或更新的數(shù)據(jù)違反了一個(gè)檢查約束,那么數(shù)據(jù)庫引擎將不答應(yīng)這個(gè)插入或更新的操作發(fā)生。

 

創(chuàng)建檢查約束

1 創(chuàng)建字段級(jí)別的檢查約束

  1. CREATE TABLE CHECKTABLE(  
  2. pid INT PRIMARY KEY,  
  3. cname VARCHAR(500) NOT NULL,  
  4. age INT,  
  5. CHECK(age>0)  

這是一個(gè)字段級(jí)別的約束。這個(gè)檢查約束只答應(yīng)age字段大于0。當(dāng)我的表創(chuàng)建之后,這個(gè)CHECK約束也將被創(chuàng)建,并被賦予一個(gè)系統(tǒng)生成的約束名稱。

假如你想在一個(gè)CREATE TABLE操作期間命名你的檢查約束,那么你可以運(yùn)行下面的代碼:

  1. CREATE TABLE CHECKTABLE(  
  2. pid INT PRIMARY KEY,  
  3. cname VARCHAR(500) NOT NULL,  
  4. age INT,  
  5. CONSTRAINT CK_CheckTable_Age CHECK(age>0)  

一個(gè)檢查約束表達(dá)式可以有多個(gè)條件。下面是一個(gè)例子,它顯示了一個(gè)有多個(gè)條件的檢查約束:

  1. CREATE TABLE CHECKTABLE(  
  2. pid INT PRIMARY KEY,  
  3. cname VARCHAR(500) NOT NULL,  
  4. age INT,  
  5. CONSTRAINT CK_CheckTable_Age CHECK(age>0 AND age<100)  

SQL Server使用檢查約束來驗(yàn)證時(shí)假如你想創(chuàng)建一個(gè)表級(jí)別的檢查約束,那么你可以運(yùn)行下面的代碼:

  1. CREATE TABLE CHECKTABLE(  
  2. pid INT PRIMARY KEY,  
  3. cname VARCHAR(500) NOT NULL,  
  4. age INT,  
  5. sex BIT,  
  6. CHECK(age>0 AND age<100 AND sex IN (0,1))  

有時(shí),在你設(shè)計(jì)和創(chuàng)建了一個(gè)表后,你想對(duì)一個(gè)表添加一個(gè)檢查約束。這可以通過使用ALTER TABLE 語句來完成:

  1. ALTER TABLE CHECKTABLE  
  2. WITH NOCHECK ADD CONSTRAINT CK_CheckTable_Sex  
  3. CHECK (sex IN (0,1));  
  4. ALTER TABLE CHECKTABLE  
  5. WITH NOCHECK ADD CONSTRAINT CK_CheckTable_Sex  
  6. CHECK (sex IN (0,1) AND cname IN ('zy','zs'));  

你可以使用一個(gè)單獨(dú)的ALTER TABLE語句來一次添加多個(gè)檢查約束到你的表中:

  1. ALTER TABLE CHECKTABLE  
  2. WITH NOCHECK ADD CONSTRAINT CK_CheckTable_Sex  
  3. CHECK (sex IN (0,1)),  
  4. CONSTRAINT CK_CheckTable_Sex  
  5. CHECK (cname IN ('zy','zs')); 

比較特別是的,字段中的NULL值可能答應(yīng)你輸入數(shù)據(jù)到你的數(shù)據(jù)庫中,而這并不滿足你的需求。

  1. ALTER TABLE CHECKTABLE  
  2. WITH NOCHECK ADD CONSTRAINT CK_CheckTable_Sex  
  3. CHECK (sex IN (0,1)),  
  4. CONSTRAINT CK_CheckTable_Sex  
  5. CHECK (cname IN ('zy','zs')); 

針對(duì)該約束,INSERT INTO CHECKTABLE(pid,cname,age,sex) VALUES(1,NULL,12,1) 該SQL語句是起作用的。這是因?yàn)镹ULL值用在比較操作中時(shí),它被當(dāng)作UNKNOWN。因?yàn)閁NKNOWN不是FALSE,所以沒有違反檢查約束。因此,當(dāng)你編寫你的檢查約束時(shí),你需要對(duì)需要拒絕包含NULL值的地方很謹(jǐn)慎。上面的代碼應(yīng)該改為:

  1. ALTER TABLE CHECKTABLE  
  2. WITH NOCHECK ADD CONSTRAINT CK_CheckTable_Sex  
  3. CHECK (sex IN (0,1)),  
  4. CONSTRAINT CK_CheckTable_Sex  
  5. CHECK (cname IS NOT NULL AND cname IN ('zy','zs')); 

結(jié)論

通過SQL Server使用檢查約束,你可以確保你的數(shù)據(jù)庫只包含通過了約束的數(shù)據(jù)。這使得你可以讓數(shù)據(jù)庫引擎控制你的數(shù)據(jù)驗(yàn)證。這么做將使得你的應(yīng)用程序不需要在每個(gè)你希望插入一條記錄或更新一條記錄到一個(gè)表中的地方都寫數(shù)據(jù)驗(yàn)證規(guī)則的代碼。檢查約束是執(zhí)行數(shù)據(jù)驗(yàn)證的一個(gè)簡潔方法。

【編輯推薦】

  1. SQL Server鏡像工作方式與實(shí)現(xiàn)方式
  2. SQL Server所有表的列信息展示
  3. 創(chuàng)建SQL Server全文檢索的2方案
  4. 實(shí)現(xiàn)SQL Server 2000全文索引遷移步驟
  5. SQL Server全文索引的實(shí)例演示

 

 

責(zé)任編輯:佚名 來源: 濟(jì)南時(shí)報(bào)
相關(guān)推薦

2009-04-15 13:21:03

微軟SQL Server約束

2010-05-27 18:30:56

MySQL 命令行導(dǎo)入

2010-07-14 09:41:26

SQL Server數(shù)

2010-11-12 14:55:59

Sql Server檢

2010-06-30 08:46:51

升級(jí)SQL Serve

2010-07-09 11:34:51

SQL Server用

2010-06-18 10:25:49

SQL Server

2010-07-05 12:09:16

SQL Server

2010-11-12 15:04:30

SQL Server缺

2017-03-13 09:48:26

pysparkhive數(shù)據(jù)

2009-04-16 17:38:24

SQL Server 空間數(shù)據(jù)智能

2010-07-16 14:17:18

SQL Server

2011-07-11 13:16:19

SQL TraceSQL Profile

2020-11-18 09:24:18

MySQL數(shù)據(jù)庫技術(shù)

2011-08-04 16:20:39

SQLServer數(shù)據(jù)索引碎片DBCC ShowCo

2013-07-30 16:54:32

2010-07-05 15:04:36

SQL Server刪

2010-07-21 09:50:12

SQL Server子

2010-07-30 14:38:25

DB2數(shù)據(jù)庫

2010-07-16 17:03:35

SQL Server
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)