欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL中的delete语句

程序员文章站 2022-05-30 22:38:29
...

一、3类删除语句

1.drop删除整个表,包括结构和内容
2.truncate删除表中所有数据,但不能与where一起使用
3.delete删除表中指定数据,能与where一起使用
程度:drop>truncate>delete

二、基础delete语句

1.delete from table_name;

delete from table; 删除表中所有记录,且无法复原,后期如需还原只能用insert into 重新插入
注意:此处不可对table_name取别名,会报错

2.delete from table where clause;

1).当子查询的from 的表和更新、删除对象使用同一张表时,会报错

解决方法:对子句的结果集取别名,变成二重子句
适用于update和delete

例:

delete from person where id=(select max(id) from person);

会报错1093 - You can’t specify target table ‘person’ for update in FROM clause
应该改成:

delete from person
where id=(select max_id from 
(select max(id) as max_id from person) as p);

2).where后面跟的in子查询不能带where,带的话需要取别名,变二重子句

此外,in子查询的速度比较慢,一般用表连接的方式代替

说到表连接的话,就需要用delete做多表删除了

三、delete删除多表数据

1.delete t1 from t1,t2 where clause

delete的联结删除是指通过在两个表之间建立联结删除关系,来实现删除一个表的数据的同时删除另一个表中相关的数据。

1).delete t1 from table as t1,table as t2 where t1.id=t2.id

2).delete t1 from t1,t2 where t1.id=t2.id and

3).delete t1 from t1 left join t2 on t1.id=t2.id where