方式一:delete
语法:
1.单表的删除
delete from 表名 where 筛选条件
SELECT * FROM beauty
WHERE phone LIKE '%9';
DELETE FROM beauty
WHERE phone LIKE '%9';
# 删除手机号以9结尾的
2. 多表的删除
sql92:
delete 表1的别名,表2的别名
from 表1 别名, 表2 别名
where 连接条件
and 筛选条件;
sql99语法:
delete 表1的别名,表2的别名
from 表1,别名
inner | left | right join 表2 别名
on 连接条件
where 筛选条件;
# 多表的删除
#删除张无忌的女朋友信息
SELECT * FROM beauty gg
INNER JOIN boys bb
ON gg.`boyfriend_id`=bb.`id`
WHERE bb.`boyName`='张无忌';
#删除两个表中的数据
DELETE gg, bb
FROM beauty gg
INNER JOIN boys bb
ON gg.`boyfriend_id`=bb.`id`
WHERE bb.`boyName`='张无忌';
# 只删除一个表中的数据
DELETE gg
FROM beauty gg
INNER JOIN boys bb
ON gg.`boyfriend_id`=bb.`id`
WHERE bb.`boyName`='张无忌';
# 删除黄晓明及其女朋友信息
DELETE gg, bb
FROM beauty gg
INNER JOIN boys bb
ON gg.`boyfriend_id`=bb.`id`
WHERE bb.`boyName`='黄晓明';
方式二:truncate
清空表中所有数据,不支持添加where 条件
语法: truncate table 表名; 删除表中所有数据
两种方式比较:
1.delete 可以添加where条件,truncate不可以
2. truncate删除效率高一些
3. 假如要删除的表中有自增长列,
如果用delete删除后,再插入数据,自增长列从1开始
而truncate删除后,在插入数据,自增长列充1开始
4.truncate删除没有返回值,delete删除有返回值,显示几行受影响
5.truncate删除不能回滚,delete可以回滚
网友评论