SQL2005有几种约束?如何使用?

在SQL Server 2005中有6种约束:

主键约束(primary key constraint)、  惟一性约束(uniqueconstraint)、

检查约束(check constraint)、             默认约束(default constraint)、

外部键约束(foreign key constraint) 空值(NULL)约束。

 

1、not null :用于控制字段的内容一定不能为空(NULL)。

用法 :Create table MyTable(     id varchar(32) not null,    name varchar (32)   )

 

2、Unique :控件字段内容不能重复,一个表允许有多个 Unique 约束。

    在Sql Server、Orcale、MS Access 支持的添加 Unique 语法:

            Create tableMyTable (  id varchar(32) not null unique, name varchar (32)  )

           在Sql Server、My Sql 支持的添加Unique 语法:

         Createtable MyTable ( id varchar(32) not null,  name varchar (32),  unique (id,.....)         ) 

 

                 在Sql Server、Oracle、MS Access 删除Unique 约束语法:drop constraintUniqueName;

            在My Sql 删除Unique 约束语法:drop indexUniqueName;

 

3、Primary Key :也是用于控件字段内容不能重复,但它在一个表只允许出现一个。

在Sql Server、Orcale、MS Access、My Sql 表已存在的情况下,添加表的Primary Key约束语法:

      Alter tablemyTB1     ADD Primary Key(id,......) --这样的写法,系统会自定义约束名称

      Alter table myTB1       Add Constaint PrimaryName primarykey (id) --这样的写法,自己可以自定义约束名称

 

在Sql Server、Orcale、MS Access 删除表已存在的Primary Key约束的语法:

      Alter table myTB1       Drop ConstraintPrimaryName

 

4、惟一性约束UNIQUE

使用Transact-SQL语句完成惟一性约束的操作,其语法形式如下:

CONSTRAINT constraint_name       UNIQUE [CLUSTERED|NONCLUSTERED](column_name[,…n])

 

5、检查约束CHECK

检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。

可以将 CHECK 约束应用于多个列,也可以将多个 CHECK 约束应用于单个列。

在属性页的"CHECK 约束"选项卡中,使用下列语法在"约束表达式"框中键入表达式:

  {constant | column_name | function | (subquery)}

  [{operator | AND | OR | NOT}

  {constant | column_name | function | (subquery)}...]

 

对 INSERT 和 UPDATE 语句禁用 CHECK 约束

  I、在数据库关系图中右击包含约束的表,然后从快捷菜单中选择"属性"命令。

           -或-  

           为包含约束的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择"属性"命令。

  II、选择"CHECK 约束"选项卡。

  III、从"选定的约束"列表中选择约束。

  IV、清除"对 INSERT 和 UPDATE 强制约束"复选框。

  可以在添加或修改数据后选择该选项,以确保约束能应用到后续的数据修改

 

这里全选sql语句写的约束做例子。

用Transact-SQL语句创建检查约束。其语法形式如下:

                        CONSTRAINT constraint_name  CHECK [NOTFOR REPLICATION]   (logical_expression)

例(注:下面为列约束)

CREATE TABLE我的会员

(       会员编号smallint NOT NULLCONSTRAINT MemberNoChk

CHECK (会员编号BETWEEN 1 AND 10000),

姓名nvarchar(20) NOT NULL,                  地址nvarchar(60) NOT NULL            );

 

(注:下面为表约束)

看清楚了没有:列约束和表约束的区别就是列约束是直接跟在后面,而表约束则不是。

CREATE TABLE我的会员

(        会员编号smallint NOT NULL,          姓名nvarchar(20) NOT NULL, 地址nvarchar(60) NOT NULL,

CONSTRAINT ChkMemberNo           CHECK (会员编号BETWEEN 1 AND 10000)             );

在"约束表达式"框中,为 CHECK 约束键入 SQL 表达式。

例:若要将 authors 表中 state 列的输入项限制为 New York,

                   请键入:tate = 'NY'

  若要要求 zip 列中的输入项为 5 位数字,

                   请键入:zip LIKE '[0-9][0-9][0-9][0-9][0-9]' 中间不能有空格

 

假设 orders 表限制所有信用卡订单可接受的信用卡类型。

例:约束确保如果用信用卡发出订单,则只接受 Visa、MasterCard 或 American

Express:  

  NOT (payment_method = 'credit card') OR

  (card_type IN ('VISA', 'MASTERCARD', 'AMERICAN EXPRESS'))

  定义约束表达式

 

6、外部键约束FOREIGN KEY

     外键 (FOREIGN KEY)是用于建立和加强两个表数据之间的链接的一列或多列。外部键约束用于强制参照完整性。

      当使用外部键约束时,应该考虑以下几个因素:

外部键约束提供了字段参照完整性;

外部键从句中的字段数目和每个字段指定的数据类型都必须和REFERENCES从句中的字段相匹配;

外部键约束不能自动创建索引,需要用户手动创建;

用户想要修改外部键约束的数据,必须有对外部键约束所参考表的SELECT权限或者REFERENCES权限;

参考同一表中的字段时,必须只使用REFERENCES子句,不能使用外部键子句;

一个表中最多可以有253个外部键约束;

在临时表中,不能使用外部键约束;

主键和外部键的数据类型必须严格匹配

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值