创建和使用约束

创建和使用约束
    约束(Constraint)是MSSQL提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数

据的限制条件。在MSQSL中有5种约束。

1、主关键字约束  Primary Key Constraint

   主关键字约束指定表的一列或几列的组合的值在表中具有唯一性,即能惟一地指定一行记录。每个表中只能

有一列被指定为主关键字,且image和text类型的列不能被指定为主关键字,也不允许指定主关键字列null属性

   定义主关键字约束的语法:

constraint 约束的名称 primary key[指定索引类别] (列名1...列名16)

   约束的名称在数据库中应该是惟一的。如果不指定,则系统会自动生成一个约束名
   主关键字最多由16个列组成

2、外关键字约束  Foreign Key Constraint
   外关键字约束定义了表之间的关系。当一个表征的一个列或多个列的组合和其他表中的主关键字定义相同时

,就可以将这些列或列的组合定义为外关键字,并设定它合适哪个表中的哪些列相关联。这样,当在定义主关键

字约束的表中更新列值时,其他表中有与之相关联的外关键字约束的表中的外关键字列也将被相应的做相同的更

新。外关键字约束的作用还体现在,当向含有外关键字的表插入数据时,如果与之相关联表的列中无与插入的外

关键字列值相同的值时,系统会拒绝插入数据。与主关键字相同,不能使用一个定义为text或image数据类型的

列创建外关键字。外关键字最多由16列组成。

   定义外关键字约束的语法
constraint 约束名称 foreign key(列名1...列名16) references 关联表的名称[(列名1...列名16)] [on

delete{cascade|no action}] [on update{cascade|no action}] [not for repliaction]

on delete{cascade|no action} 指定在删除表中的数据时,对关联表所作的相关操作。在子表中有数据行与 

   父表中的对应数据行相关联的情况下。如果指定了之cascade,则在删除父  

  表数据行时会将子表中对应的数据行删除。如果指定为no action 则MSQSL   

 会产生一个错误,并将父表中的删除操作回滚。no action是缺省值。

on update{cascade|no action} 指定在更新表中的数据时,对关联表所作的相关操作。在子表中有数据行与 

    父表中的对应数据行相关联的情况下。如果指定了之cascade,则在更新父 

    表数据行时会将子表中对应的数据行更新。如果指定为no action 则MSQSL 

    会产生一个错误,并将父表中的更新操作回滚。no action是缺省值。

not for repliaction  指定列的外关键字约束在把从其它表中复制的数据插入到表中时不发生作用

临时表不能指定外关键字约束

3、惟一性约束  Unique Constraint
   唯一性约束指定一个或多个列的组合的值具有唯一性,以防止在列中输入重复的值。唯一性约束指定的列可

以有null属性。由于主关键字只是具有唯一性的,因此主关键字列不能再设定唯一性约束。唯一性约束最多由16

个列组成

   定义唯一性约束的语法
constraint 约束名称 unique[clustered|nonclustered] (列名1...列名16)
  

4、检查约束  Check Constraint
   检查约束对输入列或这个表中的值设置检查条件,以限制输入值,保证数据库的数据完整性。可以对每个列

设置符合检查
   定义检查约束的语法如下
constraint 约束名称 check[no for replication] (逻辑表达式)

no for replication 指定检查约束在把从其他表中复制的数据插入到表中时不发生作用

对计算列不能作除检查约束外的任何约束。

5、缺省约束  Default Constraint
   缺省约束通过定义列的缺省值或使用数据库的缺省值对象绑定表的列,来指定列的缺省值。MSSQL推荐使用缺

省约束,而不使用定义缺省值的方式来指定列的缺省值。
   定义缺省约束的语法
constraint 约束名称 default 约束表达式 [for 列名]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值