【delete語句 oracledelete語句 sqlserverdelete語句 mysqldelete語句】delete語句
delete語句用于刪除表中已經(jīng)存在的整行數(shù)據(jù)
Tbl_name關(guān)鍵詞代表刪除數(shù)據(jù)的目標(biāo)表
Where子句代表被刪除數(shù)據(jù)的滿足條件,如果沒有where子句則代
表所有表數(shù)據(jù)都刪除
Order by子句代表刪除數(shù)據(jù)的順序
Limit子句代表被刪除數(shù)據(jù)的行數(shù)限制
delete單表刪除舉例
Delete from students;delete from students where sid=1; Delete from students order by sid; Delete from students limit 1; -- 只刪除先找到的一行
多表刪除語句語法有以下兩種
同樣,被刪除的表不能出現(xiàn)在查詢子句的子查詢中
Low_priority關(guān)鍵詞表示刪除語句需要等待其他鏈接的讀此表操作
結(jié)束后再執(zhí)行,只作用在MyISAM, MEMORY, and MERGE存儲(chǔ)引擎
Quick關(guān)鍵詞是在使用myisam存儲(chǔ)引擎時(shí),刪除操作不會(huì)合并刪
除表的索引葉節(jié)點(diǎn),這樣會(huì)在一定程度上加快刪除的速度
ignore關(guān)鍵詞代表會(huì)忽略刪除過程中的一些錯(cuò)誤
order by子句
Delete語句中的order by子句決定了刪除數(shù)據(jù)的順序,配合limit子 句后在某些情況下也非常有用,比如刪除最老的一條記錄:
DELETE FROM somelog WHERE user = 'jcole' ORDER BY timestamp_column LIMIT 1;
多表刪除是指從一個(gè)或多個(gè)表中刪除滿足條件的數(shù)據(jù),其中的 table_references代表了多個(gè)表的join操作,例如以下兩個(gè)例子代表
從t1和t2表中刪除滿足條件的數(shù)據(jù)
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;
對(duì)多表刪除語句而言,如果想對(duì)表使用別名,則只能在 table_references子句中使用,否則會(huì)報(bào)錯(cuò)
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; -- 錯(cuò)誤DELETE FROM t1 AS a1, t2 AS a2 USING t1 INNER JOIN t2 WHERE a1.id=a2.id; -- 錯(cuò)誤
練習(xí)
刪除所有學(xué)號(hào)大于200的學(xué)生信息
刪除系名為accounting的所有老師信息