DELETE 語句用於刪除記錄,語法如下:(與「UPDATE」 語法較為相似)
DELETE [IGNORE] FROM 表名 WHERE 条件1, 条件2, ..... ORDER BY ...... LIMIT ......; -- 使用 IGNORE 关键字时,当存在外键约束组织我们删除记录,那么则会忽略删除该条数据 -- 使用 WHERE 子句删除条件范围内的记录;如果不使用 WHERE 子句,则是删除全表范围 -- 使用 ORDER BY 关键字,将被删除的记录进行排序以后,产出符合条件的一些数据 -- 使用 LIMIT 关键字依然是分页的意思,
“ DELETE” 語句執行的順序:FROM ---> WHERE ---> ORDER BY ---> LIMIT ---> DELETE
刪除10 部門中,工齡超過20 年的員工記錄 (這個比較簡單,只牽涉到一張表)
DELETE FROM t_emp WHERE deptno = 10 AND DATEDIFF(NOW(), hiredate)/365 >= 20;
刪除20 部門中薪資最高的員工記錄(除了使用WHERE 子句過濾出20 部門中員工之外,還需要根據薪資進行降序排列,並刪除最高的記錄)
DELETE FROM t_emp WHERE deptno = 20 ORDER BY sal+IFNULL(comm,0) DESC LIMIT 1;
"DELETE" 語句的語法還是很簡單的,在有了"UPDATE" 語句的基礎之後再來看待"DELETE" 語句就比較好理解了,因為這些子句都差不太多。
因為相關子查詢效率非常的低下,所以我們可以利用表連接的方式來提高 DELETE 語句的刪除效率。
「DELETE」 SQL語句的內連接語法如下:
DELETE 表1, ...... FROM 表1 JOIN 表2 ON 条件 WHERE 条件1, 条件2, ...... ORDER BY ...... LIMIT ...... -- 需要注意的是,这里的 "WHERE"、"ORDER BY"、"LIMIT" 子句都是可选条件
刪除SALES 部門和該部門的全部員工記錄
分析:刪除兩張表的記錄
分析:使用一個DELETE 語句刪除兩個表記錄,可以使用表連接的方式(參考上文語法)
#分析:屬於SALES 部門的員工記錄未知,需要先試用條件查詢過濾出SALES 部門的員工記錄
DELETE e, d FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno WHERE d.dname="SALES";
DELETE e FROM t_emp e JOIN (SELECT deptno, AVG(sal) AS avg FROM t_emp GROUP BY deptno) t ON e.deptno=t.deptno AND e.sal < t.avg;
DELETE e FROM t_emp e JOIN (SELECT empno FROM t_emp WHERE ename="KING") t ON e.mgr=t.empno OR e.empno=t.empno;
DELETE 表1, ...... FROM 表1 [LEFT | RIGHT] JOIN 表2 ON 条件 WHERE 条件1, 条件2, ...... ORDER BY ...... LIMIT ...... -- 需要注意的是,这里的 "WHERE"、"ORDER BY"、"LIMIT" 子句都是可选条件 -- 除了 在连接表 的时候选择 "LEFT JOIN" 与 "RIGHT JOIN" 的区别之外,其他的与内连接的语法一样
DELETE e FROM t_emp e LEFT JOIN t_dept d ON e.deptno=d.deptno WHERE d.dname="SALES" OR e.deptno IS NULL
TRUNCATE TABLE 表名; -- 需要注意的是,"TRUNCATE" 语句一次只能清空一张数据表,不能够一次性的清空多张数据表。
TRUNCATE TABLE t_emp ;
#
語句 | # 功能 |
---|---|
drop 語句 | #刪除資料庫和表格 drop 資料庫名稱; drop 表名; |
delete 語句 | 刪除表中的記錄 delete from weibo_user where username=「xiaomu」; 注意:delete語句中如果沒有加入where條件,將會將表格中的所有記錄全部刪除 |
修改和更新語句,更新時也會覆寫(刪除)原來的值 | update set與where搭配使用,變更某些記錄 注意::update set語句中如果沒有where子句指定其變更的條件,將會把資料庫中這個欄位的所有值都更新 |
刪除欄位:alter table 表名drop 欄位名稱; | 刪除主鍵:alter table 表名drop primary key ; 更新表名:alter table 表名rename to 新表名; |
以上是MySQL資料庫資料如何刪除的詳細內容。更多資訊請關注PHP中文網其他相關文章!