431.chapter3.创建表,约束和用户自定义类型

 

2 约束 就是用户输入超出允许范围的数据

(1)check约束:通过限制列的可接受值,强制域的完整性。通过任何基于逻辑运算符号返回true或者false的逻辑值创建check约束。
一个列可以有多个check约束,按照约束的创建顺序进行验证
搜索条件必须为逻辑表达式,并且不能引用其他表
列级别的check约束只能引用被约束的列,表级别的约束只能引用用一个表中的列
不能再text,ntext或image上定义check约束

(2)规则(Rule):执行和check相同的功能。使用check约束是限制列值的首要方法。一个列只能应用一个规则,可以应用多个check约束。check约束和表或者表的某一列绑定在一起。而规则作为数据库对象而单独存在。

Rule sample


(3)unique约束:禁止出现重复的值
如果没有为unique指定clustered或者nonclustered,默认使用nonclustered
每个unique约束都会生成一个索引。unique约束的数目不会使表中的nonclustered索引超过249个,clustered索引超过1个

Code


(4)主键约束
一个表只能包含一个主键约束
由主键约束生成的索引不会使表中的nonclustered索引超过999个,clustered索引超过1个
如果没有为主键指定clustered或者nonclustered,并且没有为unique约束指定clustered索引,主键约束将默认采用clustered
主键约束定义中的所有列必须定义为not null

mutiple primary key

(5)外键约束:保证引用的完整性。确保用户输入的值存在于一个指定的表的对应的列里。
如果FK约束输入非null值,则此值必须在被引用的列中存在。
FK仅能用于同一服务器上同意数据库中的表。跨数据库应用完整性必须通过触发器实现。
FK可以引用同一表中的其他列,此行为成为自引用。比如AdventureWork中HumanResources.Employee的外键FK_Employee_Employee_MangerID
列级别的FK只能引用一个列。两者数据类型必须相同
表级别的FK的引用中列的数目比月和约束列中的列数相同,数据类型也必须相同
FK约束只能引用所引用表的PK或者unique约束中的列或所引用的表中unique index中的列

Foreign Key Sample


(6)default约束:当用户未指定值是,sql server自动为其赋值

default constraint

 

所有的约束的完整sql

Ovarall sample

 

 

posted @ 2009-02-25 12:04  On the road....  阅读(360)  评论(0编辑  收藏  举报