创建、删除和修改约束 :
主键约束(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]’)