mysql check约束 date_MySQL的SQL中CHECK约束的支持问题

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

前言

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

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

正题

CHECK约束

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

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

(B站竟然不支持代码段,我哭了,算了毕竟不是代码社区,这是我的问题)#这里我建一张简单的学生信息表

#当前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');

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

ea9647b508c8419c49bbe9b7e69a5c80.png实际操作

支持问题

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

果然我就看到了这一段,来自https://dev.mysql.com/doc/refman/8.0/en/create-table-check-constraints.html

30c1fdae23f5cb7b7e36df87eaabac4e.pngMySQL官方文档

大概翻译一下就是

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

而在这个版本上,支持CHECK约束。

顺带一提,你如果在这个界面去选择右上角的version下拉框,你会得到官方提醒,在之前的版本根本无法获取到这个页面,也就是说之前版本MySQL官方甚至没做这个页面(惊了)。

之前我下载了MySQL5.7的压缩包来测试,但发现并不能同时安装两个MySQL(可能是我技术问题),主要还是不好卸载现在这个8.0.16的,备份和恢复要不少时间。

之后我一定测试一下之前版本的情况。8b22ab26ef493287a87a82da4f4b89c6.png

后记

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值