怎么用sql命令语句写check约束

 我来答
仁昌爱娱乐
高粉答主

2020-02-15 · 专注关心娱乐
仁昌爱娱乐
采纳数:760 获赞数:459855

向TA提问 私信TA
展开全部

用sql命令语句写CHECK约束的格式为CHECK (约束条件)。

如:

CREATE TABLE 成绩信息(

成绩编号 int NOT NULL PRIMARY KEY,

学生编号 nchar(50) NOT NULL,

考试编号 nchar(10) NOT NULL,

课程编号nchar(10) NOT NULL,

分数 nchar(10) NOT NULL CHECK (分数in(between '0' and '100'))

在数据库中,CHECK 约束是指约束表中某一个或者某些列中可接受的数据值或者数据格式。CHECK约束可以应用于一个或者多个列,也可以将多个CHECK 约束应用于一个列。当除去某个表时,对这个表的CHECK 约束也将同时被去除。

扩展资料:

CHECK 约束不接受计算结果为 FALSE 的值。因为空值的计算结果为 UNKNOWN,所以如果赋值表达式中存在这些值,则约束可能会被覆盖而不起作用。如果 CHECK 约束检查的条件对于表中的任何行都不是 FALSE,它将返回 TRUE。

如果刚创建的表没有任何行,则此表的任何 CHECK 约束都视为有效。执行 DELETE 语句时不验证 CHECK 约束。因此,使用特定类型的 CHECK 约束对表执行 DELETE 语句时可能会产生意外结果。

爱可生云数据库
2020-10-14 · MySQL开源数据库领先者
爱可生云数据库
爱可生,金融级开源数据库和数据云服务整体解决方案提供商;优秀的开源数据库技术,企业级数据处理技术整体解决方案提供商;私有云数据库云服务市场整体解决方案提供商。
向TA提问
展开全部

现在要说的是在列这一层次过滤的基于表定义之前就规范好的 CHECK 约束。(MySQL 版本 >= 8.0.16)

  • mysql> create table f1 (r1 int constraint tb_f1_r1_chk1 check (mod(r1,3)=0));

  • Query OK, 0 rows affected (0.03 sec)

  • mysql> create table f2 (r1 int constraint tb_f2_r1_chk1 check (mod(r1,3)=0) not enforced);

  • Query OK, 0 rows affected (0.02 sec)

  • 这里 CHECK 约束的相关限制如下:

    1. constraint 名字在每个数据库中唯一。

    也就是说单个数据库里不存在相同的两个 constraint,如果不定义,系统自动生成一个唯一的约束名字。

    2. check 约束针对语句 insert/update/replace/load data/load xml 生效;针对对应的 ignore 语句失效。

    3. 并非每个函数都可以使用,比如函数结果不确定的:NOW(),CONNECTION_ID(),CURRENT_USER()。

    4. 不适用于存储过程和存储函数。

    5. 系统变量不适用。

    6. 子查询不适用。

    7. 外键动作(比如 ON UPDATE, ON DELETE) 不适用。

    8. enforced 默认启用,如果单独加上 not enforced ,check 约束失效。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mune2027
2010-04-28 · TA获得超过408个赞
知道小有建树答主
回答量:123
采纳率:0%
帮助的人:143万
展开全部
有两种方法了
一种是:在列级进行
create table Teachers(
···
Age int check(age>10 and age<30),
···
)
还有一种在表级进行
create table Teachers(
···
Age int ,
···
constraint ck_age check (age > 18 and age <30)

)

或者就像楼上说的
使用alter table 语句进行check 约束
alter table Teachers
add constraint ck_age check(age >18 and age <30)
同时还可以删去check约束
alter table Teachers
drop constraint ck_age

希望对你有帮助···
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Bal_Bqa
2010-04-28 · 超过42用户采纳过TA的回答
知道答主
回答量:132
采纳率:0%
帮助的人:102万
展开全部
1.增加check约束:alter table 表名 add check(字段约束表达式),这个主要用于在表建立好了之后新增加上去的。
2.建表时添加check约束:字段名 属性1 属性2 ··· check(字段约束表达式),这个主要适用于在建表的同时添加check约束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zj5815
2010-04-28 · TA获得超过2069个赞
知道小有建树答主
回答量:1297
采纳率:0%
帮助的人:1221万
展开全部
CHECK 约束用于限制列中的值的范围

如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:MySQL / SQL Server / Oracle / MS Access
下面的 SQL 在 "Persons" 表创建时为 "Id_P" 列创建 CHECK 约束。CHECK 约束规定 "Id_P" 列必须只包含大于 0 的整数。

--My SQL:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)
--SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL CHECK (Id_P>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式