- SQL Server 入门很轻松(微课超值版)
- 云尚科技
- 814字
- 2021-04-04 00:09:40
5.5 CHECK约束
表中的字段值不仅必须与该字段的数据类型一致,还应具备合理的意义,比如学生表中学生的出生日期,如果现实该学生当前年龄大于100岁或者小于10岁,就是不合理的。这种对字段值的进一步限制被称为域的完整性,可以通过CHECK约束来实现,CHECK也被称为检查约束。
5.5.1 创建表时创建CHECK约束
在一张数据表中,检查约束可以有多个,但是每一列只能设置一个检查约束,用户可以在创建表时添加检查约束。
1. 创建表时创建检查约束
创建表时创建检查约束的语法格式如下。
主要参数介绍如下。
- CHECK:检查约束的关键字。
- expression:约束的表达式,可以是1个条件,也可以同时有多个条件。例如:设置该列的值大于10,那么表达式可以写成COLUMN_NAME1>10;如果设置该列的值在10~20,就可以将表达式写成COLUMN_NAME1>10 and COLUMN_NAME1<20。
实例11:在创建水果信息表时,给水果价格列添加检查约束,要求水果的价格大于0小于20。在“查询编辑器”窗口中输入如下语句。
单击“执行”按钮,即可完成创建检查约束的操作,如图5-57所示。打开水果表的设计界面,选择添加检查约束的列,右击,在弹出的快捷菜单中选择“CHECK约束”命令,即可打开“CHECK约束”对话框,在其中查看添加的检查约束,如图5-58所示。
图5-57 执行创建检查约束语句
图5-58 “检查约束”对话框
注意:检查约束可以帮助数据表检查数据,确保数据的正确性,但是也不能给数据表中的每一列都设置检查约束,否则,就会影响数据表中数据操作的效果。因此,在给表设置检查约束前,也要尽可能地确保设置检查约束是否真的有必要。
2. 以图形向导方式创建检查约束
(1)登录到SQL Server 2017数据库表,在“对象资源管理器”窗口中,打开要创建数据表的数据库节点,选择表节点,右击,在弹出的快捷菜单中选择“新建”→“表”命令,进入新建表工作界面,如图5-59所示。
(2)录入员工信息表的列信息,如图5-60所示。
图5-59 新建表设计界面
图5-60 录入员工信息表
(3)单击“保存”按钮,打开“选择名称”对话框,在其中输入表名“员工信息表”,单击“确定”按钮,即可保存创建的数据表,如图5-61所示。
(4)选择需要添加检查约束的列,这里选择“基本工资”列,右击,在弹出的快捷菜单中选择“CHECK约束”命令,如图5-62所示。
图5-61 “选择名称”对话框
图5-62 “CHECK约束”命令
(5)打开“CHECK约束”对话框,单击“添加”按钮,进入检查约束编辑状态,如图5-63所示。
图5-63 检查约束编辑状态
(6)选择表达式,在右侧输入检查约束的条件,这里输入“基本工资>1800 AND基本工资<3000”,如图5-64所示。
(7)单击“关闭”按钮,关闭“CHECK约束”对话框,然后单击“保存”按钮,保存数据表,即可完成检查约束的创建操作。
图5-64 输入表达式
5.5.2 修改表时创建CHECK约束
如果在创建表时没有直接创建检查约束,这时可以在修改表时创建检查约束。
1. 使用ALTER语句创建检查约束
修改表时创建检查约束可以通过ALTER TABLE语句来完成,具体的语法格式如下。
ALTER TABLE table_name ADD CONSTRAINT ck_name CHECK (expression);
主要参数介绍如下。
- table_name:表名,它是要添加检查约束列所在的表名。
- CONSTRAINT ck_name:添加名为ck_name的约束。该语句可以省略,省略后系统会为添加的约束自动生成一个名字。
- CHECK (expression):检查约束的定义,CHECK是检查约束的关键字,expression是检查约束的表达式。
实例12:首先创建员工信息表,然后再给员工工资列创建检查约束,要求员工的工资大于1800小于3000。在“查询编辑器”窗口中输入如下语句。
ALTER TABLE 员工信息表 ADD CHECK (基本工资>1800 AND 基本工资<3000);
单击“执行”按钮,即可完成创建检查约束的操作,如图5-65所示。打开员工信息表的设计界面,选择添加检查约束的列,右击,在弹出的快捷菜单中选择“CHECK约束”命令,即可打开“检查约束”对话框,在其中查看添加的检查约束,如图5-66所示。
图5-65 添加检查约束
图5-66 查看添加的检查约束
2. 以图形向导方式添加检查约束
(1)选择需要创建检查约束的表,这里选择已经创建好的水果信息表,右击,在弹出的快捷菜单中选择“设计”选项,进入表的设计工作界面,再右击,在弹出的快捷菜单中选择“CHECK约束”命令,如图5-67所示。
(2)打开“检查约束”对话框,单击“添加”按钮,进入检查约束编辑状态,选择表达式,然后右侧输入检查约束的条件,这里输入“水果价格>0 AND水果价格< 20”,如图5-68所示。
图5-67 选择“CHECK约束”命令
图5-68 “检查约束”对话框
(3)单击“关闭”按钮,关闭“CHECK约束”对话框,然后单击“保存”按钮,保存数据表,即可完成检查约束的添加。
5.5.3 删除表中的CHECK约束
当不再需要CHECK约束时,可以将其删除,删除CHECK约束的语法格式如下。
ALTER TABLE table_name DROP CONSTRAINT ck_name;
主要参数介绍如下。
- table_name:表名。
- ck_name:检查约束的名字。
实例13:删除员工信息表中添加的检查约束,检查约束的条件为员工的工资大于1800小于3000,名字为:CK__员工信息表__基本工资__5AEE82B9,在“查询编辑器”窗口中输入如下语句。
ALTER TABLE 员工信息表 DROP CONSTRAINT CK__员工信息表__基本工资__5AEE82B9;
图5-69 删除检查约束
单击“执行”按钮,即可完成删除检查约束的操作,如图5-69所示。打开员工信息表的设计界面,选择删除检查约束的列,右击,在弹出的快捷菜单中选择“CHECK约束”命令,即可打开“检查约束”对话框,在其中可以看到添加的检查约束已经被删除,如图5-70所示。
在SQL Server Management Studio中,删除检查约束与添加检查约束很相像,只需要在“检查约束”对话框中选择要删除的检查约束,然后单击“删除”按钮,最后再单击“保存”按钮,即可删除数据表中添加的检查约束,如图5-71所示。
图5-70 “检查约束”对话框
图5-71 删除选择的检查约束
微视频