• 第三节:删除语句


    一、删除语句

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

  • 相关阅读:
    project euler 开坑
    hdu 5382 GCD?LCM!
    Leetcode 557. 反转字符串中的单词 III
    Leetcode 344. 反转字符串
    Leetcode 345. 反转字符串中的元音字母
    008.C++类改写模板类
    007.C++构造函数
    006.C++头文件
    02.树的序列化与反序列化(C++)
    Leetcode 94. 二叉树的中序遍历
  • 原文地址:https://www.cnblogs.com/niujifei/p/14922691.html
Copyright © 2020-2023  润新知