详解 MySQL 的三个删除语句:DROP、TRUNCATE 、DELETE

数据库2025-11-05 06:20:2344

一、详解前言

在数据库中,个删SQL作为一种常用的除语数据库编程语言,扮演着至关重要的详解角色。SQL不仅可以用于创建、个删修改和查询数据库,除语还可以通过DROP、详解DELETE和TRUNCATE等语句来删除数据。个删这些语句是除语SQL语言中的最常用的命令,且它们有着不同的详解含义和使用场景。

本文以GaussDB数据库为平台,个删将详细介绍SQL中DROP、除语TRUNCATE和DELETE等语句的详解含义、使用场景以及注意事项,个删帮助读者更好地理解和掌握这些常用的除语数据库操作命令。

二、GaussDB的 DROP & TRUNCATE & DELETE 简述

1、简述DROP语句可以删除整个表,包括表结构和数据;TRUNCATE语句则可以快速地删除表中的所有数据,但不删除表结构。DELETE语句可以删除表中的数据,不包括表结构;2、命令比对

大类

DROP

TRUNCATE

DELETE

SQL类型

DDL

DDL

DML

删除内容

删除表的免费信息发布网所有数据,包括表结构、索引和权限等

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

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

执行速度

速度最快

速度中等

速度最慢

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

三、GaussDB的DROP TABLE命令及示例

1、功能描述

DROP TABLE的功能是用来删除已存在的Table。

2、语法 复制DROP TABLE [IF EXISTS] [db_name.]table_name;1.

说明:SQL中加[IF EXISTS] ,可以防止因表不存在而导致执行报错。

参数:db_name:Database名称。如果未指定,站群服务器将选择当前database。table_name:需要删除的Table名称。

3、示例

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

复制--删除整个表course DROP TABLE IF EXISTS course --创建course表 CREATE TABLE course(cid VARCHAR(10),cname VARCHAR(10),teid VARCHAR(10)); --初始化数据 INSERT INTO course VALUES(01 , 语文 , 02); INSERT INTO course VALUES(02 , 数学 , 01); INSERT INTO course VALUES(03 , 英语 , 03); --3条记录 SELECT count(1) FROM course; --删除整个表 DROP TABLE IF EXISTS course --查看结果,表不存在(表结构及数据不存在) SELECT count(1) FROM course;1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.

1)DROP TABLE,提示表不存在

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

图片

3)DROP TABLE 执行成功

4)查看执行结果

四、GaussDB的TRUNCATE命令及示例

1、功能描述

从表或表分区中移除所有数据,TRUNCATE快速地从表中删除所有行。它和在目标表上进行无条件的DELETE有同样的效果,但由于TRUNCATE不做表扫描,因而快得多, 且使用的系统和事务日志资源少。在大表上操作效果更明显。

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

2、语法 复制TRUNCATE [TABLE] table_name;1.

或:

复制ALTER TABLE [IF EXISTS] table_name TRUNCATE PARTITION { partition_name | FOR ( partition_value [, ...] ) }1.

参数:table_name:需要删除数据的Table名称。partition_name:需要删除的分区表的云服务器分区名称。partition_value:需要删除的分区表的分区值。

3、示例1

以下示例演示TRUNCATE命令的使用:

复制--创建course表 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 course VALUES(02 , 数学 , 01); INSERT INTO course VALUES(03 , 英语 , 03); --3条记录 SELECT count(1) FROM course; --清空表 TRUNCATE TABLE course; --或 TRUNCATE course; --0条记录 SELECT count(1) FROM course;1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.

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

2)TRUNCATE TABLE执行成功

3)查看执行结果

4、示例2

以下示例演示TRUNCATE命令的删除分区表数据:

复制--创建列表分区(LIST) DROP TABLE IF EXISTS orders; CREATE TABLE orders ( 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,date20230822,1,10); INSERT INTO orders(id,customer_id,order_date,product_id,quantity)VALUES(1002,100,date20230822,2,20); INSERT INTO orders(id,customer_id,order_date,product_id,quantity)VALUES(1003,100,date20230822,3,30); INSERT INTO orders(id,customer_id,order_date,product_id,quantity)VALUES(1004,200,date20230822,4,40); --查看分区p1、p2的数据 SELECT * FROM orders WHERE customer_id IN (100,200); --或 --根据分区名称查询 SELECT * FROM orders PARTITION(p2); --清空分区p1。 ALTER TABLE orders TRUNCATE PARTITION p1; --或者 --清空分区p2=200。 ALTER TABLE orders TRUNCATE PARTITION for (200); --查看分区p1、p2的数据 SELECT * FROM orders WHERE customer_id IN (100,200);1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.

1)创建实验表并初始化

2)根据分区进行删数据

五、GaussDB的DELETE命令及示例

1、功能描述

从指定的表里删除满足WHERE子句的行。如果WHERE子句不存在,将删除表中所有行,结果只保留表结构。

2、注意事项不支持DELETE语句中使用LIMIT。应使用WHERE条件明确需要更新的目标行。不支持在单条SQL语句中,对多个表进行删除。DELETE语句中必须有WHERE子句,避免全表扫描。 DELETE语句中禁止不应使用ORDER BY、GROUP BY子句,避免不必要的排序。如果需要清空一张表,建议使用TRUNCATE,而不是DELETE。TRUNCATE会创建新的物理文件,并在事务结束时将原文件物理删除,清空磁盘空间。而DELETE会将表中数据进行标记,直到VACCUUM FULL阶段才会真正清理磁盘空间。DELETE有主键或索引的表,WHERE条件应结合主键或索引,提高执行效率。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。如果想保留标识计数值,请改用 DELETE3、语法 复制DELETE FROM table_name [WHERE condition];1.

参数:table_name:需要删除数据的Table名称。condition:用于判断哪些行需要被删除。

4、示例

复用前面的实验表:

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

复制DELETE FROM orders WHERE customer_id <200;1.

六、应用场景

需要根据一定的业务条件删除数据时、且数据量、性能可控的情况下,可以考虑使用 DELETE。需要删除大批量数据时,同时要求速度快,效率高并且无需撤销时,可以使用 TRUNCATE。在企业级开发中,实际上都是进行逻辑删除(将数据进行“删除标识”处理)、而并不进行物理上的删除。在实际生产环境中,一般情况下删除业务处理(过渡表)中的数据。在实际企业开发、维护过程中,不管使用 DELETE、TRUNCATE还是DROP命令前,都要考虑数据的备份。

七、小结

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

本文地址:http://www.bzuk.cn/html/092c9099817.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

快速上手(轻松实现系统启动,快速解决电脑问题)

荣耀6白色联通版4G手机的优势与魅力

飞利浦夜极光——点亮你的夜晚(探索神秘夜晚,领略极致光影美学)

七彩虹1050显卡(解析七彩虹1050显卡的特点、优势和应用场景)

电脑分区错误导致开机蓝屏重启的解决方法(解决电脑开机蓝屏问题的关键步骤和技巧)

土豆充电的奇妙之道(解密土豆充电的神秘力量,让科技与自然完美结合)

CPU3368性能评测与使用指南(探索CPU3368芯片的优势与不足,提供全面使用指南)

技嘉Z97X-UD3H主板的性能和功能(一款值得信赖的高性能主板选择)

友情链接

滇ICP备2023006006号-33