一、前言在数据库中,SQL作为一种常用的数据库编程语言,扮演着至关重要的角色 。SQL不仅可以用于创建、修改和查询数据库 , 还可以通过DROP、DELETE和TRUNCATE等语句来删除数据 。这些语句是SQL语言中的最常用的命令,且它们有着不同的含义和使用场景 。
本文以GaussDB数据库为平台 , 将详细介绍SQL中DROP、TRUNCATE和DELETE等语句的含义、使用场景以及注意事项,帮助读者更好地理解和掌握这些常用的数据库操作命令 。
文章插图
二、GaussDB的 DROP & TRUNCATE & DELETE 简述1、简述
- DROP语句可以删除整个表,包括表结构和数据;
- TRUNCATE语句则可以快速地删除表中的所有数据 , 但不删除表结构 。
- DELETE语句可以删除表中的数据 , 不包括表结构;
DROP
TRUNCATE
DELETE
SQL类型
【详解 MySQL 的三个删除语句:DROP、TRUNCATE 、DELETE】DDL
DDL
DML
删除内容
删除表的所有数据,包括表结构、索引和权限等
删除表中所有数据,或指定分区的数据
删除表的全部或部分(+条件)数据
执行速度
速度最快
速度中等
速度最慢
Tip:在GaussDB数据库中 , DROP是用于定义或修改数据库中的对象的命令之一 。对象主要包括:库、模式、表空间、表、索引、视图、存储过程、函数、加密秘钥等,本次只针对其对表的操作 。
三、GaussDB的DROP TABLE命令及示例1、功能描述DROP TABLE的功能是用来删除已存在的Table 。
2、语法
DROP TABLE [IF EXISTS] [db_name.]table_name;
说明:SQL中加[IF EXISTS] ,可以防止因表不存在而导致执行报错 。参数:db_name:Database名称 。如果未指定,将选择当前database 。table_name:需要删除的Table名称 。
3、示例以下示例演示DROP命令的使用,依次执行如下SQL语句:
--删除整个表courseDROP 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)DROP TABLE,提示表不存在文章插图
2)创建并初始化一张实验表
文章插图
图片
3)DROP TABLE 执行成功
文章插图
4)查看执行结果
文章插图
四、GaussDB的TRUNCATE命令及示例1、功能描述从表或表分区中移除所有数据,TRUNCATE快速地从表中删除所有行 。它和在目标表上进行无条件的DELETE有同样的效果 , 但由于TRUNCATE不做表扫描,因而快得多, 且使用的系统和事务日志资源少 。在大表上操作效果更明显 。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变 。新行标识所用的计数值重置为该列的种子 。
2、语法
TRUNCATE [TABLE] table_name;
或:ALTER TABLE [IF EXISTS] table_name TRUNCATE PARTITION { partition_name | FOR ( partition_value [, ...] ) }
参数: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;
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 五分钟让你搞懂 Http 和 Https 协议的区别是什么?
- 使用FastAPI部署YOLO模型的步骤
- 八种在 React 中实现条件渲染技术的方法
- MySQL:为什么查询一行数据也要花费上百毫秒
- 七个鲜为人知的VS Code快捷键
- Kubernetes 的调试功能 ,别慌:debug 不行,还有superdebug
- 构建强大REST API的十个最佳实践
- 前端请求到后端API的中间件流程解析
- OpenTelemetry属性命名的五个最佳实践
- MySQL:逃不掉的锁事,间隙锁