首頁  >  文章  >  資料庫  >  MySQL資料庫資料如何刪除

MySQL資料庫資料如何刪除

WBOY
WBOY轉載
2023-05-28 23:06:502605瀏覽

    DELETE 語句

    DELETE 語句用於刪除記錄,語法如下:(與「UPDATE」 語法較為相似)

    DELETE [IGNORE] FROM 表名
    WHERE 条件1, 条件2, .....
    ORDER BY ......
    LIMIT ......;
    
    -- 使用 IGNORE 关键字时,当存在外键约束组织我们删除记录,那么则会忽略删除该条数据
    -- 使用 WHERE 子句删除条件范围内的记录;如果不使用 WHERE 子句,则是删除全表范围
    -- 使用 ORDER BY 关键字,将被删除的记录进行排序以后,产出符合条件的一些数据
    -- 使用 LIMIT 关键字依然是分页的意思,

    “ DELETE” 語句執行的順序:FROM ---> WHERE ---> ORDER BY ---> LIMIT ---> DELETE

    #DELETE 語句練習①

    刪除10 部門中,工齡超過20 年的員工記錄 (這個比較簡單,只牽涉到一張表)

    DELETE FROM  t_emp 	
    WHERE deptno = 10 
    AND DATEDIFF(NOW(), hiredate)/365 >= 20;

    MySQL資料庫資料如何刪除

    DELETE 語句練習②

    刪除20 部門中薪資最高的員工記錄(除了使用WHERE 子句過濾出20 部門中員工之外,還需要根據薪資進行降序排列,並刪除最高的記錄)

    DELETE FROM  t_emp 	
    WHERE deptno = 20 
    ORDER BY sal+IFNULL(comm,0) DESC
    LIMIT 1;

    MySQL資料庫資料如何刪除

    "DELETE" 語句的語法還是很簡單的,在有了"UPDATE" 語句的基礎之後再來看待"DELETE" 語句就比較好理解了,因為這些子句都差不太多。

    DELETE 語句的表連接(內連接)

    因為相關子查詢效率非常的低下,所以我們可以利用表連接的方式來提高 DELETE 語句的刪除效率。

    「DELETE」 SQL語句的內連接語法如下:

    DELETE 表1, ...... FROM 表1 JOIN 表2 ON 条件
    WHERE 条件1, 条件2, ......
    ORDER BY ......
    LIMIT ......
    
    -- 需要注意的是,这里的 "WHERE"、"ORDER BY"、"LIMIT" 子句都是可选条件

    DELETE 語句的表連接練習①

    刪除SALES 部門和該部門的全部員工記錄

    分析:刪除兩張表的記錄

    分析:使用一個DELETE 語句刪除兩個表記錄,可以使用表連接的方式(參考上文語法)

    #分析:屬於SALES 部門的員工記錄未知,需要先試用條件查詢過濾出SALES 部門的員工記錄

    DELETE e, d
    FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno
    WHERE d.dname="SALES";

    MySQL資料庫資料如何刪除

    MySQL資料庫資料如何刪除

    MySQL資料庫資料如何刪除

    ##DELETE 語句的表連接練習②

    刪除每個低於部門平均底薪的員工記錄

    分析:仍然使用表連接,因為首先需要去查詢部門進行分組,查詢部門的編號與平均底薪。

    分析:將查詢到的結果集作為一張表和"員工表" 做連接,連接條件就是員工的"部門編號",還有一個條件就是員工的月薪要低於部門的平均底薪

    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;

    MySQL資料庫資料如何刪除

    DELETE 語句的表格連接練習③

    刪除員工「KING」 和他的下屬的員工記錄,用表格連接來實現

    分析:用"WHERE" 子句查找"ename" 為"KING" 的員工記錄

    分析:將查到的"KING" 的員工記錄與員工表的"mgr" 字段為"KING" 的"員工編號" 做連接

    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;

    MySQL資料庫資料如何刪除

    DELETE 語句的表連接(外連接)

    “DELETE” 語句的表連接既可以是內連接,也可以是外連接。

    “DELETE” SQL語句的外連接語法如下:

    DELETE 表1, ...... FROM 表1 [LEFT | RIGHT] JOIN 表2 ON 条件
    WHERE 条件1, 条件2, ......
    ORDER BY ......
    LIMIT ......
    
    -- 需要注意的是,这里的 "WHERE"、"ORDER BY"、"LIMIT" 子句都是可选条件
    -- 除了 在连接表 的时候选择 "LEFT JOIN" 与 "RIGHT JOIN" 的区别之外,其他的与内连接的语法一样

    DELETE 語句的外連接練習

    刪除 “SALES” 部門的員工,以及沒有部門的員工。

    分析:使用 "左外連接" 與 部門表進行連接,因為 "員工表" 中的 "張三" 是沒有部門的;所以要保留下來,與部門表進行連接。

    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

    MySQL資料庫資料如何刪除

    MySQL資料庫資料如何刪除

    速刪除表中的全部資料

    「DELETE」 語句是在交易機制下刪除記錄(什麼是「交易機制」 會在後續文章詳細介紹),刪除記錄之前,先將刪除的記錄儲存到日誌檔案裡,然後再刪除記錄。當使用「DELETE」刪除大量資料時,交易機制會導致刪除速度變慢。

    “TRUNCATE” 語句在 “交易機制” 之外刪除記錄,執行速度要遠遠超過 “DELETE” 語句。

    “TRUNCATE” 語法如下:

    TRUNCATE TABLE 表名;
    
    -- 需要注意的是,"TRUNCATE"  语句一次只能清空一张数据表,不能够一次性的清空多张数据表。
    TRUNCATE TABLE t_emp ;

    MySQL資料庫資料如何刪除#

    MySQL 刪除語句小節

    ##update set 語句修改和更新語句,更新時也會覆寫(刪除)原來的值alert 語句刪除欄位:alter table 表名drop 欄位名稱;##
    語句 # 功能
    drop 語句 #刪除資料庫和表格
    drop 資料庫名稱;
    drop 表名;
    delete 語句 刪除表中的記錄
    delete from weibo_user where username=「xiaomu」;
    注意:delete語句中如果沒有加入where條件,將會將表格中的所有記錄全部刪除
    update set與where搭配使用,變更某些記錄
    注意::update set語句中如果沒有where子句指定其變更的條件,將會把資料庫中這個欄位的所有值都更新
    刪除主鍵:alter table 表名drop primary key ;
    更新表名:alter table 表名rename to 新表名;

    以上是MySQL資料庫資料如何刪除的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除