筆者Q:972581034 交流群:605799367。有任何疑問可與筆者或加群交流
delete語句
-
delete語句用於刪除表中已經存在的整行數據
-
Tbl_name關鍵詞代表刪除數據的目標表
-
Where子句代表被刪除數據的滿足條件,如果沒有where子句則代
-
表所有表數據都刪除
-
Order by子句代表刪除數據的順序
-
Limit子句代表被刪除數據的行數限制
-
delete單表刪除舉例
Delete from students;
delete from students where sid=1;
Delete from students order by sid;
Delete from students limit 1; -- 只刪除先找到的一行
多表刪除語句語法有以下兩種
- 同樣,被刪除的表不能出現在查詢子句的子查詢中
- Low_priority關鍵詞表示刪除語句需要等待其他鏈接的讀此表操作
- 結束后再執行,只作用在MyISAM, MEMORY, and MERGE存儲引擎
- Quick關鍵詞是在使用myisam存儲引擎時,刪除操作不會合並刪
- 除表的索引葉節點,這樣會在一定程度上加快刪除的速度
- ignore關鍵詞代表會忽略刪除過程中的一些錯誤
order by子句
- Delete語句中的order by子句決定了刪除數據的順序,配合limit子 句后在某些情況下也非常有用,比如刪除最老的一條記錄:
DELETE FROM somelog WHERE user = 'jcole' ORDER BY timestamp_column LIMIT 1;
- 多表刪除是指從一個或多個表中刪除滿足條件的數據,其中的 table_references代表了多個表的join操作,例如以下兩個例子代表
- 從t1和t2表中刪除滿足條件的數據
DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id;
DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id;
- 對多表刪除語句而言,如果想對表使用別名,則只能在 table_references子句中使用,否則會報錯
DELETE a1, a2 FROM t1 AS a1 INNER JOIN t2 AS a2 WHERE a1.id=a2.id; -- 正確
DELETE FROM a1, a2 USING t1 AS a1 INNER JOIN t2 AS a2 WHERE a1.id=a2.id; -- 正確
DELETE t1 AS a1, t2 AS a2 FROM t1 INNER JOIN t2 WHERE a1.id=a2.id; -- 錯誤
DELETE FROM t1 AS a1, t2 AS a2 USING t1 INNER JOIN t2 WHERE a1.id=a2.id; -- 錯誤
練習
- 刪除所有學號大於200的學生信息
- 刪除系名為accounting的所有老師信息