当前位置: 首页 > 工具软件 > delete > 使用案例 >

数据操作语言:DELETE语句

孔扬
2023-12-01

DELETE语句

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

练习

  • 删除10部门中,工龄超过20年的员工记录
    delete from t_emp where deptno=10 and datediff(now(),hiredate)/365>20;

  • 删除20部门中工资最高的员工记录
    delete from t_emp where deptno=20 order by sal+ifnull(comm,0) desc limit 1;

DELETE语句的内连接

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

练习

  • 删除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) avg from t_emp group by deptno) s
on e.deptno=s.deptno and e.sal<s.avg;
  • 删除员工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=d.empno;

临时表的数据不能删除

DELETE语句的外连接

  • DELETE语句的表连接既可以是内连接,又可以是外连接
DELETE 表1,.. FROM 表1 [LEFT | RIGHT] JOIN 表2
ON 条件...;
  • 删除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 TABLE 表名;
 类似资料: