溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL數(shù)據(jù)庫數(shù)據(jù)如何刪除

發(fā)布時間:2022-08-10 10:50:37 來源:億速云 閱讀:154 作者:iii 欄目:開發(fā)技術

這篇文章主要介紹“MySQL數(shù)據(jù)庫數(shù)據(jù)如何刪除”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“MySQL數(shù)據(jù)庫數(shù)據(jù)如何刪除”文章能幫助大家解決問題。

    DELETE 語句

    DELETE 語句用于刪除記錄,語法如下:(與 “UPDATE” 語法較為相似)

    DELETE [IGNORE] FROM 表名
    WHERE 條件1, 條件2, .....
    ORDER BY ......
    LIMIT ......;
    
    -- 使用 IGNORE 關鍵字時,當存在外鍵約束組織我們刪除記錄,那么則會忽略刪除該條數(shù)據(jù)
    -- 使用 WHERE 子句刪除條件范圍內(nèi)的記錄;如果不使用 WHERE 子句,則是刪除全表范圍
    -- 使用 ORDER BY 關鍵字,將被刪除的記錄進行排序以后,產(chǎn)出符合條件的一些數(shù)據(jù)
    -- 使用 LIMIT 關鍵字依然是分頁的意思,

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

    DELETE 語句練習①

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

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

    MySQL數(shù)據(jù)庫數(shù)據(jù)如何刪除

    DELETE 語句練習②

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

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

    MySQL數(shù)據(jù)庫數(shù)據(jù)如何刪除

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

    DELETE 語句的表連接(內(nèi)連接)

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

    “DELETE” SQL語句的內(nèi)連接語法如下:

    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數(shù)據(jù)庫數(shù)據(jù)如何刪除

    MySQL數(shù)據(jù)庫數(shù)據(jù)如何刪除

    MySQL數(shù)據(jù)庫數(shù)據(jù)如何刪除

    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數(shù)據(jù)庫數(shù)據(jù)如何刪除

    DELETE 語句的表連接練習③

    刪除員工 “KING” 和 他的下屬的員工記錄,用表連接來實現(xiàn)

    分析:用 "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數(shù)據(jù)庫數(shù)據(jù)如何刪除

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

    “DELETE” 語句的表連接既可以是內(nèi)連接,也可以是外連接。

    “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" 的區(qū)別之外,其他的與內(nèi)連接的語法一樣

    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數(shù)據(jù)庫數(shù)據(jù)如何刪除

    MySQL數(shù)據(jù)庫數(shù)據(jù)如何刪除

    速刪除表中的全部數(shù)據(jù)

    “DELETE” 語句是在事務機制下刪除記錄(什么是 “事務機制” 會在后續(xù)文章詳細介紹),刪除記錄之前,先要將刪除的記錄保存到日志文件里,然后再刪除記錄。當使用 “DELETE” 去刪除海量數(shù)據(jù)的時候,“事務機制” 會讓刪除的速度變得很慢。

    “TRUNCATE” 語句在 “事務機制” 之外刪除記錄,執(zhí)行速度要遠遠地超過 “DELETE” 語句。

    “TRUNCATE” 語法如下:

    TRUNCATE TABLE 表名;
    
    -- 需要注意的是,"TRUNCATE"  語句一次只能清空一張數(shù)據(jù)表,不能夠一次性的清空多張數(shù)據(jù)表。
    TRUNCATE TABLE t_emp ;

    MySQL數(shù)據(jù)庫數(shù)據(jù)如何刪除

    MySQL 刪除語句小節(jié)

    語句 功能
    drop 語句刪除數(shù)據(jù)庫和表
    drop 數(shù)據(jù)庫名;
    drop 表名;
    delete 語句刪除表中的記錄
    delete from weibo_user where username=“xiaomu”;
    注意:delete語句中如果沒有加入where條件,將會把表中的所有記錄全部刪除
    update set 語句修改和更新語句,更新時也會覆蓋(刪除)原來的值
    update set與where搭配使用,變更某些記錄
    注意::update set語句中如果沒有where子句指定其變更的條件,將就會把數(shù)據(jù)庫中這個字段的所有值都更新
    alert 語句刪除字段:alter table 表名 drop 字段名;
    刪除主鍵:alter table 表名 drop primary key ;
    更新表名:alter table 表名 rename to 新表名;

    關于“MySQL數(shù)據(jù)庫數(shù)據(jù)如何刪除”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

    AI