文章目录
一、主键约束(primary key)
1、主键说明
(1)约束唯一标识数据库表中的每条记录
(2)主键必须包含唯一的值
(3)主键列不能为空
(4)每个表都应该有个主键,但只能有一个主键
2、约束作用
主键约束相当于NOT NULL + UNIQUE,确保某列(或多个列的结合)有唯一标识,有助于更快地找到一个表中特定的记录。
3、在管理器创建主键
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、管理器创建外键
在主键上右击——>关系——>添加——>在下拉列表里选择需要设定的主键和外键。
注意:主键和外键的类型必须相同,若外键为其他表中的列,则必须为其他表中的主键。
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约束——>然后添加需要的条件语句
要求分数小于等于100分:
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、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、管理器中
右击——>索引/键——>选择唯一键,则设定为了唯一性约束。
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