返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

动态注册表及注销表.................................错误!未定义书签。

功能描述
清理表数据,TRUNCATE 快速地从表中删除所有行。
它和在目标表上进行无条件的DELETE 有同样的效果,但由于TRUNCATE 不做表扫
描,因而快得多。在大表上操作效果更明显。
注意事项
TRUNCATE TABLE 在功能上与不带WHERE 子句DELETE 语句相同:二者均删除表
中的全部行。
TRUNCATE TABLE 比DELETE 速度快且使用系统和事务日志资源少:
DELETE 语句每次删除一行,并在事务日志中为所删除每行记录一项。
TRUNCATE TABLE 通过释放存储表数据所用数据页来删除数据,
并且只在事务日志中
记录页的释放。
TRUNCATE、DELETE、DROP 三者的差异如下:
TRUNCATE TABLE,删除内容,释放空间,但不删除定义。
DELETE TABLE,删除内容,不删除定义,不释放空间。
DROP TABLE,删除内容和定义,释放空间。
语法格式
清理表数据。
TRUNCATE [ TABLE ] [ ONLY ] {table_name [ * ]} [, ... ]
[ CONTINUE IDENTITY ] [ CASCADE | RESTRICT][PURGE]};
清理表分区的数据。
ALTER TABLE [ IF EXISTS
] { [ ONLY
] table_name
| table_name *

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
1268
| ONLY ( table_name )
}
TRUNCATE PARTITION { partition_name
| FOR (
partition_value
[, ...] )
};
参数说明

ONLY
如果声明ONLY,
只有指定的表会被清空。
如果没有声明ONLY,
这个表以及其所有子
表(若有)会被清空。

table_name
目标表的名称(可以有模式修饰)。
取值范围:已存在的表名。

CONTINUE IDENTITY
不改变序列的值。这是缺省值。

CASCADE | RESTRICT
CASCADE:级联清空所有由于CASCADE 而被添加到组中的表。
RESTRICT(缺省值):完全清空。
PURGE:默认将表数据放入回收站中,PURGE 直接清理。

partition_name
目标分区表的分区名。
取值范围:已存在的分区名。

partition_value
指定的分区键值。
通过PARTITION FOR 子句指定的这一组值,可以唯一确定一个分区。
取值范围:需要进行删除数据分区的分区键的取值范围。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
1269
须知:使用PARTITION FOR 子句时,partition_value 所在的整个分区会被清空。

UPDATE GLOBAL INDEX
如果使用该参数,
则会更新分区表上的所有全局索引,
以确保使用全局索引可以查询出
正确的数据;如果不使用该参数,则分区表上的所有全局索引将会失效。
示例
--创建表。
gbase=#CREATE TABLE tpcds.reason_t1 AS TABLE tpcds.reason;
--清空表tpcds.reason_t1。
gbase=#TRUNCATE TABLE tpcds.reason_t1;
--删除表。
gbase=#DROP TABLE tpcds.reason_t1;
--创建分区表。
gbase=#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)
);

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
1270
--插入数据。
gbase=#INSERT INTO tpcds.reason_p SELECT * FROM tpcds.reason;
--清空分区p_05_before。
gbase=#ALTER TABLE tpcds.reason_p TRUNCATE PARTITION p_05_before;
--清空分区p_15。
gbase=#ALTER TABLE tpcds.reason_p TRUNCATE PARTITION for (13);
--清空分区表。
gbase=#TRUNCATE TABLE tpcds.reason_p;
--删除表。
gbase=#DROP TABLE tpcds.reason_p;

函数说明
改变参数的符号。
示例
示例1:操作数为整型。
gbase> SELECT - 2 FROM dual;
+-----+
| - 2 |
+-----+
|
-2 |
+-----+
1 row in set
注意
如果操作数是BIGINT 类型,那么返回值也是BIGINT 类型。