SQL Server的约束有六种,分别是:
Primary Key、Foreign Key、check、unique、default、not null。
下面对他们分别介绍。
Primary Key(主键)
定义:
数据库主键,指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性。主键主要P是K用与其他表的外键关联,以及本记录的修改与删除。
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
用法:
1.向选课表添加主键约束,以sno和cno为联合主键,主键名字为PK_SC。
alter table 选课
add constraint PK_SC primary key(sno,cno)
2.删除选课表的PK_SC主键约束
alter table 选课
drop constraint PK_SC
3.向学生表添加主键,以sno为主键
alter table 学生
add primary key(sno)
Foreign Key (外键)
定义:
表的外键是另一表的主键, 外键可以有重复的, 可以是空值。
FOREIGN KEY 约束用于预防破坏表之间连接的动作。
FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
用法:
1.向SC表添加外键约束,将sno列指向student表中的sno列,外键名字为FK_sno。
alter table SC
add constraint FK_sno foreign key(sno) references student(sno)
2.删除SC表的FK_sno外键约束
alter table SC
drop constraint FK_sno
Check (检查)
定义:
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
用法:
1.向student表中的sage列添加check约束,限制在15-25之间,check约束名为CK_student_sage
alter table student
add constraint CK_student_sage check(sage between 15 and 25)
2.删除上面创建的check约束
alter table student
drop constraint CK_student_sage
Uinque (唯一)
定义:
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
用法:
1.向student表中的sname列添加unique约束。
alter table student
add unique(sname)
2.如需命名unique约束,并定义多个列的unique约束,请使用下面的 SQL 语法。
alter table student
add constraint UC_stu unique(sage,sex)
Default (默认)
定义:
DEFAULT 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值g添加到所有的新记录。
用法:
1.向student表中的sage添加default约束,默认18
alter table student
alter column sage
set default 18
2.撤销student表中sage列的约束
alter table student
alter column sage
drop default
Not Null (非空)
定义:
NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
用法:
1.修改student表的sname列为非空
alter table student
alter column sname char(8) not null
2.取消非空约束
alter table student
alter column sname char(8) null