check约束 怎么用sql命令语句写check约束
大家好,今天给各位分享check约束的一些知识,其中也会对怎么用sql命令语句写check约束进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
男女的check约束是什么
create table表名
(
sex char(2) check(sex='男' or sex='女')not null
)
默认性别为男的代码如下:
create table学生表
(
学号 char(5) not null primary key,
姓名 varchar(10) not null,
性别 char(2) default'男' check(性别 in('男','女'))//其中default'男'就是默认性别为男。
)
扩展资料:
使用其他方法限制性别只能写男或女:
ALTERTALBE[表名]
ADDCONSTRAINT约束名CHECK(列名in('男','女'))not null
注意:CHECK约束可以应用于一个或者多个列,也可以将多个CHECK约束应用于一个列。
当除去某个表时,对这个表的CHECK约束也将同时被去除。
参考资料:百度百科-check约束
怎么用sql命令语句写check约束
用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语句时可能会产生意外结果。
数据库check约束
现在要说的是在列这一层次过滤的基于表定义之前就规范好的 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约束失效。
check约束叫什么约束
现在要说的是在列这一层次过滤的基于表定义之前就规范好的 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约束失效。
感谢您的阅读!希望本文对解决您关于check约束的问题有所帮助。如果您还有其他疑问,欢迎随时向我们提问。