数据库学习(17)MySQL数据库DML——DELETE语句

本文介绍了MySQL中用于删除记录的DELETE语句,包括基本语法、练习示例、表连接的使用,以及与TRUNCATE语句的区别。内容涉及删除特定条件的记录、联合删除、外连接删除和快速清空表的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DELETE语句简介

  • DLETE语句用于删除记录,语法如下:
DELETE [IGNORE] FROM 表名
[WHERE 条件1, 条件2, ......]
[ORDER BY ......]
[LIMIT ......];

注: 删除表中记录用DELETE语句,而删除整表使用DROP语句。

DELETE语句练习1

删除10部门中,工龄超过20年的员工记录

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

DELETE语句练习2

删除20部门中工资最高的员工记录

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

DELETE语句的表连接

  • 因为相关子查询效率非常低,所以我们可以利用表连接的方式来改造DELETE语句
    使用方法:
DELETE1, ...... FROM1 JOIN2 ON 条件
[WHERE 条件1, 条件2, ......]
[ORDER BY ......]
[LIMIT ......];

DELETE语句练习3

删除SALES部门和该部门的全部员工记录

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

DELETE语句练习4

删除每个低于部门平均底薪的员工记录

DELETE e
FROM t_emp e JOIN
(SELECT deptno,AVG(sal) AS sal FROM t_emp GROUP BY deptno) t
ON e.deptno=t.deptno AND e.sal<t.sal;

DELETE语句练习5

删除员工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;

注: 结果集为临时表时,其里面的数据是不能删除的,即上述语句中的 t 表是不能删除的。

DELETE语句表连接的外连接

  • DELETE语句的表连接既可以是内连接,又可以是外连接
    使用方法:
DELETE1, ...... FROM1 [LEFT|RIGHT] JOIN2
ON 条件 ......;

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;

快速删除数据表全部记录

  • DELETE语句是在事务机制下删除记录,删除记录之前,先把将要删除的记录保存到日志文件里,然后再删除记录。
  • TRUNCATE语句在事务机制之外删除记录,速度远超过DELETE语句
    TRUNCATE语句使用方法:
TRUNCATE TABLE 表名;

示例:清空员工表的数据

TRUNCATE TABLE t_emp;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值