SQL Server数据库有哪些约束

在创建数据表的过程中设置列的属性并实施数据完整性

SQL Server提供了以下四种约束:

1.实体完整性约束

2.域完整性约束

3.引用完整性约束

4.自定义完整性约束

创建数据库表需要设置表的

1.列名

2.数据类型

3.是否允许为空

4.主键

5.必要的默认值

6.标识列

7.检查约束

8.主外键关系建立后在操作数据时的注意事项

 

 


数据完整性有哪几种?各自作用是什么?

 

实体完整性

1.能够唯一标识表中的每一条记录

2.实现方式:主键、唯一键、IDENTITY属性

域完整性

1.表中特定列数据的有效性,确保不会输入无效的值

2.实现方式:类型、缺省值、约束、空值

引用完整性

1.维护表间数据的有效性、完整性

2.实现方式:建立外键联系另一表的主键

自定义完整性

1.根据业务处理流程定义的特定业务规则

2.实现方式:存储过程、触发器、规则

 

使用约束的目的是什么?

确保表中数据完整性

常用的约束类型有哪些?

1.主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空

2.唯一约束(Unique Constraint):要求该列数据唯一,允许为空,但只能出现一个空值

3.检查约束(Check Constraint):某列取值范围限制、格式限制等

4.默认约束(Default Constraint):某列的默认值

5.外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的哪列

 


 

选择主键的原则

1.最少性:尽量选择单个键作为主键

2.稳定性:尽量选择数值更新少的列作为主键

 

 

 

约束方法:唯一约束、主键约束、标识列

约束方法:限制数据类型、检查约束、外键约束、默认值、非空约束

如果两列或多列组合起来唯一标识表中的每一行,该主键叫“复合主键”

 


 

 实战代码:

需求:

有一个【user】表,字段为:

 
字段名 约束要求
id  主键,自增1,不为空
name 账号长度大于等于6位,唯一约束(该字段不能有重复),不为空
password 密码为MD5 32位密文,长度必须为32位,不为空
sex 性别必须为“男”或“女”
age 年龄必须大于0,小于100,默认0
email 邮箱可以为空或者邮箱必须包含“@”和“.”

 

实现:

id

1.主键:

右键ID字段》设为主键;

2.自增1

在下面“列属性”中找到“标识规范”》展开》(是标识)选择“是”》标识增量:1》标识种子:1

name

1.账号长度大于等于6位:

鼠标指到该字段》右键》check约束》添加》标识,名称:CK_user_name》常规,表达式:(len([name])>=(6))

2.唯一约束(该字段不能有重复)

鼠标指到该字段》右键》索引/建》常规,类型:唯一键 》常规,列:name

password

1.长度必须为32位:

鼠标指到该字段》右键》check约束》添加》标识,名称:CK_user_password》常规,表达式:(len([password])=(32))

sex

1.性别必须为“男”或“女”:

鼠标指到该字段》右键》check约束》添加》标识,名称:CK_user_sex》常规,表达式:([sex]='男' OR [sex]='女')

性别还可以 sex in('男','女')

age

1.年龄必须大于0,小于100:

鼠标指到该字段》右键》check约束》添加》标识,名称:CK_user_age》常规,表达式:([age]>=(0) AND [age]<=(100))

 性能比较好的写法是  age between 0 and 100

2.默认0:

在下面“列属性”中找到“默认值或绑定”》输入:0

email

1.邮箱可以为空或者邮箱必须包含“@”和“.”:

鼠标指到该字段》右键》check约束》添加》标识,名称:CK_user_email》常规,表达式:([email]='' OR [email] like '%_@%_._%')

 

延展阅读:

 

SQL 通配符

在 SQL 中,通配符与 SQL LIKE 操作符一起使用。

SQL 通配符用于搜索表中的数据。

在 SQL 中,可使用以下通配符:

 

通配符描述
% 替代 0 个或多个字符
_ 替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]

[!charlist]
不在字符列中的任何单一字符

posted @ 2019-02-27 14:39  橙-极纪元JJYCheng  阅读(1277)  评论(0编辑  收藏  举报