约束的类型:
一、约束的类型有:
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_学号