返回首页

gbase数据、南大通用产品文档:GBase8a分区表指定分区名的DML

更新日期:2024年09月11日

用例样表
CREATE TABLE "pt" (
"i" int(11) DEFAULT NULL,
"j" int(11) DEFAULT NULL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8
TABLESPACE='sys_tablespace'
PARTITION BY LIST (mod(i,2))
(PARTITION p0 VALUES IN (0) TABLESPACE = 'sys_tablespace' ENGINE =
EXPRESS,
PARTITION p1 VALUES IN (1) TABLESPACE = 'sys_tablespace' ENGINE =
EXPRESS)
语法DELETE
DELETE ... FROM [vc_name.][database_name.] [PARTITION
(partition_name1[, partition_name2, ...])]
示例:
gbase> insert into pt values(1,1),(2,2);
Query OK, 2 rows affected (Elapsed: 00:00:01.70)
gbase> delete from pt partition(p1);
Query OK, 1 row affected (Elapsed: 00:00:03.27)
gbase> delete from pt partition(p0,p1);
Query OK, 1 row affected (Elapsed: 00:00:00.11)
语法UPDATE
UPDATE [vc_name.][database_name.] [PARTITION

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1065
(partition_name1[, partition_name2, ...])] set…
说明:分区条件列不允许更新
示例:
gbase> insert into pt values(1,1),(2,2);
Query OK, 2 rows affected (Elapsed: 00:00:01.00)
更新指定分区数据
gbase> update pt partition (p0) set j=j+1;
Query OK, 1 row affected (Elapsed: 00:00:02.41)
gbase> select * from pt;
+------+------+
| i
| j
|
+------+------+
|
2 |
3 |
|
1 |
1 |
+------+------+
2
rows in set (Elapsed: 00:00:01.20)
gbase> update pt partition (p0,p1) set j=j+1;
Query OK, 2 rows affected (Elapsed: 00:00:03.09)
Rows matched: 2
Changed: 2
Warnings: 0
gbase> select * from pt;
+------+------+
| i
| j
|
+------+------+
|
2 |
4 |
|
1 |
2 |
+------+------+
3
rows in set (Elapsed: 00:00:00.47)

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
1066
快速更新模式下更新指定分区的数据
gbase> set gbase_fast_update=1;
Query OK, 0 rows affected (Elapsed: 00:00:01.39)
gbase> update pt partition (p0) set j=j+1;
Query OK, 1 row affected (Elapsed: 00:00:14.89)

 摘要:
允许或禁止连接的选项
 语法:
int
gbase_set_server_option(GBASE *gbase, enum
enum_gbase_set_option option);
 参数:
gbase

数据库句柄
option
GBASE_OPTION_MULTI_STATEMENTS_ON 允许多语句支持
GBASE_OPTION_MULTI_STATEMENTS_OFF
禁止多语句支持
 返回值:
0 表示成功,非0 值表示出现错误。
 错误
CR_COMMANDS_OUT_OF_SYNC
以不恰当的顺序执行了命令。
CR_SERVER_GONE_ERROR

GBase 服务器不可用。



GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司

- 45 -
CR_SERVER_LOST


在查询过程中,与服务器的连接丢失。

在您可访问和处理简单的或嵌套的集合的个别元素之前,您必须执行下列任务:

声明集合变量来保存该集合。

声明元素变量来保存集合的个别元素。

将集合从数据库选择至集合变量内。
在您做了这些初始的步骤之后,您可将元素插入到集合内,或选择或处理已在集合中的元
素。
在下列部分中,使用 numbers 表为示例,说明每一步骤。
提示: 您可在任何 SPL 例程中处理集合。

声明集合变量
在您可从数据库将集合检索至 SPL 例程内之前,
您必须声明集合变量。
下图展示如何声明
集合变量来从 numbers 表检索 primes 列。
图: 声明集合变量。
DEFINE p_coll SET( INTEGER NOT NULL );
DEFINE 语句声明集合变量 p_coll,其类型与存储在 primes 列中的集合的数据类型相匹
配。

声明元素变量
在您声明集合变量之后,请声明元素变量来保存该集合的个别元素。元素变量的数据类型
必须与集合元素的数据类型相匹配。
例如,要保存 primes 列中 SET 的元素,请使用诸如下图所示的一种元素变量声明。
图: 元素变量声明。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 294 -

DEFINE p INTEGER;
要声明保存 twin_primes 列的元素的变量,其保存嵌套的集合,请使用诸如下图所示的一种
变量声明。
图: 变量声明。
DEFINE s SET( INTEGER NOT NULL );
变量 s 保存整数的 SET。每一 SET 是存储在 twin_primes 中的 LIST 的一个元素。

将集合选择至集合变量内
在您声明集合变量之后,您可将集合访存至它内。要将集合访存至集合变量内,请输入
SELECT INTO 语句,该语句从数据库将集合列选择至您已命名了的集合变量内。
例如,要选择保存在 numbers 的 primes 列的一行中的集合,请添加 SELECT 语句至您的
SPL 例程,诸如下图展示的一个。
图: 添加 SELECT 语句来选择存储在一行中的集合。
SELECT primes INTO p_coll FROM numbers
WHERE id = 220;
SELECT 语句中的 WHERE 子句指定您想要选择只存储在 numbers 的一行中的集合。
该语
句将集合放置到集合变量 p_coll 内,图 1 声明它。
现在,变量 p_coll 保存来自 primes 列的集合,它会包含值 SET {5,7,31,19,13}。