第三节:删除语句

一、删除语句

  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 删除后,如果再插入,标识列从断点开始;

原文地址:https://www.cnblogs.com/niujifei/p/14922691.html