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

相关推荐
用户76339900908206 分钟前
MongoDB数据库
数据库
boonya16 分钟前
数据库分库分表是考虑ShardingSphere 还是Mycat?
数据库
扶尔魔ocy17 分钟前
【qml入门】在qml项目上加入用户登录qml页面(包含源码)
数据库
沢田纲吉23 分钟前
MySQL 学习二:数据库的操作
数据库·后端·mysql
大白的编程日记.1 小时前
【MySQL】表的操作和数据类型
android·数据库·mysql
不秃的开发媛1 小时前
Java开发入门指南:IDE选择与数据库连接详解
java·数据库·ide
专注API从业者1 小时前
Scrapy 集成 JD API:一种高效且合规的商品数据采集方案
大数据·数据库·scrapy
好多171 小时前
《Redis的缓存策略》
数据库·redis·缓存
小蒜学长3 小时前
基于uni-app的蛋糕订购小程序的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·小程序·uni-app
安然~~~3 小时前
mysql多表联查
android·数据库·mysql