当前位置:首页 > 系统运维 > 正文内容

SQL Server使用检查约束来验证数据实战演示

a8116255316年前 (2010-07-22)系统运维7

以下文章主要是介绍在SQL Server使用检查约束来验证数据的实际操作步骤,以及对其在实际操作中要用到的一些事项的描述,下面的文章就是对SQL Server使用检查约束来验证数据的实际操作步骤的相关内容的具体介绍。

什么是检查约束

检查约束是一个规则,它确认一个SQL Server表中某条记录中的数据可接受的字段值。检查约束帮助执行域完整性。域完整性定义了一个数据库表中字段的有效值。检查约束可以验证一个单独字段或一些字段的域完整性。你对一个单独的字段可以有多个检查完整性。假如 *** 入或更新的数据违反了一个检查约束,那么数据库引擎将不答应这个插入或更新的操作发生。

创建检查约束

1 创建字段级别的检查约束

CREATE TABLE CHECKTABLE(  pid INT PRIMARY KEY,  cname VARCHAR(500) NOT NULL,  age INT,  CHECK(age>0)  

这是一个字段级别的约束。这个检查约束只答应age字段大于0。当我的表创建之后,这个CHECK约束也将被创建,并被赋予一个系统生成的约束名称。

假如你想在一个CREATE TABLE操作期间命名你的检查约束,那么你可以运行下面的代码:

CREATE TABLE CHECKTABLE(  pid INT PRIMARY KEY,  cname VARCHAR(500) NOT NULL,  age INT,  CONstRAINT CK_CheckTable_Age CHECK(age>0)  

一个检查约束表达式可以有多个条件。下面是一个例子,它显示了一个有多个条件的检查约束:

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

SQL Server使用检查约束来验证时假如你想创建一个表级别的检查约束,那么你可以运行下面的代码:

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

有时,在你设计和创建了一个表后,你想对一个表添加一个检查约束。这可以通过使用ALTER TABLE 语句来完成:

ALTER TABLE CHECKTABLE  WITH NOCHECK ADD CONSTRAINT CK_CheckTable_Sex  CHECK (sex IN (0,1));  ALTER TABLE CHECKTABLE  WITH NOCHECK ADD CONSTRAINT CK_CheckTable_Sex  CHECK (sex IN (0,1) AND cname IN ('zy','zs'));  

你可以使用一个单独的ALTER TABLE语句来一次添加多个检查约束到你的表中:

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

比较特别是的,字段中的NULL值可能答应你输入数据到你的数据库中,而这并不满足你的需求。

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

针对该约束,INSERT INTO CHECKTABLE(pid,cname,age,sex) VALUES(1,NULL,12,1) 该SQL语句是起作用的。这是因为NULL值用在比较操作中时,它被当作UNKNOWN。因为UNKNOWN不是FALSE,所以没有违反检查约束。因此,当你编写你的检查约束时,你需要对需要拒绝包含NULL值的地方很谨慎。上面的代码应该改为:

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

结论

通过SQL Server使用检查约束,你可以确保你的数据库只包含通过了约束的数据。这使得你可以让数据库引擎控制你的数据验证。这么做将使得你的应用程序不需要在每个你希望插入一条记录或更新一条记录到一个表中的地方都写数据验证规则的代码。检查约束是执行数据验证的一个简洁 *** 。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/22213.html

分享给朋友:

“SQL Server使用检查约束来验证数据实战演示” 的相关文章

如何设置Win 7通知栏重新显示电源按钮

如何设置Win 7通知栏重新显示电源按钮

有些使用本本的朋友可能会发现,右下角通知栏区域会无法显示电源按钮,导致在插上电源或者是使用电池的时候都无法进行区分。造成这种情况大部分都是因为使用了第三方修改过的系统版本或者对于系统优化过度,所以今天就来解决这个问题。 第一步:在开始菜单的搜索窗口输入“gpedit.msc”,进入组策略编辑器,依...

上帝不止一个 更多Windows7 快捷模式.

上帝不止一个 更多Windows7 快捷模式.

国外媒体CNET NEWS就这个“上帝模式”和微软Windows部门主管Steven Sinofsky进行邮件交流后得知,这其实只是众多快捷方式中的一个,Sinofsky在邮件里给出了十多个这类快捷方式的关键字符串。 它们的建立方法和之前的“上帝模式”一样,在任意位置新建的一个文件夹,然后改名即可...

windows 7查看电脑近期使用情况确定有没有被他人使用

windows 7查看电脑近期使用情况确定有没有被他人使用

我一个朋友最近装装了Windows 7,他总感觉有人用了他的电脑,但是一直不确定,他想知道有没有人动用他的电脑,问我有没有办法 我说设置一下就行了: 启动Windows 7,在搜索栏中输入编辑组,马上就搜索到了编辑组策略,点击即可启动程序编辑组策略。依次展开组策略左侧树形列表的计算机配置/管理模...

各个都很实用:windows 7系统电脑日常小技巧

各个都很实用:windows 7系统电脑日常小技巧

在使用Windows 7的时候很多用户对于系统的很多功能并不是很了解,也正是因为这样的不了解导致很多用户在使用Win 之后并不能体验Windows 7的功能便携和强大功能,导致很多用户对于Windows 7的认识还是比较模糊,不过为了让更多的朋友了解Windows 7的特点和便携应用,今天就为大家汇...

windows 7如何给c盘扩容 图解windows 7 64位系统C盘扩容方法(自

windows 7如何给c盘扩容 图解windows 7 64位系统C盘扩容方法(自

用Windows 7久了,C盘越来越大,原来50G的空间基本用完了,又不想重装系统,就想着能不能直接扩容。 在网上搜了半天,看了无数教程,都写得不明不白的,结合了几篇教程才终于搞明白。 重新总结一下,方便有需要的人。 所用软件: http://www.jb51.net/softs/57895...

windows 7系统怎么取消禁ping命令?

windows 7系统怎么取消禁ping命令?

当我在虚拟机的linux系统中ping本机的ip发现ping不通,而本机可以ping通虚拟机中的ip。应该是出于安全考虑吧,Windows 7默认在防火墙里禁止了。 1、查看主机ip 打开“开始”程序中的“附件”,找到“命令提示符”打开。输入命令:ipconfig,可以看到本机的ip是192.1...