返回首页

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

更新日期:2024年09月11日

bbox_dump_count
参数说明:在bbox_dump_path 定义的路径下,允许存储的GBase 8c 所产生core 文件
最大数。超过此数量,旧的core 文件会被删除。此参数只有当enable_bbox_dump 为on 时
才生效。
该参数属于USERSET 类型参数,请参考表GUC 参数设置方式中对应设置方法进行设
置。
取值范围:整型,1~20
默认值:8
说明:在并发产生core 文件时,
core 文件的产生个数可能大于bbox_dump_count。

块名称与存储空间名称遵循相同的规则。 如下所示,为存储空间或块指定明确的路径名:


如果要在 UNIX™ 上使用原始磁盘,那么必须使用已链接的路径名。(请参阅创建
到原始设备的符号链接 (UNIX)。)

如果要为数据库服务器磁盘空间使用文件,那么路径名为完整的路径和文件名。
在您创建存储空间或添加块时请使用这些命名规则。文件名必须具有以下特征:

唯一,且不超过 128 字节

以字母或下划线开头

仅包含字母、数字、下划线或 $ 字符
除非名称用引号括起,否则名称不区分大小写。在缺省情况下,数据库服务器将该名称中
的大写字符转换为小写。如果希望在名称中使用大写,请用引号将其括起,并将
DELIMIDENT 环境变量设置为 ON。

指定块的最大大小
在大多数平台上,最大块大小为 4 TB;但在其他平台上,最大块大小为 8 TB。
要确定平台所支持的块大小,请参阅机器说明文件。

指定块和存储空间的最大数量
您可在数据库服务器系统上指定存储空间的最大块数为 32,766 以及最大存储空间数为
32,766。
存储空间可以是数据库空间、BLOB 空间和智能大对象空间的任何组合。
考虑到对数据库服务器实例大小的所做的所有限制,实例的最大大小为 8 拍字节。

更改物理模式后备份
您必须对根数据库空间和修改过的存储空间执行 0 级备份,
从而确保您可在执行以下操作
时复原数据:

添加或删除镜像

删除逻辑日志文件

更改物理日志的大小或位置

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 196 -

更改您的存储管理器配置

添加、移动或删除数据库空间、BLOB 空间或智能大对象空间

对数据库空间、BLOB 空间或智能大对象空间添加、移动或删除块
重要:
添加新的逻辑日志时,
不再需要为使用新逻辑日志而对根数据库空间和修改过的数据库空间执行 0
级备份。但必须执行 0 级备份以防止 1 级和 2 级备份失败。
您必须对修改过的存储空间执行 0 级备份,
以确保执行以下操作时在转换到日志记录表类
型之前可以复原未记录的数据:

当您将非日志记录数据库转换为日志记录数据库。

当您将 RAW 表转换为标准表

联合运算使用 UNION 运算符将两个查询组合成单个复合查询。可以在两个或多个
SELECT 语句之间使用 UNION 运算符来产生一个临时表,它包含存在于任何一个原始表
或所有原始表中的行。还可以在视图的定义中使用 UNION 运算符。
不能在下列上下文的子查询内使用 UNION 运算符

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

在 SELECT 语句的 Projection 子句中

在 SELECT 、INSERT 、DELETE 或 UPDATE 语句的 WHERE 子句中
然而,
UNION 运算符在 SELECT 语句的 FROM 子句中的子查询中是有效的,
如下所示:
SELECT * FROM (SELECT col1 FROM tab1 WHERE col1 = 100) AS vtab1(c1),
(SELECT col1 FROM tab2 WHERE col1 = 10
UNION ALL
SELECT col1 FROM tab1 WHERE col1 < 50 ) AS vtab2(vc1);
GBase 8s 不支持对 ROW 类型进行排序。
由于 UNION 操作需要排序以除去重复值,
所以
当联合运算中的任一查询包括 ROW 类型数据时,不能使用 UNION 操作符。但是,数据
库服务器确实支持具有 ROW 类型数据的 UNION ALL,这是因为此类运算无需排序。
下图举例说明了 UNION 集合运算。
图: 联合集合运算

UNION 关键字选择两个查询中的所有行,
除去重复行并返回余下的行。
因为查询的结果组
合为一个结果,所以每个查询中的投影列表必须具有相同的列数。同时,从每个表选择的
相应列必须包含兼容的数据类型(CHARACTER 数据类型列的长度必须相同),并且这些
相应的列必须全部允许或全部不允许 NULL 值。
有关 SELECT 语句和 UNION 运算符的完整语法,
请参阅
《GBase 8s SQL 指南:
语法》

有关特定于 GBase 8s ESQL/C 产品和涉及 INTO 子句和复合查询的任何限制的信息,请参
阅《GBase 8s ESQL/C 程序员手册》。
下列查询对 stock 和 items 表中的 stock_num 和 manu_code 列执行联合。
图: 查询
SELECT DISTINCT stock_num, manu_code FROM stock
WHERE unit_price < 25.00

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 150 -
UNION
SELECT stock_num, manu_code FROM items
WHERE quantity > 3;
该查询选择单价小于 $25.00 或预订数量大于三的那些商品并列出
其 stock_num 和 manu_code,如下所示。
图: 查询结果
stock_num manu_code

5 ANZ
5 NRG
5 SMT
9 ANZ
103 PRC
106 PRC
201 NKL
301 KAR
302 HRO
302 KAR

将 ORDER BY 子句与 UNION 一起使用
如下列查询所示,
当包括 ORDER BY 子句时,
该子句必须跟在最后的 SELECT 语句后面,
并使用整数(而不是标识)来引用排序的列。排序在集合运算完成之后发生。
图: 查询
SELECT DISTINCT stock_num, manu_code FROM stock
WHERE unit_price < 25.00
UNION
SELECT stock_num, manu_code FROM items
WHERE quantity > 3
ORDER BY 2;
之前的复合查询选择与图 2相同的行但以制造商代码的顺序显示它们,如下所示。
图: 查询结果
stock_num manu_code

5 ANZ
9 ANZ

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 151 -
302 HRO
301 KAR
302 KAR
201 NKL
5 NRG
103 PRC
106 PRC
5 SMT

UNION ALL 关键字
缺省情况下,UNION 关键字排除重复的行。要保留重复值,添加可选关键字 ALL,如下
所示。
图: 查询
SELECT stock_num, manu_code FROM stock
WHERE unit_price < 25.00
UNION ALL
SELECT stock_num, manu_code FROM items
WHERE quantity > 3
ORDER BY 2
INTO TEMP stock item;
该查询使用 UNION ALL 关键字联合两个 SELECT 语句并在最后一个 SELECT 后面添
加 INTO TEMP 子句来将结果放置到临时列表中。它返回与图 1相同的行,但还包括重复
的值。
图: 查询结果
stock_num manu_code

9 ANZ
5 ANZ
9 ANZ
5 ANZ
9 ANZ

5 NRG
5 NRG
103 PRC

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 152 -
106 PRC
5 SMT
5 SMT

使用不同的列名
组合查询的 Projection 子句中相应的列必须具有兼容的数据类型,但各列不需要使用相同
的列名。
下列查询从 customer 表中选择 state 列及 state 表中的相应 code 列。
图: 查询
SELECT DISTINCT state FROM customer
WHERE customer_num BETWEEN 120 AND 125
UNION
SELECT DISTINCT code FROM state
WHERE sname MATCHES '*a';
该查询返回客户号 120 至 125 的州代码缩写以及其 sname 以 a 结束的州的州代码缩写。
图: 查询结果
state

AK
AL
AZ
CA
DE

SD
VA
WV
在复合查询中,
第一个 SELECT 语句中的列名或显示标注就是出现在结果中的列名或显示
标注。因此,在此查询中,使用第一个 SELECT 语句中的列名 state 而不是第一个语句中
的列名 code。

将 UNION 与多个表配合使用
以下查询对三个表执行联合运算。最大联合数取决于应用程序的实用性和任何内存限制。
图: 查询

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 153 -
SELECT stock_num, manu_code FROM stock
WHERE unit_price > 600.00
UNION ALL
SELECT stock_num, manu_code FROM catalog
WHERE catalog_num = 10025
UNION ALL
SELECT stock_num, manu_code FROM items
WHERE quantity = 10
ORDER BY 2;
该查询选择 stock 表中的 unit_price 大于 $600、catalog 表中的 catalog_num 为 10025
或 items 表中的 quantity 为 10 的商品;查询按manu_code 对数据进行排序。该结果显示了
返回值。
图: 查询结果
stock_num manu_code

5 ANZ
9 ANZ
8 ANZ
4 HSK
1 HSK
203 NKL
5 NRG
106 PRC
113 SHM

在 Projection 子句中使用文字
下列查询在投影列表中使用文字来标记联合操作的部分输出,以便今后可以区分它。为该
标记提供标号 sortkey。查询使用 sortkey 来对检索到的行进行排序。
图: 查询
SELECT '1' sortkey, lname, fname, company,
city, state, phone
FROM customer x
WHERE state = 'CA'
UNION
SELECT '2' sortkey, lname, fname, company,

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 154 -
city, state, phone
FROM customer y
WHERE state <> 'CA'
INTO TEMP calcust;
SELECT * FROM calcust
ORDER BY 1;
该查询创建一个列表,在该列表中,来自 California 的客户首先显示。
图: 查询结果
sortkey 1
lname Baxter
fname Dick
company Blue Ribbon Sports
city Oakland
state CA
phone 415-655-0011

sortkey 1
lname Beatty
fname Lana
company Sportstown
city Menlo Park
state CA
phone 415-356-9982

sortkey 2
lname Wallack
fname Jason
company City Sports
city Wilmington
state DE
phone 302-366-7511

使用 FIRST 子句
可以使用 FIRST 子句来选择由联合查询的产生的前几行。以下查询使用 FIRST 子句返
回 stock 和 items 表之间的联合的前五行。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 155 -
图: 查询
SELECT FIRST 5 DISTINCT stock_num, manu_code
FROM stock
WHERE unit_price < 55.00
UNION
SELECT stock_num, manu_code
FROM items
WHERE quantity > 3;
图: 查询结果
stock_num manu_code

5 NRG
5 ANZ
6 SMT
6 ANZ
9 ANZ