对NotNull字段插入Null值有啥现象?

1从一个小实验开始

首先创建数据表,只有1列id、没有默认值,且不能为Null

然后我们像下面这样尝试插入一条SQL。

你会发现,本篇的问题答案已经有了:默认情况下,如果该列要求不能为null。用户还往里面写入null,就会报错:cannot be null

当然本篇文章并没有结束,下面跟大家分享另外一个拓展知识:sql mode 。

这个拓展知识点也是下一篇文章“ 能谈谈 date、datetime、time、timestamp、year的区别吗?” 的储备知识。

2sql的执行模式

引出了一个 sql_mode 的概念,也就是SQL的执行模式。

默认情况下MySQL会用严格模式运行SQL。

你可以像下面这样查看MySQL使用了哪些sql mode。

MySQL会根据sql_mode系统变量的值将这些模式不同地应用于不同的客户端。

使用不同的sql mode执行sql,可能会得到不同的响应结果。

3通过实验测试sql mode

为了更直观的看出sql mode 对sql执行结果的影响,推荐你看一下下面的这两个小Demo,都不复杂。

实验一:

创建一张简单的表 t3,id非空、没有默认值。

先看看默认的情况下,会有什么响应!

在默认的sql mode下,执行一条插入空值的语句,发现报错了

再看看,关闭严格的sql mode后会有什么响应。

关闭严格模式后执行的结果如下图所示。

你会发现这次结果是 wanring + MySQL帮你插入默认值

实验二:

默认开启严格模式后往int类型的列插入空串(任意串)会报错。

关闭严格模式后,执行下面的SQL会爆出wanrning。

查看插入的结果

从上面的实验来看,相信你已经看出了现象:无论是否开启了严格模式,MySQL都不允许往not null字段插入null值,它不会因为你插入null,而将null转成该数据类型的0值。

所谓都严格模式,就是将参数 NO_AUTO_CREATE_USER 设置给sql mode

3需要你了解的几个 sql mode

下面再为大家介绍几个常见或者和日期相关的sql mode。

研发的同学了解就好了,不用刻意记住它,了解就是加分项!

1、STRICT_TRANS_TABLES

将其加入到sql_mode之后,MySQL会判断是否可以直接把用户给的值插入事务表中,如果不能就中止该语句。对于非事务表,如果该值出现在单行语句或多行语句的第一行中,则中止该语句。

结合上面的例子可以更好的理解STRICT_TRANS_TABLES的作用。

2、NO_ZERO_IN_DA****TE

将其加入到sql_model之后,MySQL将不允许你将诸如 0000-10-10、2020-00-10、2020-10-00等年份、月份、日期为零的值插入到Date列中。

目前该参数处于目前该参数默认会生效,但是在未来的版本中将会被删除。

3、NO_ZERO_DATE:

该参数控制MySQL是否允许将 '0000-00-00'作为有效日期。

如果未启用此模式, '0000-00-00'允许插入不会产生警告。

如果启用此模式,'0000-00-00' 允许插入且产生警告。

如果启用了此模式和严格模式, '0000-00-00' 插入产生错误,除非 IGNORE同样给出。对于 INSERT IGNOREUPDATE IGNORE'0000-00-00'允许插入且产生警告。

4结语

本文到这里就行将结束了,主要跟大家分享一个 sql mode 拓展知识点。

作为研发同学的你了解就好了,如果没时间去实际操作一下就看下我上面的小Demo。不积跬步,无以至千里。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,535评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,106评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 171,668评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,863评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,874评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,362评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,748评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,717评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,249评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,280评论 3 345
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,408评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,020评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,727评论 3 337
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,191评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,320评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,946评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,473评论 2 365

推荐阅读更多精彩内容