SqlServer五种约束及关键脚本

SQLServer中有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,为了防止日后用到创建脚本时重新编写sql脚本,特此整理此文档,我这里只是用到的Unique约束。
1、Primary Key约束
在表中常有一列或多列的组合,其值能唯一标识表中的每一行。
这样的一列或多列成为表的主键(PrimaryKey)。一个表只能有一个主键,而且主键约束中的列不能为空值。只有主键列才能被作为其他表的外键所创建。

--删除主键
 alter table 表名 drop constraint 主键名
 --添加主键
 alter table 表名 add constraint 主键名 primary key(字段名1,字段名2……)

2、Foreign Key约束
外键约束是用来加强两个表(主表和从表)的一列或多列数据之间的连接的。创建外键约束的顺序是先定义主表的主键,然后定义从表的外键。也就是说只有主表的主键才能被从表用来作为外键使用,被约束的从表中的列可以不是主键,主表限制了从表更新和插入的操作。

alter table  外键表名  add constraint 约束名称 foreign key(外键字段)  references 主键表名(约束列名)

3、Unique约束
唯一约束确保表中的一列数据没有相同的值。与主键约束类似,唯一约束也强制唯一性,但唯一约束用于非主键的一列或者多列的组合,且一个表可以定义多个唯一约束。

create unique index u_index on table(id,name,sex)
 
ALTER TABLE [dbo].[T_Question] ADD UNIQUE NONCLUSTERED 
(
[IdentityFlag],[FK_CatalogID] ASC
)

4、Default约束
若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL。

--给指定列添加默认约束
alter table 表名 add constraint 约束名 default(约束值) for 列名;

5、Check约束
Check约束通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围。在列中更新数据时,所要输入的内容必须满足Check约束的条件,否则将无法正确输入。
语法

ALTER TABLE table_name
ADD CONSTRAINT constraint_name CHECK (column_name condition) [DISABLE];

其中,DISABLE关键之是可选项。如果使用了DISABLE关键字,当CHECK约束被创建后,CHECK约束的限制条件不会生效。
示例:

--创建check约束
alter table tb_supplier
add constraint check_tb_supplier
check (supplier_name IN ('IBM','LENOVO','Microsoft'));

验证:

--supplier_name满足check约束条件,此条记录能够成功插入
insert into tb_supplier values(1, 'IBM','US');
--supplier_name不满足check约束条件,此条记录能够插入失败,并提示相关错误如下
insert into tb_supplier values(1, 'DELL','HO');

验证结果:
SQL Error: ORA-02290: check constraint (502351838.CHECK_TB_SUPPLIER) violated
02290. 00000 - “check constraint (%s.%s) violated”
*Cause: The values being inserted do not satisfy the named check

6、 删除约束:

   --判断默认约束是否存在,如果存在则先删除,如果不存在则直接添加
if exists(select * from sysobjects where name=约束名)
alter table 表名 drop constraint 约束名;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值