mysql的check约束怎么设置_MySQL检查约束(CHECK)
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)相关推荐
- mysql的check约束怎么设置_MySQL怎么使用check约束
MySQL使用check约束的方法:1.如果要设置CHECK约束的字段范围小,并且比较容易列举全部的值,可以将该字段的类型设置为enum类型或set类型.2.如果需要设置CHECK约束的字段范围大,且 ...
- MySQL中字段约束有哪些_mysql字段约束
为了确保数据的完整性和唯⼀性,关系型数 据库通过约束机制来实现目. 一. unique 唯一性约束 值不可重复: 二. not null 非空约束 值不可为空: 三. default 默认值约束 当 ...
- mysql约束深入了解_MySQL 的约束
约束是添加在列上, 用来约束列的! 1. 主键约束(表中的某行的唯一标识) 主键的特点: 非空 唯一 被引用 创建表时, 指定主键的两种方式: // 需求: 指定 sid 列为主键列, 即为 sid ...
- MySQL慢日志超时时间设置_Mysql的慢日志
一.开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 二.慢日志参数: slow_query_log 慢查询开启状态 slow_q ...
- mysql的check约束怎么设置_mysql 的 check约束
mysql的check约束在当前mysql版本中依然是个摆设(mysql版本5.7.9) 那么要怎么取现救国,实现类似check约束的功能呢? 解决方案: 1.使用触发器,来完成类似check的约束验 ...
- mysql的check约束怎么设置_Mysql中怎样实现check约束?
现在要说的是在列这一层次过滤的基于表定义之前就规范好的 CHECK 约束.(MySQL 版本 >= 8.0.16)mysql> create table f1 (r1 int constr ...
- mysql查看数据表是否损坏_mysql 检查数据库是否损坏
MySQL主从复制之主库宕机处理 主库宕机 Master DOWN机-企业场景一主多从宕机从库切换主继续和从同步过程详解 登陆从库,show processlist; 查看两个线程的更新状态: 查看 ...
- mysql字符集与校对规则设置_MySQL 字符集与校对规则
1.创建对象时的默认值MySQL 的设置可以分为两类 , 创建对象时的默认值 , 在服务器和客户端通信时的设置 . MySQL 服务器有默认的字符集和校对规则 , 每个数据库也有自己的默认值 . 每个 ...
- mysql字符集与校对规则设置_mysql中的字符集和校对规则(mysql校对集)
1.简要说明介绍 字符集和校对规则 字符集是一套符号和编码.校对规则是在字符集内用于比较字符的一套规则. MySql在collation提供较强的支持,oracel在这方面没查到相应的资料. 不同字符 ...
最新文章
- 关于数据库中NULL的描述,下列哪些说法符合《阿里巴巴Java开发手册》
- Android之网络丢包
- iptables基础篇
- python写内存挂_编写高效内存Python代码的3个技巧
- ASP.NET Core应用程序的参数配置及使用
- c语言tmplink,为了便于阅读,偿试把BLHeli的汇编源程序改成C语言格式
- linux首次安装mysql密码是多少,Linux小白,初次安装MySQL,大神请绕路
- javascript+div实现鼠标划过,切换层效果
- 模拟太阳系的html,纯HTML5制作的震撼太阳系网页
- ipad是买WiFi版的好,还是买4G版的好?
- linux上设置svn账户权限设置密码,Linux:如何在svn中设置“全局”用户/密码/组文件...
- mock测试_【Postman】16 Postman使用mock进行挡板测试(1)
- 面向对象之封装的成本价值
- [POJ1035]Spell checker
- 博弈论——拍卖会(Auctions)
- Adam:大规模分布式机器学习框架
- Asp 操作Access数据库时出现死锁.ldb的解决方法
- Oracle问题imp-10019:由于ORACLE错误12899而拒绝行
- 高中数学一对一辅导如何用半年时间数学从60分到130分逆袭诀窍
- html img设置形状,图片img直接设置样式