DELETE用於刪除表中的資料。
注意事項
執行
DELETE命令時,表中必須存在主鍵。DELETE暫不支援使用表的別名。不建議通過
DELETE命令刪除全表、全分區的資料,建議使用TRUNCATE TABLE、TRUNCATE TABLE PARTITION命令,詳情請參見TRUNCATE TABLE。刪除多表資料時,一條SQL語句只能刪除一張表,不支援同時刪除多張表。
文法
單表刪除是指查詢一個表,並刪除滿足WHERE子句指定條件的資料。多表刪除是指單個SQL語句進行多表關聯查詢,並在一個表中刪除滿足WHERE子句指定條件的資料。
單表刪除
DELETE FROM table_name
[ WHERE condition ] 多表刪除
重要
僅3.2.0.0及以上核心版本的叢集支援多表刪除。
請在雲原生資料倉儲AnalyticDB MySQL控制台集群資訊頁面的配寘資訊地區,查看和升級核心版本。
DELETE table_name1
FROM table_name1 [INNER JOIN | LEFT JOIN | RIGHT JOIN] table_name2 ON table_name1.column1 = table_name2.column1
[WHERE where_condition]樣本
刪除customer表中
name為張三的資料。DELETE FROM customer WHERE customer_name='張三';刪除customer表中的多行。
DELETE FROM customer WHERE age<18;在customer表中,查詢並刪除
id與orders表中id相同,且age為18的資料。DELETE customer FROM customer JOIN orders ON customer.id = orders.id WHERE customer.age = 18;
常見問題
為什麼在刪除表中資料後,儲存空間佔用沒有減少?
原因:DELETE是非同步作業,執行DELETE語句刪除表資料後,儲存空間佔用不會立即減少。
解決方案:在執行DELETE語句後,觸發BUILD任務。
AnalyticDB for MySQL叢集會在滿足一定條件後自動觸發BUILD任務,您也可以手動觸發BUILD任務。