SQL Server 2016 [创建和删除约束]

约束的类型:

一、约束的类型有:

1.主键约束 primary key(PK)

2.非空约束 not null(NN)

3.唯一约束 unique(UQ)

4.检查约束 check(CK)

5.默认约束 default(DF)

6.外键约束 foreign key(FK)

二、约束名的取名规则推荐采用:

约束类型_约束列,如PK_Userld

三、六大约束类型说明:

1.primary key:主键,用于保证该字段的值具有唯一性,并且非空,一个表中只允许有一个主键约束且为空列不能创建主键约束。

比如学号,员工编号等

2.not null:非空,用于保证该字段的值不能为空

比如姓名,学号等

3.unique:唯一,用于保存该字段的值具有唯一性,可以为空

比如座位号

4.check:检查约束【MySQL中不支持】

5.default:默认,用于保证该字段的默认值

比如性别,成绩

6.foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值

在从表中添加限制,用于引用主表中某列的值

 

教程实例:  SQL Server 2016 [创建和删除约束] 源代码:

一、创建约束

1. 添加[主键约束] primary key (PK)

-- 切换至DB1数据库
use DB1
--修改stu表
alter table [DB1].[dbo].[stu]
-- 1.对学号添加[主键约束] primary key
add constraint PK_学号 primary key (学号)

2. 添加[非空约束] NOT NULL (NN)

-- 修改STU表
ALTER TABLE [DB1].[dbo].[stu]
-- 添加非空约束
ADD CONSTRAINT NN_成绩 CHECK (成绩 IS NOT NULL)

-- 还可以使用NOCHECK选项添加NOT NULL约束。 NOCHECK不强制使用现有值:
ALTER TABLE MyTable WITH NOCHECK
ADD CONSTRAINT MyColumn_NOTNULL CHECK (MyColumn IS NOT NULL)

3. 添加[唯一约束] Unique(UQ)

-- 切换至DB1数据库
use DB1
--修改stu表
alter table [DB1].[dbo].[stu]
-- 3.对姓名添加[唯一约束] Unique
add constraint UK_姓名 Unique (姓名)

4. 添加[检查约束](CK)条件 ([列名] 大于18)

-- 切换至DB1数据库
use DB1
--修改stu表
alter table [DB1].[dbo].[stu]
-- 4.对年龄添加[检查约束] 条件([列名]大于18)
add constraint CK_年龄 check (年龄>18)

5.添加[默认约束] default 值 给到 列名

-- 切换至DB1数据库
use DB1
--修改stu表
alter table [DB1].[dbo].[stu]
-- 5.对性别添加[唯一约束] default 值 给到 列名
add constraint DF_性别 default '男' for 性别

6.添加[外键约束] foreign key(FK)

--1.该约束需要两张表
--2.给[gt]表中的[SN]建立一个外键约束,
--3.引用[stu]表中的[SN],(目的,加强学成表和成绩表之间的关联)
--4.注意点:两个表中列数据类型、长度保持一致;引用的列必须是主键或者唯一约束;两个表中的列名尽量保持一致。
alter table [DB1].[dbo].[gt]
add constraint FK_SN foreign key (SN)
references [DB1].[dbo].[stu] (SN)

二、删除约束

--修改stu表
alter table [DB1].[dbo].[stu]
--删除 约束名
drop constraint PK_学号

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值