单表语法

文章插图
是不是有很多疑问:

文章插图
多表语法

文章插图
相比于单表,貌似更简单一些,不支持 ORDER BY 和 LIMIT
LOW_PRIORITY UPDATE 的修饰符之一,用来降低 SQL 的优先级
当使用 LOW_PRIORITY 之后, UPDATE 的执行将会被延迟,直到没有其他客户端从表中读取数据为止
但是,只有表级锁的存储引擎才支持 LOW_PRIORITY ,表级锁的存储引擎包括: MyISAM 、 MEMORY 和 MERGE ,所以最常用的 InnoDB 是不支持的
使用场景很少,混个眼熟就好
IGNORE UPDATE 的修饰符之一,用来声明 SQL 执行时发生错误的处理方式
如果没有使用 IGNORE , UPDATE 执行时如果发生错误会中止,如下所示

文章插图
9002 更新成 9003 的时候,主键冲突,整个 UPDATE 中止, 9000 更新成的 9001 会回滚, 9003 ~ 9005 还未执行更新
如果使用 IGNORE ,会是什么情况了?

文章插图
UPDATE 执行期间即使发生错误了,也会执行完成,最终返回受影响的行数
上述返回受影响的行是 2 ,你们说说是哪两行修改了?
更多关于 IGNORE 的信息,请查看:The Effect of IGNORE on Statement Execution
关于使用场景,在新旧系统并行,做数据迁移的时候可能会用到,主键或者唯一键冲突的时候直接忽略
ORDER BY如果大家对 UDPATE 的执行流程了解的话,那就更好理解了
UPDATE 其实有两个阶段: 查阶段 、 更新阶段
一行一行的处理,查到一行满足 WHERE 子句,就更新一行
所以,这里的 ORDER BY 就和 SELECT 中的 ORDER BY 是一样的效果
关于使用场景,大家可以回过头去看看前面讲到的的需求背景,
IGNORE 的案例 1 中的报错,其实也可以用 ORDER BY

文章插图
LIMIT LIMIT row_count 子句是行匹配限制 。一旦找到满足 WHERE 子句的 row_count 行,无论这些行是否实际更改,该语句都会立即停止
也是就说 LIMIT 限制的是 查阶段 ,与 更新阶段 没有关系

文章插图
注意:与 SELECT 语法中的 LIMIT

文章插图
还是有区别的
value DEFAULT

文章插图
UPDATE 中 SET 子句的 value 是表达式,我们可以理解,这个 DEFAULT 是什么意思?
我们先来看这么一个问题,假设某列被声明了 NOT NULL ,然而我们更新这列成 NULL

文章插图
会发生什么

经验总结扩展阅读
- 瓷砖留下印记怎么去除
- 《Vision Permutator: A Permutable MLP-Like ArchItecture For Visual Recognition》论文笔记
- ppt文件密码忘记怎么办
- 西游记的主要内容
- 一张口诀搞定英语语法
- 国家科技进步奖几年评一次
- 微信聊天记录怎么恢复原来这么简单的啊(微信被误卸载了如何恢复聊天记录)
- 记叙文标题的特点和作用
- C++自学笔记 初始化列表 Initializer list
- 基础&进阶 线段树学习笔记(一) | P3372 【模板】线段树 1 题解