- SQL Server 2017从零开始学(视频教学版)
- 李小威
- 863字
- 2021-03-26 09:45:21
7.5.1 在创建表时添加检查约束
在一张数据表中,检查约束可以有多个,但是每一列只能设置一个检查约束。用户可以在创建表时添加检查约束。建表时添加检查约束的语法格式有以下两种。
1.添加列级检查约束
添加列级检查约束的语法格式如下:
CREATE TABLE table_name ( COLUMN_NAME1 DATATYPE CHECK(expression), COLUMN_NAME2 DATATYPE, COLUMN_NAME3 DATATYPE …… );
主要参数介绍如下:
• CHECK:检查约束的关键字。
• expression:约束的表达式,可以是1个条件,也可以同时有多个条件。例如:设置该列的值大于10,那么表达式可以写成COLUMN_NAME1>10;如果设置该列的值在10~20之间,就可以将表达式写成COLUMN_NAME1>10 and COLUMN_NAME1<20。
【例7.13】在创建水果表时,给水果价格列添加检查约束,要求水果的价格大于0且小于20。在【查询编辑器】窗口中输入如下T-SQL语句:
CREATE TABLE fruit ( id INT PRIMARY KEY, name VARCHAR(20), price DECIMAL(6,2) CHECK(price>0 and price<20), origin VARCHAR(20), tel VARCHAR(20) , remark VARCHAR(200), );
单击【执行】按钮,即可完成添加检查约束的操作,并在【消息】窗格中显示命令已成功完成的信息提示,如图7-29所示。
图7-29 执行T-SQL语句
打开水果表的设计界面,选择添加检查约束的列,右击鼠标,在弹出的快捷菜单中选择【CHECK约束】菜单命令,即可打开【CHECK约束】对话框,在其中查看添加的检查约束,如图7-30所示。
图7-30 【CHECK约束】对话框
2.添加表级检查约束
添加表级检查约束的语法格式如下:
CREATE TABLE table_name ( COLUMN_NAME1 DATATYPE, COLUMN_NAME2 DATATYPE, COLUMN_NAME3 DATATYPE, …… CONSTRAINT ck_name CHECK(expression), CONSTRAINT ck_name CHECK(expression), ….. );
主要参数介绍如下:
• ck_name:检查约束的名字,必须写在CONSTRAINT关键字的后面,并且检查约束的名字不能重复。检查约束的名字通常是以ck_开头,如果CONSTRAINT ck_name部分省略,系统会自动为检查约束设置一个名字,命名规则为“ck_表名_列名_随机数”。
• CHECK(expression):检查约束的条件。
【例7.14】在创建员工信息表时,给员工工资列添加检查约束,要求员工的工资大于1800且小于3000。在【查询编辑器】窗口中输入如下T-SQL语句:
单击【执行】按钮,即可完成添加检查约束的操作,并在【消息】窗格中显示命令已成功完成的信息提示,如图7-31所示。
图7-31 添加表级检查约束
打开员工信息表的设计界面,选择添加检查约束的列,右击鼠标,在弹出的快捷菜单中选择【CHECK约束】菜单命令,即可打开【CHECK约束】对话框,在其中查看添加的检查约束,如图7-32所示。
图7-32 查看添加的表级检查约束
注意
检查约束可以帮助数据表检查数据,确保数据的正确性,但是也不能给数据表中的每一列都设置检查约束,否则会影响数据表中数据操作的效果。因此,在给表设置检查约束前,也要尽可能地确保检查约束是否真的有必要。