PostgreSQL删除清空表,truncate、delete、drop

主题:删除表时,如果要释放空间,需要使用TRUNCATE。

一、TRUNCATE

语法:TRUNCATE TABLE table_name;

示例:

sql 复制代码
TRUNCATE TABLE gd_4528_2020 

二、delete和drop

sql 复制代码
delete from dltb_350623_2021 where id<>158
sql 复制代码
DROP TABLE demo_contacts

三、三者比较

1、TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。

使用TRUNCATE删除后,postgre的占用空间将被释放:

2、truncate与drop是DDL语句,执行后无法回滚;delete是DML语句,可回滚。

3、truncate只能作用于表;delete,drop可作用于表、视图等。

4、truncate会清空表中的所有行,且不能带where,但表结构及其约束、索引等保持不变;drop会删除表的结构及其所依赖的约束、索引等。

5、truncate会重置表的自增值;delete不会。

6、truncate不会激活与表有关的删除触发器;delete可以。

7、truncate后会使表和索引所占用的空间会恢复到初始大小;delete操作不会减少表或索引所占用的空间,drop语句将表所占用的空间全释放掉。

相关推荐
Stone_OverLooking44 分钟前
Qt6.5.3 mingw64 Ninja编译oracle oci驱动
数据库·qt·oracle
Java爱好狂.1 小时前
如何用JAVA技术设计一个高并发系统?
java·数据库·高并发·架构设计·java面试·java架构师·java八股文
慌糖1 小时前
读书笔记之MySQL的字符集与比较规则小读
数据库
码农很忙1 小时前
从0到1搭建智能分析OBS埋点数据的AI Agent:实战指南
数据库·人工智能
安当加密1 小时前
Oracle数据库透明加密实践:基于TDE架构的安全加固方案
数据库·oracle·架构
织元Zmetaboard1 小时前
什么是态势感知大屏?
网络·数据库
NineData1 小时前
NineData 支持 DB2 迁移到 PolarDB Oracle
数据库·oracle·ninedata·数据库迁移·数据库迁移工具·信创改造·智能数据管理平台
Saniffer_SH1 小时前
【每日一题】讲讲PCIe链路训练和枚举的前后关系
运维·服务器·网络·数据库·驱动开发·fpga开发·硬件工程
倔强的石头_2 小时前
金融行业数据库选型盘点——Kingbase PLSQL迁移指南
数据库
梓沂2 小时前
解决项目容器启动时MySQL端口检测的问题
数据库·mysql