開心一刻
晚上,女兒眼噙淚水躺在床上
女兒:你口口聲聲說愛我,說陪我,卻天天想著騙我零花錢,你是我親爹嗎?
我:你想知道真相
女兒:想!
我:那你先給爸爸兩百塊錢!

環境準備
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、連表洗掉的最后那個問題,大家可以從 從哪些表洗掉 來思考,對比下官方給的案例

應該就能想到答案了
參考
DELETE Statement
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/507261.html
標籤:其他
