数据库中CHECK约束

小周353 2023-11-18 16:33:46

CHECK约束用来限制用户输入某一个列的数据,即在该列中只能输入指定范围的数据。CHECK约束的作用非常类似于(FOREIGN KEY约束)外键约束,两者都是限制某个列的取值范围,但是外键是通过其他表来限制列的取值范围,CHECK约束是通过指定的逻辑表达式来限制列的取值范围。

T-SQL语句创建CHECK约束语法格式有:

  • 创建表时创建CHECK约束
CREATE TABLE table_name  /*指定表名*/
(
column_name datatype
[check_name] CHECK (logical_expression)   /*CHECK约束表达式*/
[,...n]
)
  • 修改表时创建CHECK约束
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

 

 

...全文
282 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

489

社区成员

发帖
与我相关
我的任务
社区描述
闽江学院IT领域专业的学生社区
社区管理员
  • c_university_1157
  • 枫_0329
  • 傅宣
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧