SQL語句-delete語句


筆者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的所有老師信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM