加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server 数据库之数据约束

发布时间:2022-10-18 23:01:03 所属栏目:MsSql教程 来源:互联网
导读: 数据约束唯一性约束检查约束默认约束外键约束1. 概述
在设计一张数据表的时候不仅要对表中所用字段和内容进行考虑,还有一个更加重要的问题,即对数据完整性的设计;
数据完整性是指数据的

数据约束唯一性约束检查约束默认约束外键约束1. 概述

在设计一张数据表的时候不仅要对表中所用字段和内容进行考虑,还有一个更加重要的问题,即对数据完整性的设计;

数据完整性是指数据的精确性和可靠性,防止表中出现不符合既定设置的数据(非法数据),这些数据库可能是用户没有根据规则输入的数据,也可能是黑客对于数据库破解做的一些特定尝试,确保数据的完整性对于整个数据库系统时非常重要的;

在 SQL Server 数据库中,常用约束来对数据表进行完整性设置,主要的约束方式有5种:主键约束、唯一性约束、检查约束、默认约束、外键约束;

2. 主键约束

用主键约束可防止无效数据,主键约束指能在表中定义一个字段作为表的主要关键字,主键是表中记录的唯一标识,每个表中只能有一个 PRIMARY KEY约束,并作为PRIMARY KEY约束的字段不能为空值,也不能出现重复;

若在一个表中有多个列作为主键约束,则一列中的值可以是重复的,但被主键约束列中的组合值一定要是唯一的;

2.1 给数据表设置主键约束

右击数据表 SNo → 选择设计

在打开的dbo.SNo中选择要设置主键的列,右击选择主键,即可完成主键约束

注意: 再用 SQL 语句创建数据表时添加主键约束(PRIMARY KEY)语句;

3. 唯一性约束

唯一性约束防止重复数据,唯一性约束能确保数据表在主键列中字段的唯一性;

保证其中的数据只出现一次,不会出现重复的现象,在 SQL Server 中能对一个表中的多个字段进行 UNIQUE约束,使用 UNIQUE约束要注意以下几点要素:

UNIQUE 约束是允许空值的;UNIQUE 约束能在一个数据表中设立多个;使用了UNIQUE 约束的字段会建立唯一性索引;默认情况下,UNIQUE 约束创建的是非聚集索引;

例子 1:用对象资源管理器(SSMS)进行 UNIQUE 约束的步骤如下:

在 SSMS 中展开 LMS 数据库 → 右击dbo.S数据表 → 选择设计 → 在dbo.S数据表中右击姓名字段 → 选择索引/键;

索引/键对话框 → 添加,添加一个唯一性约束;

点击新建的IX_S索引,在常规 → 列 → 选择姓名,确定,即可完成唯一性约束的设置;

4. 检查约束

检查约束是对录入到数据表中的数据所设置的检查条件,以限制输入值,保证数据库的完整性;

通过逻辑表达式来对字段的值进行输入内容的限定;

在使用检查约束时,要注意以下几点:

例子 2:对学生表S 中的性别字段进行检查约束的设置,只能输入“男”或“女”,操作步骤如下:

右击 dbo.S数据表 → 设计 ,在表设计窗口右击性别字段 → 选择检查性约束;单击添加,添加一条新的条件约束;选中新建的约束,在表达式中输入条件表达式([性别]=‘男’ OR [性别]=‘女’);

注意: 包括隐式或显式数据类型转换的约束可能会导致某些操作失败;

5. 默认约束

默认约束是指当某一字段没有提供数据内容时,系统自动给该字段赋予一个设定好的值;当必须向表中加载一行数据但不知道某一段字段值的值或该值不存在时,能使用默认约束;

默认约束能使用常量、函数、空值作为默认值,使用默认约束时,要注意以下几点:

每个字段只能有一个默认约束;若默认约束设置的值大于字段所允许的长度,则截取到字段允许长度;不能加入到带有IDENTITY属性或TIMESTAMP 的字段上;若字段的数据类型为用户自定义类型,且已有默认值绑定在此数据类型上,则不允许再次使用默认值;6. 外键约束

外键约束是在两个数据之间建立和加强链接的组合mssql 空值,可控制在外键表中存储的数据;

在外键引用中,当包含一个表的主键值的一个或多个列被另一个表中的一个或多个列引用时,就在这两个表之间创建了链接;

使用外键约束要注意以下几点:

外键约束是对字段参照完整性的设置;外键约束不支持自动创建索引,需要手动建立;表中最多能使用31个外键约束;临时表中不能建立外键约束;主键和外键的数据类型必须严格匹配;

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!