失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > SQL数据库语言基础之SqlServer数据表的六大约束(主键 外键 检查 非空 唯一性 默

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

时间:2023-10-17 11:04:03

相关推荐

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

文章目录

一、主键约束(primary key)二、外键约束(foreign key)三、检查约束(check)四、非空约束(not null)五、唯一性约束(unique)六、默认值约束(default)

一、主键约束(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_infoADD 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_infoADD 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_infoADD constraint ck_student CHECK(s_sex='男' or s_sex='女')--分数大于0且小于100ALTER TABLE stu_infoADD 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_infoALTER 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_infoADD 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.00ALTER TABLE stu_infoADD constraint de_student default'0.00' for s_score

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

如果觉得《SQL数据库语言基础之SqlServer数据表的六大约束(主键 外键 检查 非空 唯一性 默》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。