注:(1)子查询不能在DELETE语句中使用的原因:首先,在DELETE中使用子查询,这会是相关子查询,效率很低;然后,MySQL不允许对要更改或要删除记录的数据表做子查询(很显然,动脑子想一想也明白了);
目录
一:DELETE子句简介
DELETE语句是删除数据的,而不能删除数据表本身,删除数据表的是DROP语句,DELETE语句只是删除记录而已。
● DELETE子句:执行删除操作的子句;
● FROM子句:确定删除那张数据表;
● WHERE子句:按照条件去删除记录;如果没有条件,就会删除全表,清空表;
● ORDER BY子句:对结果集进行排序;
● LIMIT子句:限定删除内容;
执行顺序:FROM子句→WHERE子句→ORDER BY子句→LIMIT子句→DELETE子句;
二:DELETE案例:单表的案例:无连接
案例1:删除10部门中,工龄超过20年的员工;
这个案例很简单,不涉及多张表。
我的做法:
DELETE FROM t_emp
WHERE deptno=10 AND FLOOR(DATEDIFF(NOW(),hiredate)/365)>=20;
……