返回首页

gbase数据、南大通用产品文档:GBase8sonspaces a: 向 sbspace 添加 chunk

更新日期:2024年09月11日

语法:


GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 400 -
使用 onspaces -a 可向 sbspace 添加 chunk 。
元素
用途
关键注意事项
-a
指示要添加的 chunk
一个实例中至多包含 32766 个 chunk 。可
以将所有的这些 chunk 放置到一个存储空
间或分割在多个存储空间中
-m pathname
offset
指定镜像新 chunk 的
chunk 的可选路径名和偏
移量。另见此表中的
pathname 和 offset 条目
有关背景信息,请参阅 GBase 8s 管理员指
南 中的 管理磁盘空间 一章中的 向
sbspace 添加 chunk
-Mo mdoffset 指示应存储元数据的磁盘
空间或设备中的偏移量
(千
字节)
值可以是 0 到 chunk 大小之间的整数。您
不能指定导致元数据空间结束处超过 chunk
结束处的偏移量。
有关背景信息,请参阅 GBase 8s 管理员指
南 中的 管理磁盘空间 一章中的 缩放
sbspace 元数据的大小
-Ms mdsize
指定在初始 chunk 中分配
的元数据区域的大小
(千字
节)。剩下的是用户数据空

值可以是 0 到 chunk 大小之间的整数。
有关背景信息,请参阅 GBase 8s 管理员指
南中的 管理磁盘空间 一章中的 缩放
sbspace 元数据的大小
-o offset
在 -a 选项之后,offset
指示为到达新 blobspace
或 dbspace 的初始 chunk
所发生的磁盘分区或未缓
冲设备中的偏移量(千字
节)
无符号整数。开始偏移量必须大于等于 0 。
开始偏移量加 chunk 大小不能超过最大
chunk 大小。最大偏移量为 2 或 4 千兆字
节,这与平台有关。
有关更多消息,请参阅 GBase 8s 管理员指
南 中的 管理磁盘空间 一章中的 在UNIX™
上分配原始磁盘空间
-p pathname
指示正在创建的 sbspace
初始 chunk 的磁盘分区或
Chunk 名最多可以有 128 字节。
指定路径名
时,可以使用完整路径名或相对路径名。然

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 401 -
元素
用途
关键注意事项
未缓冲设备。
Chunk 必须是现有的未缓
冲设备或已缓冲文件
而,如果使用相对路径名,这必须相对于是
初始化数据库服务器的当前目录的目录。
有关路径名语法,请参阅操作系统文档
-U
指定应将整 chunk 用于存
储用户数据
-M 和 -U 选项是互斥的。
有关背景信息,
请参阅GBase
8s 管理员指南
中的管理磁盘空间一章中的 向 sbspace 添
加 chunk
-s size
指定新 sbspace chunk 的
大小(千字节)
无符号整数。大小必须等于或大于 1000 字
节,并且必须是页大小的倍数。开始偏移量
加 chunk 大小不能超过最大 chunk 大小。
最大偏移量是 4 太字节
sbspace
给出 chunk 将添加至的
sbspace 的名称
请参阅GBase 8s 管理员指南 中的管理磁盘
空间一章中的 向 sbspace 添加 chunk 。
语法必须符合 Identifier 段;请参阅
《GBase 8s SQL 指南:语法》。

该命令有等同的 SQL 管理 API 命令。

联合运算使用 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

mot_allow_index_on_nullable_column
参数说明:设置是否允许在内存表nullable 列上创建索引。
该参数属于POSTMASTER 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:布尔值
默认值:true