mysql delete 多表連接刪除

單個表的刪除:

DELETE FROM tableName WHERE columnName = value;
刪除表內的所有行:
即:保留表的結構、屬性、索引
DELETE FROM tablename;
DELETE * FROM tablename;

刪除同一張表內的所有內容(刪除數據、表結構)

TRUNCATE customer;
無法報告刪除了幾行,且只能用於單一表

多表連接刪除:

DELETE orders,itrms FROM orders,items 
    WHERE orders.userid = items.userid
    AND orders.orderid = items.orderid
    AND orders.date<"2000/03/01"; 

需要刪除的表的名稱列在DELETE之後,連接條件所用的表列在FROM之後
假設刪除BV地區的所有葡萄酒場,但不刪除地名

DELETE winery FROM region,winery 
    WHERE winery.regionid = region.regionid
    AND region.regionname = 'BV';

查詢隻影響winery表,但同時利用winery,region找出需要刪除的記錄
使用高級連接查詢

DELETE orders,items FROM orders
    INNER JOIN otems ON orders.orderid = items.orderid
    AND orders.userid = items.userid
    WHERE orders.date<"2000/03/01";   

也可在DELETE語句中使用嵌套查詢(內部查詢不可引用刪除的數據)、GROUP BY、HAVING;
也可在單一表查詢中使用ORDER BY,單數除非與LIMIT連用刪除部分數據行,否則並無太大意義。

加quick修飾符,可快速刪除索引項,加速大量或者頻繁的刪除操作

DELETE QUICK FROM customer WHERE userid<10;
只可用於類型爲MyISAM的表

清理MyISAM的表

OPTIMIZE TABLE customer;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章