数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE

一、前言在数据库中,SQL作为一种常用的数据库编程语言,扮演着至关重要的角色。SQL不仅可以用于创建、修改和查询数据库,还可以通过DROP、DELETE和TRU

大家好,今天小编来为大家解答数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE这个问题,很多人还不知道,现在让我们一起来看看吧!

• TRUNCATE 语句可以快速删除表中的所有数据,但不删除表结构。

• DELETE 语句可以删除表中的数据,不包括表结构;

2、命令比对

类别

降低

截短

删除

SQL类型

数据定义语言

数据定义语言

数据管理语言

删除内容

删除表中所有数据,包括表结构、索引、权限等。

删除表中所有数据,或指定分区中的数据

删除表的全部或部分(+条件)数据

执行速度

最快

中速

最慢的

提示:在GaussDB数据库中,DROP是用于定义或修改数据库中对象的命令之一。对象主要包括:库、模式、表空间、表、索引、视图、存储过程、函数、加密密钥等。这次我们只关注对表的操作。

三、GaussDB的DROP TABLE命令及示例

1、功能描述

DROP TABLE 的功能是删除现有的表。

2、语法

删除表[如果存在] [db_name.]table_name;说明:在SQL中添加[IF EXISTS]可以防止因表不存在而导致的执行错误。

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE

参数: db_name:数据库名称。如果未指定,将选择当前数据库。 table_name:要删除的表的名称。

3、示例

以下示例演示了DROP 命令的使用,依次执行以下SQL 语句:

–删除整个表courseDROP TABLE IF EXISTS course–创建课程表CREATE TABLE course(cid VARCHAR(10),cname VARCHAR(10),teid VARCHAR(10));–初始化数据INSERT INTO course VALUES(’01) ‘ , ‘中文’ , ’02’);INSERT INTO 课程值(’02’ , ‘数学’ , ’01’);INSERT INTO 课程值(’03’ , ‘英语’ , ’03’);–3 items Record SELECT count(1) FROM course;–删除整个表DROP TABLE IF EXISTS course–查看结果,表不存在(表结构和数据都不存在) SELECT count(1) FROM course;

1)DROP TABLE,提示表不存在

2)创建并初始化一张实验表

:010 -1010

3)DROP TABLE 执行成功

4)查看执行结果

四、GaussDB的TRUNCATE命令及示例

从表或表分区中删除所有数据,TRUNCATE 快速删除表中的所有行。它与对目标表执行无条件DELETE 具有相同的效果,但由于TRUNCATE 不执行表扫描,因此速度更快,并且使用更少的系统和事务日志资源。在大表上操作效果更加明显。

TRUNCATE TABLE 删除表中的所有行,但保留表结构及其列、约束、索引等不变。用于标识新行的计数将重置为该列的种子。

1、功能描述

TRUNCATE [TABLE] 表名;或

ALTER TABLE [IF EXISTS] 表名TRUNCATE PARTITION { 分区名| 分区名FOR (partition_value [,] ) } 参数: table_name:需要删除数据的表的名称。 partition_name:需要删除的分区表的分区名称。 partition_value:需要删除的分区表的分区值。

2、语法

以下示例演示了TRUNCATE 命令的用法:

–创建课程表DROP TABLE IF EXISTS course;CREATE TABLE course(cid VARCHAR(10),cname VARCHAR(10),teid VARCHAR(10));–初始化数据INSERT INTO course VALUES(’01’, ‘中文’ , ’02’);INSERT INTO 课程VALUES(’02’ , ‘数学’ , ’01’);INSERT INTO 课程VALUES(’03’ , ‘英语’ , ’03’);–3 条记录SELECT count( 1 ) FROM course;–清表TRUNCATE TABLE course;–或TRUNCATE course;–0 条记录SELECT count(1) FROM course;

3、示例1

1)创建实验表并初始化数据

2)TRUNCATE TABLE执行成功

3)查看执行结果

下面的示例演示了TRUNCATE 命令删除分区表数据

–创建列表分区(LIST) DROP TABLE IF EXISTS 订单;CREATE TABLE 订单(id INT PRIMARY KEY,customer_id INT,order_date DATE,product_id INT,quantity INT) PARTITION BY LIST (customer_id) (PARTITION p1 VALUES (100),PARTITION p2 VALUES (200),PARTITION p3 VALUES (300),PARTITION p4 VALUES (400),PARTITION p5 VALUES (500));–插入测试数据INSERT INTO Orders(id,customer_id,order_date,product_id,quantity)VALUES(1001 ,100,日期’20230822′,1,10);插入订单(id,customer_id,order_date,product_id,数量)值(1002,100,日期’20230822′,2,20);插入订单(id,customer_id ,order_date,product_id,数量)VALUES(1003,100,date’20230822′,3,30);插入订单(id,customer_id,order_date,product_id,quantity)VALUES(1004,200,date’20230822′,4, 40);–查看分区p1和p2的数据SELECT * FROMorders WHERE customer_id IN (100,200);–或者–根据分区名称查询SELECT * FROMordersPARTITION(p2);–清除分区p1。 ALTER TABLE 命令TRUNCATE PARTITION p1;–或–清除分区p2=200。 ALTER TABLE Orders TRUNCATE PARTITION for (200);–查看分区p1和p2的数据SELECT * FROMorders WHERE customer_id IN (100,200);

4、示例2

1)创建实验表并初始化

2)根据分区进行删数据

五、GaussDB的DELETE命令及示例

从指定表中删除满足WHERE 子句行的表。如果WHERE子句不存在,表中的所有行都会被删除,只留下表结构。

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE

1、功能描述

• DELETE 语句中不支持LIMIT。应使用WHERE 条件来指定需要更新的目标行。

• 不支持在单个SQL 语句中删除多个表。

• DELETE 语句必须有WHERE 子句以避免全表扫描。

• 禁止在DELETE 语句中使用ORDER BY 和GROUP BY 子句,以避免不必要的排序。

• 如果需要清除表,建议使用TRUNCATE 而不是DELETE。

• TRUNCATE 将创建一个新的物理文件,并在事务结束时物理删除原始文件以清除磁盘空间。 DELETE会对表中的数据进行标记,直到VACCUUM FULL阶段才会真正清除磁盘空间。

• 删除带有主键或索引的表。 WHERE条件应与主键或索引结合使用,以提高执行效率。

• DELETE 语句一次删除一行,并在事务日志中为删除的每一行记录一个条目。

• 如果要保留身份计数值,请改用DELETE

2、注意事项

DELETE FROM table_name [WHERE 条件];参数: table_name:需要删除数据的表的名称。条件:用于确定哪些行需要删除。

3、语法

重用之前的实验表:

1)删除orders表中customer_id 200的所有数据:

从customer_id 200 的订单中删除;

4、示例

• 当根据一定的业务情况需要删除数据,且数据量和性能可控时,可以考虑使用DELETE。

• 当需要删除大量数据、速度快、效率高且无需撤消时,可以使用TRUNCATE。

• 在企业级开发中,实际执行的是逻辑删除(数据被“标记为删除”),而不是物理删除。

• 实际生产环境中,业务处理中的数据(转换表)一般会被删除。

• 在实际的企业开发和维护过程中,在使用DELETE、TRUNCATE或DROP命令之前必须考虑数据备份。

六、应用场景

在GaussDB等数据库中,DROP、TRUNCATE和DELETE是常用的删除数据的命令。但在实际业务使用中,需要根据不同的需求做出准确的选择。但无论选择哪种数据删除方式,都需要考虑数据安全。 —— 重要的事情说三遍:备份!备份!备份!

用户评论

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
伤离别

这个文章解释的很清楚!我之前一直分不清DROP和TRUNCATE的区别,看着表名就懵了!这简直就是数据库入门必读啊~

    有20位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
*巴黎铁塔

刚开始接触数据库,这些SQL语句感觉有点抽象,看这篇的文章后终于明白了它们的功能区别。感谢分享!

    有10位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
你与清晨阳光

总结的很好,很实用!我之前总是用DELETE来清空表数据,现在才知道TRUNCATE更有效率啊!

    有9位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
该用户已上天

文章写得真专业,看得懂,但还是建议加上一些图示进行比喻,能帮助更直观的理解。

    有10位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
拥菢过后只剰凄凉

DROP好可怕啊,直接把表结构都删了!平时使用的时候真的要小心谨慎啊。

    有20位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
浅笑√倾城

学习了一下数据库的常用语句,感觉DROP和TRUNCATE确实容易混淆,尤其是 DROP TABLE 这么强大的命令,一定要慎重操作。这篇文章提醒了我需要更加仔细了解这些语句的使用场景。

    有10位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
你很爱吃凉皮

DELETE 和 TRUNCATE 的区别点不太明白…

    有5位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
断桥残雪

文章挺详细的,把每个语句的特点和实际应用都给讲解了。但是我个人还是更喜欢看一些代码实例啊,感觉更能理解语句的效果!

    有20位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
余笙南吟

对数据库操作还比较浅薄,这篇文章正好填补了我的一些知识空白! 学习编程真的需要不断积累呀!

    有10位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
墨城烟柳

这篇帖子真是太棒了!我一直在学习SQL,这三个语句就一直让我困惑。 现在终于明白了它们的用法区别!

    有8位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
艺菲

TRUNCATE和DELETE的区别很关键啊!以后尽量用TRUNCATE清空数据,因为它效率更高。感谢分享!

    有20位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
半梦半醒半疯癫

我觉得DROP应该作为最后的手段使用,如果要删除表的话,先备份一下好点.

    有16位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
如梦初醒

数据库管理对我很重要但是我一直在学习这些语句的使用方法,这篇博文总结的很清楚 ,感谢您的指教!

    有7位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
炙年

文章写的不错,可以作为小白学习SQL语法基础的参考教材。

    有11位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
。婞褔vīp

这篇文章真是太棒了!!帮我解决了关于DROP、TRUNCATE和DELETE语句问题!以后数据库操作我再也不用犯错啦~

    有16位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
别留遗憾

我觉得对于初学者来说,文章中的一些概念可能比较抽象难懂啊!希望可以加上一些通俗易懂的例子解释!

    有7位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
灬一抹丶苍白

感觉这篇文章更偏向于对 SQL 语句功能介绍,如果能结合实际案例说明,更加实用可行!

    有11位网友表示赞同!

数据库SQL中三个语句详解:DROP、TRUNCATE、DELETE
冷青裳

写得真好!我一直以来都不太清楚数据库SQL中的DELETE、TRUNCATE和DROP的区别,看了这篇博客就明白了!真棒!

    有11位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/120197.html

(0)
小su's avatar小su
上一篇 2024年9月1日 下午12:51
下一篇 2024年9月1日 下午12:57

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注