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语句将表所占用的空间全释放掉。

相关推荐
技术净胜7 分钟前
MySQL 8.0 超详细保姆级官方版下载安装完整教程步骤(含环境配置+安装包下载)
数据库·mysql·adb
闲人编程25 分钟前
商品管理与库存系统
服务器·网络·数据库·python·api·数据模型·codecapsule
h***381832 分钟前
maven导入spring框架
数据库·spring·maven
樱花味的小奶牛41 分钟前
DECLARE CURSOR 才允许使用 FOR UPDATE 子句
数据库·sql
XMYX-041 分钟前
CentOS 7 搭建 PostgreSQL 14 实战指南
linux·postgresql·centos
雁凡彡43 分钟前
mybatis-plus中sqlserver 查询数组中指定位置前的数据
数据库·sqlserver·mybatis
问今域中1 小时前
Spring Security登录认证
数据库·sql·oracle
JOEH602 小时前
🚀 数据库插入 1000 万数据?别再傻傻用 for 循环了!实测 5 种方式效率对比
数据库·后端
lllsure2 小时前
【MySQL】数据分片
数据库·mysql
语落心生2 小时前
深入doris查询计划以及io调度(五)列式存储结构 - 分析Segment格式、列数据编码
数据库