在创建数据表的过程中设置列的属性并实施数据完整性
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
1.邮箱可以为空或者邮箱必须包含“@”和“.”:
鼠标指到该字段》右键》check约束》添加》标识,名称:CK_user_email》常规,表达式:([email]='' OR [email] like '%_@%_._%')
延展阅读:
SQL 通配符
在 SQL 中,通配符与 SQL LIKE 操作符一起使用。
SQL 通配符用于搜索表中的数据。
在 SQL 中,可使用以下通配符:
通配符 | 描述 |
% | 替代 0 个或多个字符 |
_ | 替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist] 或 [!charlist] | 不在字符列中的任何单一字符 |