MySQL 检查约束(CHECK)是用来检查数据表中字段值有效性的一种手段,可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。设置检查约束时要根据实际情况进行设置,这样能够减少无效数据的输入。

在《MySQL默认值》和《MySQL非空约束》中讲解的默认值约束和非空约束也可看作是特殊的检查约束。

选取设置检查约束的字段

检查约束使用 CHECK 关键字,具体的语法格式如下:

CHECK

其中,“表达式”指的就是 SQL 表达式,用于指定需要检查的限定条件。

若将 CHECK 约束子句置于表中某个列的定义之后,则这种约束也称为基于列的 CHECK 约束。

在更新表数据的时候,系统会检查更新后的数据行是否满足 CHECK 约束中的限定条件。MySQL 可以使用简单的表达式来实现 CHECK 约束,也允许使用复杂的表达式作为限定条件,例如在限定条件中加入子查询。

注意:若将 CHECK 约束子句置于所有列的定义以及主键约束和外键定义之后,则这种约束也称为基于表的 CHECK 约束。该约束可以同时对表中多个列设置限定条件。

在创建表时设置检查约束

一般情况下,如果系统的表结构已经设计完成,那么在创建表时就可以为字段设置检查约束了。

创建表时设置检查约束的语法格式如下:

CHECK()

例 1

在 test_db 数据库中创建 tb_emp7 数据表,要求 salary 字段值大于 0 且小于 10000,SQL 语句和运行结果如下所示。

mysql> CREATE TABLE tb_emp7

-> (

-> id INT(11) PRIMARY KEY,

-> name VARCHAR(25),

-> deptId INT(11),

-> salary FLOAT,

-> CHECK(salary>0 AND salary<100),

-> FOREIGN KEY(deptId) REFERENCES tb_dept1(id)

-> );

Query OK, 0 rows affected (0.37 sec)

在修改表时添加检查约束

如果一个表创建完成,可以通过修改表的方式为表添加检查约束。

修改表时设置检查约束的语法格式如下:

ALTER TABLE tb_emp7 ADD CONSTRAINT CHECK()

例 2

修改 tb_emp7 数据表,要求 id 字段值大于 0,SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_emp7

-> ADD CONSTRAINT check_id

-> CHECK(id>0);

Query OK, 0 rows affected (0.19 sec)

Records: 0 Duplicates: 0 Warnings: 0

删除检查约束

修改表时删除检查约束的语法格式如下:

ALTER TABLE DROP CONSTRAINT ;

例 3

删除 tb_emp7 表中的 check_id 检查约束,SQL 语句和运行结果如下所示:

mysql> ALTER TABLE tb_emp7

-> DROP CONSTRAINT check_id;

Query OK, 0 rows affected (0.19 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql的check约束怎么设置_MySQL检查约束(CHECK)相关推荐

  1. mysql的check约束怎么设置_MySQL怎么使用check约束

    MySQL使用check约束的方法:1.如果要设置CHECK约束的字段范围小,并且比较容易列举全部的值,可以将该字段的类型设置为enum类型或set类型.2.如果需要设置CHECK约束的字段范围大,且 ...

  2. MySQL中字段约束有哪些_mysql字段约束

    为了确保数据的完整性和唯⼀性,关系型数 据库通过约束机制来实现目. 一. unique 唯一性约束 值不可重复: 二. not null 非空约束 值不可为空: 三. default  默认值约束 当 ...

  3. mysql约束深入了解_MySQL 的约束

    约束是添加在列上, 用来约束列的! 1. 主键约束(表中的某行的唯一标识) 主键的特点: 非空 唯一 被引用 创建表时, 指定主键的两种方式: // 需求: 指定 sid 列为主键列, 即为 sid ...

  4. MySQL慢日志超时时间设置_Mysql的慢日志

    一.开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 二.慢日志参数: slow_query_log 慢查询开启状态 slow_q ...

  5. mysql的check约束怎么设置_mysql 的 check约束

    mysql的check约束在当前mysql版本中依然是个摆设(mysql版本5.7.9) 那么要怎么取现救国,实现类似check约束的功能呢? 解决方案: 1.使用触发器,来完成类似check的约束验 ...

  6. mysql的check约束怎么设置_Mysql中怎样实现check约束?

    现在要说的是在列这一层次过滤的基于表定义之前就规范好的 CHECK 约束.(MySQL 版本 >= 8.0.16)mysql> create table f1 (r1 int constr ...

  7. mysql查看数据表是否损坏_mysql 检查数据库是否损坏

    MySQL主从复制之主库宕机处理 主库宕机  Master DOWN机-企业场景一主多从宕机从库切换主继续和从同步过程详解 登陆从库,show processlist; 查看两个线程的更新状态: 查看 ...

  8. mysql字符集与校对规则设置_MySQL 字符集与校对规则

    1.创建对象时的默认值MySQL 的设置可以分为两类 , 创建对象时的默认值 , 在服务器和客户端通信时的设置 . MySQL 服务器有默认的字符集和校对规则 , 每个数据库也有自己的默认值 . 每个 ...

  9. mysql字符集与校对规则设置_mysql中的字符集和校对规则(mysql校对集)

    1.简要说明介绍 字符集和校对规则 字符集是一套符号和编码.校对规则是在字符集内用于比较字符的一套规则. MySql在collation提供较强的支持,oracel在这方面没查到相应的资料. 不同字符 ...

最新文章

  1. 关于数据库中NULL的描述,下列哪些说法符合《阿里巴巴Java开发手册》
  2. Android之网络丢包
  3. iptables基础篇
  4. python写内存挂_编写高效内存Python代码的3个技巧
  5. ASP.NET Core应用程序的参数配置及使用
  6. c语言tmplink,为了便于阅读,偿试把BLHeli的汇编源程序改成C语言格式
  7. linux首次安装mysql密码是多少,Linux小白,初次安装MySQL,大神请绕路
  8. javascript+div实现鼠标划过,切换层效果
  9. 模拟太阳系的html,纯HTML5制作的震撼太阳系网页
  10. ipad是买WiFi版的好,还是买4G版的好?
  11. linux上设置svn账户权限设置密码,Linux:如何在svn中设置“全局”用户/密码/组文件...
  12. mock测试_【Postman】16 Postman使用mock进行挡板测试(1)
  13. 面向对象之封装的成本价值
  14. [POJ1035]Spell checker
  15. 博弈论——拍卖会(Auctions)
  16. Adam:大规模分布式机器学习框架
  17. Asp 操作Access数据库时出现死锁.ldb的解决方法
  18. Oracle问题imp-10019:由于ORACLE错误12899而拒绝行
  19. 高中数学一对一辅导如何用半年时间数学从60分到130分逆袭诀窍
  20. html img设置形状,图片img直接设置样式

热门文章

  1. 锤子Smartisan系统杀后台,推送通知,闲鱼收不到消息或者延迟问题解决
  2. 【译】AN1297:使用Silicon Labs蓝牙协议栈的定制测向解决方案
  3. ARM中MRS和MSR汇编指令
  4. CainAbel工具的下载和使用
  5. Python中datetime.timedelta的应用
  6. v-md-editor详解(MarkDown编辑器组件)
  7. 用Python玩转PDF的各种骚操作
  8. 疫情持续肆虐,Jelurida为抗疫项目保驾护航
  9. 2D中小游戏开发C++游戏教程
  10. python中函数的返回值,你了解吗?