PostgreSQL学习笔记八:高级命令TRUNCATE TABLE

在 PostgreSQL 中,TRUNCATE TABLE 语句用于从表中删除所有行,但不删除表本身。这个操作比使用 DELETE 语句删除所有行更快,因为它不记录每行的删除,而是直接截断表并重置任何关联的计数器(如自增主键)。

基本语法

TRUNCATE TABLE table_name;
  • table_name 是你想要清空数据的表的名称。

选项

  • RESTART IDENTITY:如果你的表有一个自增的主键,使用这个选项可以重置序列到它的最大值。
  • CONTINUE IDENTITY:这个选项允许序列保持当前的值,不会重置。

示例

  1. 清空表
TRUNCATE TABLE customers;

这将从 customers 表中删除所有行。

  1. 清空表并重置自增主键
TRUNCATE TABLE customers RESTART IDENTITY;

这将删除 customers 表中的所有行,并将自增主键重置为 1(或序列定义时指定的起始值)。

  1. 清空表但保留自增主键的当前值
TRUNCATE TABLE customers CONTINUE IDENTITY;

这将删除 customers 表中的所有行,但不会重置自增主键的值。

注意事项

  • TRUNCATE TABLE 是不可逆的操作,一旦执行,表中的数据将被永久删除。
  • TRUNCATE TABLE 无法在有外键约束引用的情况下使用。如果表被其他表的外键约束引用,你需要先删除或修改这些外键约束。
  • TRUNCATE TABLE 会重置表的统计信息,这可能会影响到查询计划的选择。
  • 在事务中,TRUNCATE TABLE 会立即释放磁盘空间,而 DELETE 语句则可能需要更多的时间和磁盘空间来处理行的删除。

在执行 TRUNCATE TABLE 之前,确保你已经备份了需要的数据,或者确定不再需要表中的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值