在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个外部键约束;
在临时表中,不能使用外部键约束;
主键和外部键的数据类型必须严格匹配