首页 > 数据库 > > SQL语法-TRUNCATE
清理表数据,TRUNCATE快速地从表中删除所有行。
它和在目标表上进行无条件的DELETE有同样的效果,但由于TRUNCATE不做表扫描,因而快得多。在大表上操作效果更明显。
TRUNCATE [ TABLE ] [ ONLY ] {table_name [ * ]} [, ... ]
[ CONTINUE IDENTITY ] [ CASCADE | RESTRICT ];
ALTER TABLE [ IF EXISTS ] { [ ONLY ] table_name
| table_name *
| ONLY ( table_name ) }
TRUNCATE PARTITION { partition_name
| FOR ( partition_value [, ...] ) } ;
如果声明ONLY,只有指定的表会被清空。如果没有声明ONLY,这个表以及其所有子表(若有)会被清空。
目标表的名字(可以有模式修饰)。
取值范围:已存在的表名。
不改变序列的值。这是缺省值。
目标分区表的分区名。
取值范围:已存在的分区名。
指定的分区键值。
通过PARTITION FOR子句指定的这一组值,可以唯一确定一个分区。
取值范围:需要进行删除数据分区的分区键的取值范围。

使用PARTITION FOR子句时,partition_value所在的整个分区会被清空。
--创建表。
CREATE TABLE tpcds.reason_t1 AS TABLE tpcds.reason;
--清空表tpcds.reason_t1。
TRUNCATE TABLE tpcds.reason_t1;
--删除表。
DROP TABLE tpcds.reason_t1;
--创建分区表。
CREATE TABLE tpcds.reason_p
(
r_reason_sk integer,
r_reason_id character(16),
r_reason_desc character(100)
)PARTITION BY RANGE (r_reason_sk)
(
partition p_05_before values less than (05),
partition p_15 values less than (15),
partition p_25 values less than (25),
partition p_35 values less than (35),
partition p_45_after values less than (MAXVALUE)
);
--插入数据。
INSERT INTO tpcds.reason_p SELECT * FROM tpcds.reason;
--清空分区p_05_before。
ALTER TABLE tpcds.reason_p TRUNCATE PARTITION p_05_before;
--清空分区p_15。
ALTER TABLE tpcds.reason_p TRUNCATE PARTITION for (13);
--清空分区表。
TRUNCATE TABLE tpcds.reason_p;
--删除表。
DROP TABLE tpcds.reason_p;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3130334/ ,如需转载,请注明出处,否则将追究法律责任。