489
社区成员
发帖
与我相关
我的任务
分享
CHECK约束用来限制用户输入某一个列的数据,即在该列中只能输入指定范围的数据。CHECK约束的作用非常类似于(FOREIGN KEY约束)外键约束,两者都是限制某个列的取值范围,但是外键是通过其他表来限制列的取值范围,CHECK约束是通过指定的逻辑表达式来限制列的取值范围。
T-SQL语句创建CHECK约束语法格式有:
CREATE TABLE table_name /*指定表名*/
(
column_name datatype
[check_name] CHECK (logical_expression) /*CHECK约束表达式*/
[,...n]
)
ALTER TABLE table_name
ADD CONSTRAINT check_name CHECK (logical_expression)
删除CHECK约束
T-SQL语句的ALTER TABLE 命令可以删除CHECK约束
一个列上可以定义多个CHECK约束;当执行INSERT语句或者UPDATE语句时,该约束验证相应的数据是否满足CHECK约束的条件。但是,执行DELETE语句时不检查CHECK约束。
实际应用:
1、在Student1数据库中创建表books,其中包含CHECK约束(列约束)。
USE Student1
GO
CREATE TABLE books
(
book_id smallint PRIMARY KEY,/*书号*/
book_name nvarchar(20) NOT NULL,/*书名*/
max_lvl tinyint NOT NULL CHECK(max_lvl<=250)/*书允许的最高价格CHECK约束*/
)
2、在Student1 数据库中创建表“身份信息表”,其中,包含CHECK约束(表约束)。
USE Student1
GO
CREATE TABLE 身份信息
(
id_no char(18) PRIMARY KEY,/*身份证号*/
name nvarchar(10) NOT NULL,/*姓名*/
startdate date NOT NULL,/*有效开始日期*/
enddate date NOT NULL,/*有效结束日期*/
CHECK (startdate<enddate)
)
3、通过修改Student1数据库的“成绩”表,增加成绩字段的CHECK约束。
USE Student1
GO
CREATE TABLE 成绩
ADD CONSTRAINT cj_constraint CHECK (成绩>=0 and 成绩<=100)
4、删除上面3创建的CHECK约束。
USE Student1
GO
CREATE TABLE 成绩
DROP CONSTRAINT cj_constraint