MySQL的SQL中CHECK约束的支持问题

MySQL的SQL中CHECK约束的支持问题

MySQL

前言

​ 最近在创建MySQL表的时候,对于建表要求给的CHECK约束不是很清楚,就上网查了一下MySQL的CHECK约束。结果网上的回答通过实例告诉我MySQL能接收CHECK,但接收后不解析,也就是说没用。

​ 但是自己亲手试过之后发现自己的MySQL确实能实现CHECK的约束,这一点就让我很迷惑。

正题

CHECK约束

​ 我先简单地描述一下这个CHECK约束指的是什么(大佬忽略这一段):

CHECK约束能为我们提供设置字段限制地简单方法,就以下例来说明这个东西吧。

#这里我建一张简单的学生信息表
#当前MySQL版本8.0.16
#ps: 原谅我喜欢用小写
create table student(
sname varchar(10),
sno varchar(8),
sex char(1),
check (sex in ('f','m')));

#实际插入一些数据测试
#能插入表中
insert into student values('QinKuai','00000000','f');
#不能插入表中
insert into student values('QinKuai','00000000','a');

​ 附上实际操作的图,有图有真相。

实际操作

支持问题

​ 那这就奇怪了呀,明明不少网友都经过实验之后得出MySQL不支持CHECK约束的结论了,为什么还突然就支持了呢。很长一段时间我百思不得其解,后来我想到为什么不去MySQL官方文档看看怎么说呢。

​ 果然我就看到了这一段。

​ 来自https://dev.mysql.com/doc/refman/8.0/en/create-table-check-constraints.html
在这里插入图片描述

​ 大概翻译一下就是

在MySQL 8.0.16版本之前的CHECK约束,能被解析但是被忽略掉了,就是写了也没用。
而在这个版本上,支持CHECK约束。

​ 顺带一提,你如果在这个界面去选择右上角的version下拉框,你会得到官方提醒,在之前的版本根本无法获取到这个页面,也就是说之前版本MySQL官方甚至没做这个页面(惊了)。
之前我下载了MySQL5.7的压缩包来测试,但发现并不能同时安装两个MySQL(可能是我技术问题),主要还是不好卸载现在这个8.0.16的,备份和恢复要不少时间。

​ 之后我一定测试一下之前版本的情况。

后记

​ 最后简单说几句,说实话现在自己一般遇到不知道的东西往往先是上网查询,由于没有翻墙一般也就百度和必应了。虽说资料确实来得很快,但是弊端也就很明显,没人能确保是不是每个人都做足了工作,文章水平也就参差不齐。

​ 所以,作为程序猿,可能当遇到比较复杂不确定的问题的时候,自己动手和查询官方文档可能会是更好的选择。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值