SQL数据库语言基础之SqlServer数据表的六大约束(主键、外键、检查、非空、唯一性、默认值约束)的创建

一、主键约束(primary key)

1、主键说明
(1)约束唯一标识数据库表中的每条记录
(2)主键必须包含唯一的值
(3)主键列不能为空
(4)每个表都应该有个主键,但只能有一个主键

2、约束作用
主键约束相当于NOT NULL + UNIQUE,确保某列(或多个列的结合)有唯一标识,有助于更快地找到一个表中特定的记录。

3、在管理器创建主键
1-3-1
4、SQL语句创建、删除主键
注意:创建之前,需要设定为主键的列必须是非主键。

--添加2个主键约束(联合主键):
--stu_info是表名
--pk_student约束名
--RRIMARY KEY约束类型为主键约束
--s_num学号、s_name姓名为约束的列
ALTER TABLE stu_info
ADD constraint pk_student PRIMARY KEY
(
	s_num, s_name
)

--删除主键:
--pk_student是需要删除的主键名
ALTER TABLE stu_info 
DROP constraint pk_student

二、外键约束(foreign key)

1、外键说明
(1)一个表中的foreign key 指向另一个表的primary key
(2)foreign key约束用于预防破坏表之间连接的动作
(3)foreign key约束也能防止非法数据插入外键列,因为它必须是指向的那个表的值之一。

2、约束作用
用于保证一个表中的数据匹配另一个表中的值的参照完整性。当指定了表1中某列为外键,并且其reference为表2中的某列(该列必须是UNIQUE约束的),就说明表1中的外键列的取值必须要在其所指向的列中取得。通过这样的约束,来预防破坏表之间连接的行为,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

3、管理器创建外键

在主键上右击——>关系——>添加——>在下拉列表里选择需要设定的主键和外键。
注意:主键和外键的类型必须相同,若外键为其他表中的列,则必须为其他表中的主键。
2-3-1

2-3-2

4、SQL语句创建、删除外键
(1)格式
foreign key (列名) references 主表名(主表列名)
alter 表名 drop constraint 外键约束名

(2)练习测试

--为表stu_info中的s_score创建外键为表Table_1中的ss_score
--fk_student外键约束名
ALTER TABLE stu_info
ADD constraint fk_student FOREIGN KEY(s_score)
REFERENCES Table_1(ss_score)

--删除外键关系
ALTER TABLE stu_info 
DROP constraint fk_student

三、检查约束(check)

1、检查说明
(1)check约束用于限制列中的值的范围
(2)如果对个单个列做check约束,那么该列只可以输入特定数值
(3)如果一个表定义check约束,那么此约束会在特定的列对值进行限制

2、约束作用
保证列中的值符合指定的条件。如果对单个列定义 CHECK 约束,那么该列只允许特定的值;如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。

3、管理器创建检查约束
右击——>CHECK约束——>然后添加需要的条件语句
3-3-1
3-3-2
要求分数小于等于100分:
3-3-3

4、SQL创建、删除检查约束
(1)语法

1、sex varchar(2) not null check(sex='男' or sex='女') 限制sex的性别只能是男或者女
2、alter table table_name add check(列名>0)           向已有的列加入check约束
3、alter table table_name drop constraint check约束名  删除约束       约束名可以用 sp_help table_name查看

(2)练习测试

--创建检查约束:性别是男或女
ALTER TABLE stu_info
ADD constraint ck_student CHECK(s_sex='男' or s_sex='女')

--分数大于0且小于100
ALTER TABLE stu_info
ADD constraint ck_student_2 CHECK(s_score>=0 and s_score<=100)

--删除检查约束
ALTER TABLE stu_info 
DROP constraint ck_student

四、非空约束(not null)

1、非空说明
not null 非空约束,即不能为空,强制列不接受空值;
null 就是可以为空。
例:创建表时,列名 varchar(6) not null

2、约束作用
指示某列不能存储NULL值。

3、管理器中
打钩就是可为空,没有打钩就是不能为空(即为非空约束)。
4-3-1

4、SQL语句创建

--把表stu_info中的s_score列不能为空
ALTER TABLE stu_info
ALTER column s_score numeric(4,2) not null

五、唯一性约束(unique)

1、唯一性说明
(1)约束唯一标识数据库表中的每条记录
(2)unique和primary key都为数据提供了唯一性约束
(3)primary key 拥有自动定义的Unique约束

2、唯一性作用
指示某列中每一行的值必须唯一,不可重复。
注意:每个表中只能有一个primary key约束,但是可以有多个Unique约束。

3、管理器中
右击——>索引/键——>选择唯一键,则设定为了唯一性约束。
5-3-1

4、SQL语句创建
(1)语法

1、unique(column_name)
2、alter table table_name add constraint 约束名 unique(column_name)   --增加表中的约束
3、ALTER TABLE 表名 DROP constraint 约束名    --删除约束 

(2)测试练习

--把表stu_info中的s_name列设置为唯一键(唯一性约束)
ALTER TABLE stu_info
ADD constraint un_student UNIQUE(s_name)

--删除s_name的 唯一性约束
ALTER TABLE stu_info 
DROP constraint un_student 

六、默认值约束(default)

1、默认值说明
(1)default约束用于向列中插入默认值
(2)如果没有规定其他的值,那么会将默认值添加到所有的新记录中

2、约束作用
规定没有给列赋值时的默认值。

3、SQL语句创建默认值

1、列名 varchar(10) default '张三'                       name默认插入张三的名字
2、systime date default gatedate()                       插入时间的默认值   getetime()函数为时间的默认值
3、ADD constraint 约束名 default '默认值' for 列名    --向已有列名中插入默认值
4、alter table 表名 drop constraint 约束名          --删除默认约束

4、测试练习

--给表stu_info中的s_score列添加默认值为0.00
ALTER TABLE stu_info
ADD constraint de_student default'0.00' for s_score

猜你喜欢

转载自blog.csdn.net/Viewinfinitely/article/details/120670772