文章插图
我们看下 SQL_MODE ,执行 SELECT @@sql_mode; 得到结果

文章插图
【记一次批量更新整型类型的列 → 探究 UPDATE 的使用细节】 STRICT_TRANS_TABLES 表明启动了严格模式,对 INSERT 和 UPDATE 语句的 value 管控会更严格
如果我们关闭严格模式,再看看执行结果

文章插图
name 字段声明成了 NOT NULL ,非严格 SQL 模式下,将 name 设置成 NULL 是成功的,但更改的值并非 NULL ,而是 VARCHAR 类型的默认值: 空字符串('')
小结下
1、严格 SQL 模式下,对 NOT NULL 的字段设置 NULL ,会直接报错,更新失败
2、非严格 SQL 模式下,对 NOT NULL 的字段设置 NULL ,会将字段值设置字段类型对应的默认值
关于字段类型的默认值,可查看:Data Type Default Values
关于 sql_mode ,可查看:Server SQL Modes
通常情况下,生成环境的 MySQL 一般都是严格模式,所以大家知道有 value DEFAULT 这回事就够了
SET 字段顺序针对如下 SQL

文章插图
想必大家都很清楚
然而,以下 SQL 中的 name 列的值会是多少

文章插图
我们来看下结果

文章插图
name 的值是不是和预想的有点不一样?
单表 UPDATE 的 SET 是从左往右进行的,然而多表 UPDATE 却不是,多表 UPDATE 不能保证按任何特定顺序进行
总结1、不管是 UPDATE ,还是 DELETE ,都有一个先查的过程,查到一行处理一行
2、 UPDATE 语法中的 LOW_PRIORITY 很少用, IGNORE 偶尔用, ORDER BY 和 LIMIT 相对会用的多一点,都混个眼熟
3、 sql_mode 是比较重要的知识点,推荐大家掌握;生产环境,强烈推荐开启严格模式
参考UPDATE Statement
经验总结扩展阅读
- 瓷砖留下印记怎么去除
- 《Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition》论文笔记
- ppt文件密码忘记怎么办
- 西游记的主要内容
- 一张口诀搞定英语语法
- 国家科技进步奖几年评一次
- 微信聊天记录怎么恢复原来这么简单的啊(微信被误卸载了如何恢复聊天记录)
- 记叙文标题的特点和作用
- C++自学笔记 初始化列表 Initializer list
- 基础&进阶 线段树学习笔记(一) | P3372 【模板】线段树 1 题解