1. 语法
1.1 单表的删除
delete
delete from 表名
where 筛选条件
truncate
truncate table 表名
1.2 多表的删除
sql92语法:
delete 别名
from 表1 as 别名, 表2 as 别名
where 连接条件
and 筛选条件
limit
sql99语法:
delete 别名
from 表1 as 别名, 表2 as 别名
on 连接条件
where 筛选条件
limit
2. 单表的删除
案例:删除手机号最后一位为9的女神信息
DELETE
FROM
`beauty`
WHERE `phone` LIKE '%9' ;
3. 多表的删除
案例:删除张无忌的女朋友的信息
DELETE
b
FROM
`beauty` b
INNER JOIN `boys` bo
ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName` = '张无忌'
案例:删除黄晓明及其女朋友的信息
DELETE
b,
bo
FROM
`beauty` b
INNER JOIN `boys` bo
ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName` = '黄晓明' ;
4. truncate清空表中的数据
TRUNCATE TABLE `boys` ;
总结:
- delete可以加where条件,truncate不可以
- truncate的效率会高一点点
- 如果要删除的表中有自增长列,使用delete删除后,再插入数据,自增长列的值从断点开始;使用truncate删除的后,再插入数据,自增长列从1开始
- truncate删除没有返回值,delete删除会返回删除掉的行数
- truncate删除不能回滚,delete删除可以回滚