
晚上,女儿眼噙泪水躺在床上
女儿:你口口声声说爱我,说陪我,却天天想着骗我零花钱,你是我亲爹吗?
我:你想知道真相
女儿:想!
我:那你先给爸爸两百块钱!

利用 docker 搭建了 7 个不同版本的 MySQL
5.5.62

5.6.51

5.7.36

8.0.15

8.0.16

8.0.17

8.0.30
当下最新版本


关于表别名,相信大家都不陌生;指定表别名是为了简化 SQL ,使可读性更强
语法如下

AS 可以省略

应用到 tbl_user 上则是

不仅表可以指定别名,列也可以指定别名,这里就不展开了
对于 DELETE ,相信大家已经非常熟悉了
单表语法如下

多表语法如下

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、连表删除的最后那个问题,大家可以从 从哪些表删除 来思考,对比下官方给的案例

应该就能想到答案了