暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DB基础第十六篇:数据的删除( DELETE )

java大本营 2021-07-07
3156

DROP TABLE 语句和 DELETE 语句   

      DROP TABLE 语句可以将表完全删除。

      DELETE 语句会留下表(容器),而删除表中的全部数据。

      DROP TABLE 语句会完全删除整张表,因此删除之后再想插入数据,就必须使用 CREATE TABLE 语句重新创建一张表。

       DELETE 语句在删除数据(行)的同时会保留数据表,因此可以通过 INSERT 语句再次向表中插入数据。

DELETE 语句的基本语法

    语法4-2 保留数据表,仅删除全部数据行的 DELETE 语句
    DELETE FROM < 表名 >;

    执行使用该基本语法的 DELETE 语句,就可以删除指定的表中的全部数据行了。因此,想要删除 Product 表中全部数据行,就可以参照代码清单 4-13 来书写 DELETE 语句。

      代码清单4-13 清空 Product 表
      DELETE FROM Product;

      指定删除对象的 DELETE 语句(搜索型 DELETE )

      想要删除部分数据行时,可以像 SELECT 语句那样使用 WHERE子句指定删除条件。这种指定了删除对象的 DELETE 语句称为搜索型DELETE。

        语法4-3 删除部分数据行的搜索型 DELETE
        DELETE FROM < 表名 >
        WHERE < 条件 >

        下面让我们以 Product (商品)表为例,来具体研究一下如何进行数据删除(表 4-1)。

        假设我们要删除销售单价( sale _ price )大于等于 4000 日元的数据(代码清单 4-14)。上述表中满足该条件的是“运动 T 恤”和“高压锅”。

          代码清单4-14 删除销售单价( sale_price )大于等于4000日元的数据
          DELETE FROM Product
          WHERE sale_price >= 4000;

          法则

               可以通过 WHERE 子句指定对象条件来删除部分数据。

                与 SELECT 语句不同的是, DELETE 语句中不能使用 GROUP BY 、HAVING 和 ORDER BY 三类子句,而只能使用 WHERE 子句。原因很简单,GROUP BY 和 HAVING 是从表中选取数据时用来改变抽取数据形式的,而 ORDER BY 是用来指定取得结果显示顺序的。因此,在删除表中数据时它们都起不到什么作用。

          删除和舍弃

               标准 SQL 中用来从表中删除数据的只有 DELETE 语句。但是,很多数据库产品中还存在另外一种被称为 TRUNCATE 的语句。这些产品主要包括 Oracle、SQLServer、PostgreSQL、MySQL 和 DB2。

          TRUNCATE 是舍弃的意思,具体的使用方法如下所示。

            语法4-A 只能删除表中全部数据的 TRUNCATE 语句
            TRUNCATE < 表名 >;

            与 DELETE 不同的是, TRUNCATE 只能删除表中的全部数据,而不能通过WHERE 子句指定条件来删除部分数据。也正是因为它不能具体地控制删除对象,所以其处理速度比 DELETE 要快得多。实际上, DELETE 语句在 DML 语句中也属于处理时间比较长的,因此需要删除全部数据行时,使用 TRUNCATE 可以缩短执行时间。

            但是,产品不同需要注意的地方也不尽相同。例如在 Oracle 中,把 TRUNCATE定义为 DDL,而不是 DML 。使用 TRUNCATE 时,多加注意。便利的工具往往还是会存在一些不足之处的。

            总结:

            •  如果想将整个表全部删除,可以使用 DROP TABLE 语句,如果只想删除表中全部数据,需使用 DELETE 语句。

            •  如果想删除部分数据行,只需在 WHERE 子句中书写对象数据的条件即可。通过 WHERE 子句指定删除对象的 DELETE 语句称为搜索型 DELETE 语句。

                                            <END>

            文章转载自java大本营,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论