一、删除语句
1、方式一
(1)单表的删除
delete from 表名 【where 筛选条件】【limit条目数】
如果没有指定 where 子句,MySQL 表中的所有记录将被删除,可以在 where 子句中指定任何条件。
(2)多表的删除【补充】
SQL92 语法:
delete 表1的别名, 表2的别名
from 表1 别名, 表2 别名
where 连接条件
and 筛选条件
SQL99 语法:
delete 表1的别名, 表2的别名
from 表1 别名
inner | left | right join 表2 别名
on 连接条件
where 筛选条件
2、方式二
语法格式:
truncate table 表名;
二、案例
1、delete 案例
(1)单表的删除:删除手机号以 9 结尾的女生信息
DELETE FROM beauty WHERE phone LIKE '%9';
(2)多表的删除:删除张无忌的女朋友的信息
SELECT b.*
FROM beauty b
INNER JOIN boys bo
ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName` = '张无忌';
DELETE b
FROM beauty b
INNER JOIN boys bo
ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName` = '张无忌';
使用删除的时候建议使用查询语句先查询。
(3)多表同时删除:删除黄晓明信息及女朋友信息
DELETE b, bo
FROM beauty b
INNER JOIN boys bo
ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName` = '黄晓明';
2、truncate 案例
将魅力值大于 100 的男神信息删除(注意:truncate不能添加筛选条件)
TRUNCATE TABLE boys WHERE usercp > 100;
truncate 相当于把表中的数据清空,只保留表的结构。
三、delete 与 truncate
1、delete 可以添加筛选条件,truncate 不可以添加筛选条件;
2、truncate 效率较高;
3、truncate 没有返回值,delete 可以返回受影响的行数;
4、truncate 不可以回滚,delete 可以回滚;
5、假如要删除的表中有自增长列,
truncate 删除后,如果再插入,标识列从1开始;
delete 删除后,如果再插入,标识列从断点开始;