开心一刻
晚上,女儿眼噙泪水躺在床上
女儿:你口口声声说爱我,说陪我,却天天想着骗我零花钱,你是我亲爹吗?
我:你想知道真相
女儿:想!
我:那你先给爸爸两百块钱!
环境准备
MySQL 不同版本
利用 docker 搭建了 7 个不同版本的 MySQL
5.5.62
5.6.51
5.7.36
8.0.15
8.0.16
8.0.17
8.0.30
当下最新版本
库与表
Table aliases
关于表别名,相信大家都不陌生;指定表别名是为了简化 SQL ,使可读性更强
语法如下
AS 可以省略
应用到 tbl_user 上则是
不仅表可以指定别名,列也可以指定别名,这里就不展开了
DELETE
对于 DELETE ,相信大家已经非常熟悉了
单表语法如下
多表语法如下
DELETE + Table aliases
SELECT 的时候,我们经常用表的别名
单表查询的时候
尤其是在连表查询的时候
那么 DELETE 的时候可以用别名吗,我们来试试
单表删除
通常情况下,删除语句这么写的
如果加上别名了,该怎么写
可能大家觉得很简单,楼主也觉得是如下这么写的
很有可能执行报错,提示如下信息
我们来看下在 MySQL 各个版本的执行情况
可以看到,在 8.0.16 之前是会报错的
那 8.0.16 之前的正确写法应该是怎样的了,如下所示
当然, 8.0.16 及之后也是支持这两种写法的
也许是因为呼声太高,从 8.0.16 开始支持如下写法
官方说明delete
连表删除
和单表删除基本一致,语法格式如下
删除 zhangsan 的登录日志,可以这么写
8.0.16 及之后是不是还可以这么写?
大家去试试,然后想想为什么
总结
1、单表删除的时候就别用别名了, SQL 更精简
2、如果要用别名,推荐用如下其中一种
更具通用性,方便迁移,而
需要 8.0.16 及之后版本才支持
3、连表删除的最后那个问题,大家可以从 从哪些表删除 来思考,对比下官方给的案例
应该就能想到答案了