创建、删除和修改约束 :

 

主键约束(primary key constraint)

唯一性约束(unique constraint)

检查约束(check constraint)

缺省约束(default constraint)

外部键约束(foreign key constraint)

 

主键约束 :

主键的添加、删除和修改操作方法有两种:

(一)企业管理器操作法,在企业管理器中,用右键单击要操作的数据库表,从弹出的快捷菜单中选择设

 

计表选项 ,然后根据提示操作。

(二)Transact-SQL语句操作法。

其语法形式如下:

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

 

主键约束各参数的说明如下

 

constraint_name:用于指定约束的名称,约束的名称在数据库中应该是唯一的。如果不指定,则系统会

 

自动生成一个约束名。

LUSTERED|NONCLUSTERED:用于指定索引的类型,即聚簇索引或者非聚簇索引,CLUSTERED为默认值。

column_name:用于指定主键的列名。主键最多由16个列组成。

 

例子5-5

 

在执行创建产品信息表的操作时,指定产品编号为主键值,并且创建一个聚簇索引。

create table products(
id char(10) not null,
name char(20) not null
price money default 0.01
quantity smallint null
constraint pk_id primary key clustered (id)
)

 

唯一性约束

唯一性约束用于指定一个或者多个列的组合的值具有唯一性,以防止在列中输入重复的值。当使用唯一性

 

约束时,需要考虑以下几个因素:

①使用唯一性约束的字段允许为空值。

②一个表中可以允许有多个唯一性约束。

③可以把唯一性约束定义在多个字段上。

④唯一性约束用于强制在指定字段上创建一个唯一性索引。

 ⑤缺省情况下,创建的索引类型为非聚簇索引。

 

创建和修改唯一性约束的操作方法有两种:

(一)企业管理器操作法,通过企业管理器可以完成创建和修改唯一性约束的操作。

(二)Transact-SQL语句操作法。

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

 

检查约束

 

一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关。

一个表中可以定义多个检查约束。

每个CREATE TABLE语句中每个字段只能定义一个检查约束。

在多个字段上定义检查约束,则必须将检查约束定义为表级约束。

当执行INSERT语句或者UPDATE语句时,检查约束将验证数据。

检查约束中不能包含子查询。

 

创建检查约束常用的操作方法有两种:

 

1.企业管理器操作法。使用企业管理器创建检查约束,与创建唯一性约束类似 。

2.Transact-SQL语句操作法。检查约束的Transact-SQL语句操作法,其语法形式如下:

CONSTRAINT constraint_name
 CHECK [NOT FOR REPLICATION]
 (logical_expression)

 

例子:

 

创建了一个学生信息表,其中输入性别字段值时,只能接受“F”或者“M”,并且为phonenum字段创建检

 

查约束,限制只能输入类似01080798654之类的数据,而不能随意输入其他数据。

create table student(
Id char(8)
name char(8)
sex char(2)
phonenum int
constraint chk_sex check(sex in (’F’,’M’))
Constraint chk_phonenum check
(phonenum like ‘(010)[0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]’)