返回首页

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

更新日期:2024年09月11日

功能
指定任务号。该任务号应为在集群范围内唯一,用于防止存储在HDFS 上的Blob
文件名称冲突。
示例
示例1
--task_number ='2'
示例2
-g'2'
参数说明
表4- 107 参数说明
参数全称
参数简称
取值范围
默认值
task_number
g
1 - 64 位无符号整数
最大值
默认0,
自动随机生成


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1279
“数据类型”段指定列的、集合的组件的、ROW 类型内的字段的、例程参数的、表
达式的返回值的或强制转型函数的返回值的数据类型。无论您何时看到对语法图
中数据类型的引用时,请使用此段。
语法
数据类型

用法
下面的部分总结这些数据类型。要获取更多信息,请参阅 GBase 8s SQL 参考指
南 中关于数据类型的章节。
内建的数据类型
内建的数据类型是由数据库服务器定义的数据类型。
内建的数据类型

在解释和转换所需的信息和支持函数的意义上讲,这些是“构建在数据库服务器之
内”,这些数据类型是数据库服务器软件的一部分,支持 character、numeric、
large-object 和 time 内建数据类型的类别。在后面的部分中描述这些。
字符数据类型
字符数据类型使得数据库服务器能够存储文本字符串。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1280
字符数据类型

元素
描述
限制
语法
max
以字节计的最大大
小。对于 VARCHAR
和 NVARCHAR,这是
必需的。LVARCHAR
缺省为 2048
VARCHAR 和 NVARCHAR:
整数;1 ≤ max ≤ 255
(或 1 ≤ max ≤
254,如果建立索引的
话)LVARCHAR:1 ≤
max ≤ 32,739
精确数值
reserve 保留的字节。缺省为
0。
整数;0 ≤ reserve ≤
max
精确数值
size
以字节计的大小。缺
省为 1。
整数;1 ≤ size ≤
32,767
精确数值
如果数据类型声明包括空的圆括号,比如 LVARCHAR( ),则数据库服务器发出
错误。要声明缺省的长度的 CHAR 或 LVARCHAR 数据类型,简单地省略任何
(size) 或 (max) 规范。 GBase 8s 的 CREATE TABLE 语句接受没有 (max) 也没
有 (max, reserve) 规范的 VARCHAR 和 NVARCHAR 列声明,使用 ( 1, 0 ) 作
为该列的 (max, reserve) 缺省值。
下表总结内建的字符数据类型。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1281
数据类型
描述
CHAR
存储固定长度(最多 32,767 字节)的单字节或多字节文
本字符串;支持文本数据的次序中的代码集顺序。缺省的
大小为 1 字节。
CHARACTER
CHAR 的同义词
CHARACTER
VARYING
VARCHAR 的符合 ANSI 的同义词
LVARCHAR
存储可变长度(最多 32,739 字节)的单字节或多字节文
本字符串。在同一表中其他列的大小可进一步降低此上
限。缺省的大小为 2,048 字节。
NCHAR
存储固定长度(最多 32,767 字节)的单字节或多字节文
本字符串;支持文本数据的本地化次序。
NVARCHAR
存储可变长度(最多 255 字节)的单字节或多字节文本
字符串;支持文本数据的本地化次序。
VARCHAR
存储可变长度(最多 255 字节)的单字节或多字节文本
字符串;支持文本数据的代码集顺序次序。
单字节和多字节字符和语言环境
所有内建的字符数据类型可支持 DB_LOCALE 设置指定的字符集中的单字节和
多字节字符。大多数欧洲和中东语言的语言环境仅支持单字节代码集,但
Unicode 语言环境的 UTF-8 代码集以及一些东亚语言环境的代码(比如中文
GB18030-2000 语言环境)支持多字节逻辑字符。
当启用 SQL_LOGICAL_CHAR 配置参数时,您可指导数据库服务器将内建的字
符数据类型的声明中显式的或缺省的大小参数解释为指定可存储的逻辑字符的数
目,而不是字节数。这些逻辑的字符语义也适用于其基础类型为内建的字符类型
的 DISTINCT 类型,并适用于命名的或未命名的 ROW 数据类型的声明中的内
建的字符类型的字段。然而,此特性不支持存储字符字符串的用户定义的数据类
型(UDT)。要获取更多关于此特性的信息,请参阅 GBase 8s 管理员参考手册
对 SQL_LOGICAL_CHAR 配置参数的描述。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1282
TEXT 和 CLOB 数据类型也支持单字节或多字节字符数据,但大多数操作字符串
的内建的函数不支持 TEXT 也不支持 CLOB 数据。要获取更多信息,请参阅 大
对象数据类型。
固定长度或可变长度字符数据类型
数据库服务器支持固定长度和可变长度字符数据的存储。固定长度列需要定义的
字节数而不管实际的数据大小。CHAR 数据类型属于固定长度。例如,CHAR(25)
列对于所有值需要 25 字节的存储,因此字符串 "This is a text string"
使用 25 字节的存储。
可变长度列大小可为它的数据占据的字节数。NVARCHAR、VARCHAR 和
LVARCHAR 数据类型是可变长度字符数据类型。例如,VARCHAR(25) 列为列
值最多保留 25 字节的存储,但字符串 "This is a text string" 仅使用
保留的 25 字节中的 21 字节。VARCHAR 数据类型最多可存储 255 字节数
据。要获取关于 IFX_PAD_VARCHAR 环境变量的信息,其设置控制数据库服
务器发送和接收 VARCHAR 和 NVARCHAR 数据值的方式,请参阅 GBase 8s
SQL 参考指南。
由于行大小的最大限制为 32,767 字节,因此不可以多于大约 195 可变长度或
ROW 类型列创建单个表。
访问有可变长度列的大型表
对于带有多于一百万行的表,如果查询执行轻扫描,而不是缓冲池扫描,则使用
全表扫描或跳跃扫描访问方法的查询更加高效。然而,在包括 NVARCHAR、
VARCHAR 或 LVARCHAR 数据类型列,或其基础类型为可变长度列的
DISTINCT 数据类型的列的表上,不支持轻扫描,除非将
BATCHEDREAD_TABLE 配置参数(或 BATCHEDREAD_TABLE 会话环境选
项)设置为 1。
限制:
在正启用 BATCHEDREAD_TABLE 上轻扫描的依赖还适用于其模式或存储属性
包括下列任何情况的表:

表压缩

任何可变长度数据类型的列

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1283

占据超过单个存储页的行。
要获取更多关于查询优化器何时选择执行轻扫描的执行路径来访问大型表的信
息,请参阅您的 GBase 8s 性能指南。
LVARCHAR 数据类型
GBase 8s 的 LVARCHAR 类型可存储最多 32,739 字节的文本,但如果您在
LVARCHAR 数据类型声明中未指定 size,则缺省的长度为 2,048 字节。
LVARCHAR 是内建的 opaque 数据类型。不像大多数内建的 opaque 类型那样,
可在分布式查询或其他 DML 操作中的非本地的 GBase 8s 实例的数据库中访问
LVARCHAR 列值,且 LVARCHAR 可为访问本地数据库之外的数据的 UDR 的
参数或返回值的数据类型。
GBase 8s 在对 opaque 数据类型的跨服务器 I/O 操作中使用 LVARCHAR 数据
类型。在此上下文中,LVARCHAR 数据值的最大大小仅受操作系统的限制。
在包括 LVARCHAR 列的表上不支持查询执行期间的轻扫描,除非将
BATCHEDREAD_TABLE 配置参数(或 BATCHEDREAD_TABLE 会话环境选
项)设置为 1。
NCHAR 和 NVARCHAR 数据类型
字符数据类型 NCHAR 和 NVARCHAR 可支持在某些数据库语言环境中次序的
本地化顺序。在以 NLSCASE INSENSITIVE 属性创建的数据库中,NCHAR 和
NVARCHAR 列(以及强制转型到这些数据类型的字符串值)可支持区分大小写
的查询。
字符数据类型 CHAR、LVARCHAR 和 VARCHAR 支持数据的代码集顺序次
序。这是在 DB_LOCALE 环境变量指定的数据库语言环境的代码集内,在其中
定义字符的顺序。缺省的(U.S. English)语言环境是为了排序 CHAR、
LVARCHAR 和 VARCHAR 字符串值而使用次序的代码集顺序的语言环境的一
个示例。
要获取关于 DB_LOCALE、CLIENT_LOCALE 和 SERVER_LOCALE 环境变
量的设置(或缺省值)确定为次序使用哪一语言环境的方式的信息,请参阅
GBase 8s GLS 用户指南。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1284
然而,有些语言环境指定不同于代码集顺序的一个次序的顺序。要支持任何次序
的特定于语言环境的顺序,您可使用 NCHAR 和 NVARCHAR 数据类型。
NCHAR 数据类型是支持本地化次序的固定长度字符数据类型。NVARCHAR 数
据类型是可存储最多 255 字节的文本数据的可变长度字符数据类型,且支持本地
化次序。在代码集未定义次序的本地化顺序的语言环境中,比如缺省的语言环
境,在 CHAR 与 NCHAR 数据类型之间没有差异,在 VARCHAR 与
NVARCHAR 数据类型之间也没有差异,除了在区分大小写的数据库中之外。
在以 NLSCASE INSENSITIVE 属性创建的数据库中,存储这些数据类型的值恰
如将它们加载到数据库内,但在数据处理操作中,包括 NVARCHAR 和 NCHAR
字符串的比较和对照,数据库服务器不理会字母大小写,不考虑大小写对数据值
排序。例如,在有次序的列表中,NCHAR 或 NVARCHAR 字符串 "PH" 可能
在 "pH" 或 "ph" 之前也可能在之后,在其中将这三个字符串视作重复,依赖
于检索这些值的顺序。要获取更多关于在区分大小写的数据库中 NCHAR 或
NVARCHAR 数据处理的信息,请参阅 指定 NLSCASE 区分大小写、在
NLSCASE INSENSITIVE 数据库中重复的行 和 在区分大小写的数据库中的
NCHAR 和 NVARCHAR 表达式。
对于 NCHAR 或 NVARCHAR 值,SQL 的 SET COLLATION 语句可通过指定
另一语言环境来覆盖当前会话的本地化的次序顺序。根据当创建索引时生效了的
本地化的次序顺序,对 NCHAR 或 NVARCHAR 列上的索引值排序,如果其不
同于当前的次序顺序的话。要获取更多关于 SET COLLATION 语句可影响索引、
约束、游标、准备好的对象和 SPL 例程的排序行为的方式的信息,请参阅 由数
据库对象执行的对照。
如果您在声明 VARCHAR 或 NVARCHAR 列的 CREATE TABLE 或 ALTER
TABLE 语句中未指定参数,则新列的缺省的 max 大小为 1 字节,且 reserve
大小为零。
在区分大小写的数据库中的 NCHAR 和 NVARCHAR 表达式
在以 NLSCASE INSENSITIVE 属性创建的数据库中,数据库服务器在 NCHAR
和 NVARCHAR 表达式中相同字母的大写变量与小写变量之间不做区分,不论是
否为语言环境定义了本地化的次序顺序。
如果在关系运算符的运算对象之中,或在字符串函数的参数之中,字母大小写变
量是唯一的区别,则与在区分大小写的数据库中同一表达式上的同一操作相对

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1285
比,对字母大小的这种忽略可更改 NCHAR 或 NVARCHAR 表达式上区分大小
写的操作返回的值。
例如,假设对于缺省的语言环境中的数据库的表中的记录,NCHAR 列 lname 存
储值 McDavid。
在区分大小写的数据库中,布尔表达式 lname > "MCDAVID" 求值为真,因为
数据库服务器使用缺省的语言环境的代码集顺序来比较这两个运算对象。虽然两
个字符串都是以大写字母 M 开头,但该列值中的下一字符是小写字母 c(ASCII
99 代码点),但括起来的字符串中的下一字符是大写字母 C( ASCII 67 代码
点)。由于 99 大于 67,因此,在区分大小写的数据库中,列值大于括起来的字
符串。
然而,在不区分大小写的数据库中,同一表达式 lname > "MCDAVID" 求值为
假,因为在数据库服务器比较这两个运算对象时,它不管字母大小写变量。两个
字符串都有同样序列的同样字符,因此按照这些标准,列值与括起来的字符串是
一样的。
在包括 NCHAR 或 NVARCHAR 运算对象的比较过程中,由于有 NLSCASE
INSENSITIVE 属性的数据库不管字母的大小写, 因此,在不区分大小写的数据库
中,在 NCHAR 或 NVARCHAR 字符串上的操作产生的结果可不同于在区分大小写的
数据库中的结果。 区分大小写的数据库在其中的上下文与不区分大小写的数据库
在其中的上下文可能使用相同的 SQL 操作来从相同的数据集返回不同的结果,包
括这些:

排序和次序

外键和主键依赖

强制唯一的约束

集群化的索引

访问方式优化器伪指令

带有 WHERE 谓词的查询

在 projection 子句中带有 UNIQUE 或 DISTINCT 的查询

带有 ORDER BY 子句的查询

带有 GROUP BY 子句的查询

级联的 DELETE 操作

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1286

表或索引存储分发 BY EXPRESSION

表或索引存储分发 BY LIST

来自 UPDATE STATISTICS 操作的数据分发。
数值数据类型
数值数据类型使得数据库服务器能够在列中存储诸如整数和实数这样的数。
数值数据类型

数目的值被存储为 exact numeric 数据类型或为 approximate numeric 数据类型。
精确的数值数据类型
精确的数值数据类型存储指定的精度和范围的数值。
精确的数值数据类型

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1287

元素
描述
限制
语法
precision
有效数字
必须为整数;1 ≤ precision ≤
32
精确数值
scale
小数部分
中的数字
必须为整数;1 ≤ scale ≤
precision
精确数值
start
整数起始

对于 SERIAL:1 ≤ start ≤
2,147,483,64; 对于 BIGSERIAL
和 SERIAL8: 1 ≤ start ≤
9,223,372,036,854,775,807
精确数值
数据类型的精度是该数据类型存储的数字的数目。范围是小数点分隔符右边的数
字的数目。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1288
下表总结可用的精确的数值数据类型。
数据类型
描述
DEC(p,s)
DECIMAL(p,s) 的同义词
DECIMAL(p,s) 存储实数的定点小数值,在小数部分中最多 20 位有效数
字,或在小数点的左边最多 32 位有效数字。
INT
INTEGER 的同义词
INTEGER
存储 4 字节整数值。这些值的取值范围可从 -(231-1) 至
231-1(从 -2,147,483,647 至 2,147,483,647)。
BIGINT 和
INT8
存储 8 字节整数值。这些值的取值范围可从 -(263-1) 至
263-1(从 -9,223,372,036,854,775,807 至
9,223,372,036,854,775,807)。 BIGINT 有比 INT8 更大的
存储和处理优势。
MONEY(p,s)
存储定点货币值。这些值与定点 DECIMAL(p,s) 值有相同的
内部数据格式。
NUMERIC(p,s) DECIMAL(p,s) 的符合 ANSI 的同义词
SERIAL
存储数据库服务器生成的 4 字节正整数。取值范围从 1 至
231-1(即,从 1 至 2,147,483,647)。
BIGSERIAL 和
SERIAL8
存储数据库服务器生成的 8 字节正整数。取值范围从 1 至
263-1(即,从 1 至 9,223,372,036,854,775,807)。
BIGSERIAL 比 SERIAL8 有更大的存储和处理优势。
SMALLINT
存储 2 字节的整数值。这些值的取值范围从 -(215-1) 至
215-1(即,从 -32,767 至 32,767)。
DECIMAL(p,s) 数据类型
参数 p 指定精度(数字的总数目),第二个参数(s)指定范围(小数部分中的
数字的数目)。如果您仅提供一个参数,则符合 ANSI 的数据库将它解释为定长
数值的精度,且缺省的范围为 0。如果您未指定参数,且该数据库符合 ANSI,
则在缺省情况下精度为 16 且范围为 0。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1289
如果数据库不符合 ANSI,且您指定的参数少于 2 个,则您声明浮点
DECIMAL,这不是精确的数值数据类型。(另请参阅 近似的数值数据类型 部
分。)
DECIMAL(p, s) 值的内部存储方式是,第一个字节代表符号位,以及一个 excess-
65 格式的 7 位指数。其他的字节表示尾数作为 base-100 数字。这表示如果 s
是奇数,则 DECIMAL(32, s) 数据类型仅在小数点的右边存储 s-1 个小数数字。
Serial 数据类型
您可声明 SERIAL、BIGSERIAL 或 SERIAL8 数据类型的列。如果用户定义的例
程需要变量、参数或返回的数据类型的全数值值,则请指定 INT、BIGINT 或
INT8 作为数据类型,而不是 SERIAL、BIGSERIAL 或 SERIAL8。这些数据类
型是整数数据类型,其主要的不同之处在于它们的名称、它们的范围和它们的存
储需求。序列数据类型的列不可存储小于 1 的值。表可只有一个 SERIAL 列且
只有一个 BIGSERIAL 或 SERIAL8 列。因为通过数据库服务器指定该序列值,
因此您不可使用 UPDATE 语句来更改数据库中现有的序列值。
要将显式的值插入到 SERIAL、BIGSERIAL 或 SERIAL8 列内,请指定任何大于
零的整数。要获取生成整数值的替代方法的详细信息,请参阅 CREATE
SEQUENCE 语句。
仅当您在列上设置唯一索引,SERIAL、BIGSERIAL 或 SERIAL8 列才是唯一
的。(该索引还可为主键或唯一约束的形式。)带有唯一索引,序列数据类型列
中的值保证是唯一的,但随后的值没有必要是连续的。
近似的数值数据类型
近似的数值数据类型近似地表示数值值。
近似的数值数据类型

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1290

元素
描述
限制
语法
float_precision
忽略
float_precision,但
这符合 ANSI/ISO。
必须为正整数。
指定的值没有作
用。
精确数值
precision
有效数字。缺省值为
16。
整数;1 ≤
precision ≤
32
精确数值
对于在算术操作期间容许一定程度舍入的很大和很小的数值,请使用近似的数值
数据类型。
下表总结内建的近似的数值数据类型。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1291
数据类型
描述
DEC(p)
DECIMAL(p) 的同义词
DECIMAL(p)
存储从 1.0E-130 至 9.99E+126 的近似的范围内的浮点小数

参数 p 指定精度。如果未指定精度,则缺省值为 16。仅在不
符合 ANSI 的数据库中才可用浮点数据类型作为近似的数值类
型。 在符合 ANSI 的数据库中,实现 DECIMAL(p) 作为定点
DECIMAL;请参阅 精确的数值数据类型。
DOUBLE
PRECISION
FLOAT 的 符合 ANSI 的同义词。当您在数据类型声明中使用
此同义词时,float_precision 术语无效。
FLOAT
存储最多带有 16 位有效数字的双精度浮点数值。为了符合
SQL 的 ANSI/ISO 标准,在数据类型声明中接受 float-
precision 参数,但此参数对数据库服务器存储的值的实际精
度不起作用。
NUMERIC(p)
DECIMAL(p) 的符合 ANSI 的同义词。在符合 ANSI 的数据库
中,这是作为精确的数值类型来实现的,带有指定的精度和范
围零,而不是近似的数值(浮点)数据类型。
REAL
SMALLFLOAT 的符合 ANSI 的同义词
SMALLFLOAT
存储近似地带有 8 位有效数字的单精度浮点数值
GBase 8s 数据库服务器的内建的数值数据类型支持实数。它们不直接地存储虚数
或复数。
在 GBase 8s 中,您必须为支持可有虚数部分的值的应用创建用户定义的数据类
型。
外部 UDR 的不超过九个参数可为 UDR 声明作为 Java™ 语言的 BigDecimal
数据类型的 SQL 的 DECIMAL 数据类型。
大对象数据类型
大对象数据类型可独立于列存储极大的列值,诸如图片和文档。
大对象数据类型

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1292

元素
描述
限制
语法
blobspace
现有的 blobspace 的名称
必须存在
标识符
大对象数据类型可划分为两类:

简单大对象:TEXT 和 BYTE

智能大对象:CLOB 和 BLOB
简单大对象数据类型
简单大对象数据类型在 blobspace 中存储文本或二进制数据。
这些是简单大对象数据类型:
TEXT 存储最大 231 字节的文本数据
BYTE 存储最大 231 字节的任何数字化数据
在需要 TEXT 的地方,请不要提供 BYTE 值。没有内建的强制转换支持由
BYTE 到 TEXT 的数据类型转换。
由于最大的行大小的限制为 32,767 字节,因此您不可创建带有近似地多于 195
BYTE 或 TEXT 列的表。(此限制也适用于所有可变长度数据类型和 ROW 数
据类型。)
要获取更多关于简单大对象数据类型的信息,请参阅 GBase 8s SQL 参考指南。
要获取关于如何创建 blobspace 的信息,请参阅 GBase 8s 管理员指南。
存储 BYTE 和 TEXT 数据
简单大对象数据类型可在 blobspace 或在表中存储文本或二进制数据。数据库服
务器可完整地访问 BYTE 或 TEXT 值。当您指定 BYTE 或 TEXT 数据类型

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1293
时,您可指定存储它的位置。您可以表存储数据,或在单独的 blobspace 中存储
数据。
如果您正在创建有 BYTE 或 TEXT 字段的命名的 ROW 数据类型,则您不可使
用 IN 子句来指定单独的存储空间。
下列示例展示如何指定 blobspace 和 dbspace。用户创建 resume 表。数据值存
储在 employ dbspace 中。以表存储 vita 列中的数据,但与 photo 列相关联的
数据存储在名为 photo_space 的 blobspace 中。
CREATE TABLE resume
(
fname CHAR(15),
lname CHAR(15),
phone CHAR(18),
recd_date DATETIME YEAR TO HOUR,
contact_date DATETIME YEAR TO HOUR,
comments VARCHAR(250, 100),
vita TEXT IN TABLE,
photo BYTE IN photo_space
)
IN employ;
智能大对象数据类型
智能大对象数据类型在 sbspace 中存储文本或二进制数据。
数据库服务器可提供对智能大对象值的随机访问。也就是说,它可访问智能大对
象值的任何部分。这些数据类型是可恢复的。下列列表总结 GBase 8s 支持的智
能大对象数据类型。
BLOB 存储最多 4 TB(4*240 字节)的二进制数据
CLOB 存储最多 4 TB(4*240 字节)的文本数据
在单个 sbspace 中存储智能大对象。SBSPACENAME 配置参数指定在其中创建
智能大对象的系统缺省的 sbspace,除非您指定另一存储区域。要获取关于
CREATE TABLE 语句如何可为 BLOB 或 CLOB 列指定非缺省的存储位置和非
缺省的存储特征的信息,请参阅 PUT 子句 的描述。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1294
这两个都是内建的 opaque 数据类型。像大多数 opaque 类型那样,不可通过分布
式查询或通过其他 DML 操作在非本地数据库服务器的数据库中访问它们,也不
可通过 UDR 从另一数据库服务器的数据库返回它们。然而,要获取关于在本地
服务器的其他数据库中访问 BLOB 或 CLOB 值的信息,请参阅 BOOLEAN 和
其他内建的 Opaque 数据类型。
智能大对象数据类型是不能并行的。Dynamic Serve 的 PDQ 特性对加载或卸载
BLOB 或 CLOB 值的操作不起作用,对在查询或在其他 DML 操作中处理它们
的操作也不起作用。
要获取更多关于智能大对象数据类型的信息,请参阅 GBase 8s SQL 参考指南。
要获取关于如何创建 sbspace 的信息,请参阅您的 GBase 8s 管理员指南。
要获取关于您可用于导入、导出或复制智能大对象的内建的函数的信息,请参阅
智能大对象函数 和 GBase 8s SQL 教程指南。
时间数据类型
时间数据类型存储日历日期、时间点以及时间间隔。
时间数据类型

下表总结内建的时间数据类型。
数据类型 描述
DATE 存储日期值作为 Julian 日期,取值范围从公元 1 年 1 月 1 日
直至 公元9999 年 12 月 31 日。
DATETIME 存储时间点日期(年、月、日)和每日时间(小时、分、秒和几
分之一秒),取值范围从 1 年至 9999 年。也支持这些时间单位
的相邻子集。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1295
INTERVAL 存储时间范围,以年数和/或月数的形式,或以更小的时间单位的
形式(天数、小时数、分钟数、秒数 和/或几分之一秒),最大
的时间单位达到 9 位数值精度,如果这不是 FRACTION 的话。
还支持这些时间单位的相邻子集。
TIMESTAMP 存储时间点日期(年、月、日)和每日时间(小时、分、秒和几
分之一秒)。
要了解可指定内建的时间数据类型的显示和数据条目格式的 GBase 8s 环境变量
之中的优先顺序,请参阅主题 DATE 和 DATETIME 格式规范的优先顺序。
DATETIME 字段限定符
使用 DATETIME Field Qualifier 来指定 DATETIME 列或值中的最大和最小时间
单位。无论何时在语法图中查看对 DATETIME Field Qualifier 的引用时,请使用
此段。
语法
DATETIME Field Qualifier

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1296


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1297
元素
描述
限制
语法
scale
几分之一秒。缺省值为
3。
整数(1 ≤ scale ≤
5)
精确数值
用法
此段指定 DATETIME 数据类型的精度和小数位。
作为第一个关键字,指定 DATETIME 列将存储的最大时间单位。在关键字 TO
之后,指定最小的单位作为最后一个关键字。它们可以是同一个关键字。如果不
同,那么限定符暗示在第一个和最后一个之间的中间时间单位通过 DATETIME
数据类型记录。
这些关键字可为 DATETIME 列指定下列时间单位。
时间的单位 描述
YEAR 指定年份,取值范围从公元 1 年至 9999 年
MONTH 指定月份,范围为从 1(一月)值 12(十二月)
DAY 指定日期,范围为从 1 至 28、29、30 或 31(根据特定月份)
HOUR 指定小时,范围为从 0(午夜)至 23
MINUTE 指定分钟,范围为从 0 至 59
SECOND 指定秒,范围为从 0 至 59
FRACTION 指定几分之一秒,最多五位小数
缺省的范围为三位数字(千分之一秒)。
与 INTERVAL 限定符不同,DATETIME 限定符不可指定非缺省的精度(当
FRACTION 是该限定符中最小的单位时,FRACTION 除外)。DATETIME 限定符的一
些示例如下:
YEAR TO MINUTE MONTH TO MONTH
DAY TO FRACTION(4) MONTH TO DAY
在某些平台上,系统时钟不可支持大于 FRACTION(3) 的精度。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1298
如果第一个关键字表示的时间单位比最后的一个关键字所表示的小,或使用了关
键字的复数形式(如 MINUTES),就会产生错误。
对在限定符中不包含 YEAR 的 DATETIME 的值的运算,使用系统时钟日历值
来提供所有额外的精度。如果限定符的第一个术语是 DAY,且当前月份少于 31
天,则可能产生意外的结果。
INTERVAL 字段限定符
INTERVAL 字段限定符以时间单位指定 INTERVAL 值的精度。每当您在语法图
中看到对 INTERVAL 字段的引用时,请使用 INTERVAL Field Qualifier 段。
语法
INTERVAL 字段限定符


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1299
元素
描述
限制
语法
scale
FRACTION 字段中数字的个数。缺省值
为 3。
取值范围必
须为从 1
至 5
精确数值
precision INTERVAL 包含的最大时间单位中数字
的个数。对于 YEAR,缺省值为 4。对
于除 FRACTION 外的其他所有时间单
位,缺省值为 2。
取值范围必
须为从 1
至 9
精确数值
用法
此段指定 INTERVAL 数据类型的精度和小数位。
指定 largest 时间单位的关键字必须是第一个关键字,而指定 smallest 时间单
位的关键字必须跟在 TO 关键字之后。它们可以是同一个关键字。此段与
DATETIME 字段限定符 的语法类似,但有这些例外:

如果最大时间单位关键字是 YEAR 或 MONTH,那么最小时间单位关键
字不能指定小于 MONTH 的时间单位。

可在第一个时间单位后面指定最大为 9 位数字的precision,除非
FRACTION 是第一个时间单位(在此情况下在第一个 FRACTION 关键
字之后,没有任何 precision 是有效的,但可在第二个 FRACTION 关键
字之后指定多达 5 位数字的 scale)。
由于 year 和 month 不是定长的时间单位,数据库服务器将在限定符中包含
YEAR 或 MONTH 关键字的 INTERVAL 数据类型与限定符小于 MONTH 的时
间单位的 INTERVAL 数据类型不兼容。数据库服务器不支持在这两种
INTERVAL 数据类型之间的隐式强制转型。
以下两个示例显示 INTERVAL 数据类型的 YEAR TO MONTH 限定符。第一个示例可
以允许最大为 999 年 11 个月的时间间隔,因为它给出了 3 作为 YEAR 字段的
精度。第二个示例对 YEAR 字段使用缺省精度,因此可允许最大为 9999 年和 11
个月的时间间隔。
YEAR (3) TO MONTH
YEAR TO MONTH

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1300
当需要一个值只指定一种时间单位时,第一个和最后一个限定符是相同的。例
如,整年之间的时间间隔可以限定为 YEAR TO YEAR 或 YEAR (5) TO YEAR。
用来指定最大 9999 年的时间间隔。
下列示例显示 INTERVAL 字段限定符的几种格式:
YEAR(5) TO MONTH
DAY (5) TO FRACTION(2)
DAY TO DAY
FRACTION TO FRACTION (4)
要获取关于如何指定 INTERVAL 字段限定符以及如何在算术和关系运算中使用
INTERVAL 数据的信息,请参阅相关的参考,INTERVAL 数据类型。
TIMESTAMP 字段限定符
此段指定 TIMESTAMP 数据类型的精度和范围。
TIMESTAMP Field Qualifier 与 DATETIME Field Qualifier 的功能类似。唯一不同
的是,其中指定几分之一秒的 FRACTION 时间单位值可以是 1 到 6 范围内的
数字,缺省值为 0。
BOOLEAN 和其他内建的 Opaque 数据类型
GBase 8s 还支持 BOOLEAN 数据类型,这是可存储 true、false 或 NULL
值的内建的 opaque 数据类型。符号 t 表示字面的 BOOLEAN true 值,f 表
示字面的 BOOLEAN false 值。
BOOLEAN 是 LVARCHAR 可通过跨服务器分布式查询或通过其他跨服务器分
布式 DML 操作返回的唯一内建的 opaque 数据类型。不可通过分布式查询(在
远程数据库上通过 INSERT、DELETE 或 UPDATE 操作不修改)检索其他内建
的 opaque 数据类型的列值,除非该 DML 操作访问的所有表都在本地的 GBase
8s 实例的数据库中。
类似地,在其他 GBase 8s 实例的数据库上执行分布式操作的 UDR 中,
BOOLEAN 和 LVARCHAR 是作为参数或作为返回的该 UDR 的数据类型唯一
有效的内建的 opaque 类型,必须在所有参与的数据库中定义该类型。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1301
除了 BOOLEAN 类型之外, GBase 8s 的其他内建的 opaque 数据类型包括
BLOB、CLOB、LVARCHAR、IFX_LO_SPEC、IFX_LO_STAT、
INDEXKEYARRAY、POINTER、RTNPARAMTYPES、SELFUNCARGS、
STAT、CLIENTBINVAL 和 XID 数据类型。在本地数据库中以及在同一服务器
实例的跨数据库分布式操作中,支持这十二个内建的 opaque 类型。在本章的随
后部分中讨论这些类型中的前三个。
GBase 8s 还支持内建的 opaque 数据类型 LOLIST、IMPEX、IMPEXBIN 和
SENDRECV。然而,不可通过 DML 操作在远程数据库中访问这些类型,也不通
过 UDR 从远程数据库返回,因为这些数据类型没有所需要的支持函数。要获取
更多的关于 GBase 8s 在分布式事务中支持的数据类型的信息,请参阅 分布式查
询中的数据类型。
IDSSECURITYLABEL 数据类型
GBase 8s 的 IDSSECURITYLABEL 类型在受安全策略保护的表中存储安全标
签。仅持有 DBSECADM 角色的用户可创建、修改或删除此数据类型的列。这是
内建的 DISTINCT OF VARCHAR(128) 数据类型,但未将它分类作为字符数据类
型,因为将它的使用限定在基于标签的访问控制。有安全策略的表可有多个
IDSSECURITYLABEL 列,未与安全策略相关联的表可没有这样的列。
DBSECADM 可使用 GRANT 语句来将特定的安全标签与用户相关联,且
REVOKE 语句可取消用户持有的安全标签。对于给定的安全策略,用户可有多个
既支持读访问也支持写访问的标签,或只有一个写访问标签和只有一个读访问标
签。对于受安全策略保护,但已将自主访问权限授予了用户的数据,数据库服务
器通过将数据的安全标签与用户的安全标签相对比来确定特定的用户可否访问该
数据,同时还考虑该用户持有的安全策略规则是否存在任何豁免。
要获取指定 IDSSECURITYLABEL 值的方式的信息,请参阅 安全标签支持函
数。
要获取安全策略、安全组件、安全标签以及基于标签的访问控制(LBAC)的其他
概念的讨论,请参阅 GBase 8s 安全指南。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1302
SYS_RECURSOR 游标类型
本版 GBase 8s 支持 SYS_RECURSOR 游标类型,用于定义游标变量、游标类型
的参数和返回类型。支持现有数据类型在 DEFINE、CREATE PROCEDURE、
CREATE FUNCTION 中的使用方法。
游标类型 SYS_RECURSOR 定义的变量为游标变量。作为 SPL_var 的一种,支
持现有 SPL_var 在 LET、RETURN 中的用法,用于游标变量赋值、返回游标变
量。

用户定义的数据类型
用户定义的数据类型是用户为数据库服务器定义的一种数据类型。 GBase 8s 支
持两类用户定义的数据类型,即 distinct 数据类型和 opaque 数据类型。这是
用户定义的数据类型的声明语法:
用户定义的数据类型

元素
描述
限制
语法
distinct_type
带有与现有的数据类型
有相同结构的
distinct 数据类型
在数据库中的数据
类型名称之中必须
是唯一的
标识符
opaque_type
opaque 数据类型的名

在数据库中的数据
类型名称之中必须
是唯一的
标识符
在本文档中,用户定义的数据类型通常缩写为 UDT。
distinct 数据类型
DISTINCT 数据类型是基于下列数据类型的用户定义的数据类型:

内建的类型(包括内建的 opaque 类型)

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1303

用户定义的 opaque 类型

命名的 ROW 类型

现有的 DISTINCT 类型。
DISTINCT 类型的基本类型不可为任何下列数据类型:

未命名的 ROW 类型

LIST、MULTISET、SET 或通用的 COLLECTION 类型。
DISTINCT 类型继承存储中它的基本类型的长度和对齐方式。 GBase 8s 自动地
在 DISTINCT 类型与它的基本类型之间创建显式的强制转型。要创建 DISTINCT
类型,您必须使用 CREATE DISTINCT TYPE 语句(要获取更多信息,请参阅
CREATE DISTINCT TYPE 语句。)
分布式操作中的 DISTINCT 类型
不可通过分布式查询从同一 GBase 8s 实例的另一数据库检索 DISTINCT 列值
(也不可通过 INSERT、DELETE、MERGE 或 UPDATE 跨数据库分布式操作来
修改),除非所有下列条件都为真:

在下列基本类型之一上定义该 DISTINCT 类型:
o
非 opaque 内建的数据类型
o
BOOLEAN 或 LVARCHAR 数据类型
o
在 BOOLEAN 上、在 LVARCHAR 上,或在非 opaque 内建的
数据类型上创建的 DISTINCT 类型。
(此条件也递归地适用于 DISTINCT 类型的 DISTINCT 类型,在此,最终
的基础类型为 BOOLEAN,或 LVARCHAR,或非 opaque 内建的数据类
型。)

显式地强制转型为 BOOLEAN、LVARCHAR 或非 opaque 内建的数据
类型的 DISTINCT 类型

DISTINCT 类型,在所有参与的数据库中都正好以同一种方式定义它的层
级和它的向内建的类型的显式的强制转型。
对于在分布式操作中的 DISTINCT 数据类型,数据类型层级必须有这些形式中的
一种,不随所在的参与的数据库的不同而变化:
重要:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1304
上图展示任何 DISTINCT 数据类型的基础类型的一般性逻辑层级。然而,如在上
图中那样递归地使用 DISTINCT OF 关键字是无效的 SQL 语法。CREATE
DISTINCT TYPE 语句必须为新的 DISTINCT 类型正好指定一个基础类型。要创
建 DISTINCT 数据类型的层级,您必须为层级中的每个 DISTINCT 类型发出一
个单独的 CREATE DISTINCT TYPE 语句。要了解定义新的 DISTINCT 数据类
型的 SQL 语法,请参阅主题 CREATE DISTINCT TYPE 语句。
在受保护的表的行中存储安全标签的 IDSSECURITYLABEL 数据类型是满足此要
求的内建的 DISTINCT 类型,因为它的基础类型是内建的 VARCHAR(128) 数据
类型。
用户定义的例程可从同一 GBase 8s 实例的另一数据库将 DISTINCT 数据类型返
回给本地数据库,仅当所有上述条件都为真,且在所有参与的数据库中定义 UDR
的话。
适用于同一 GBase 8s 实例的跨数据库的分布式操作中的 DISTINCT 数据类型的
那些规则,也适用于在不同的 GBase 8s 实例的数据库上的跨服务器分布式操作
中的 DISTINCT 数据类型。
要获取关于 GBase 8s 在分布式操作中支持的数据类型的附加信息,请参阅 分布
式查询中的数据类型。
Opaque 数据类型
opaque 数据类型是可以与内建的数据类型相同的方式使用的用户定义的数据类
型。要创建 opaque 类型,您必须使用 CREATE OPAQUE TYPE 语句。由于
opaque 类型是被封装的,因此您要创建支持函数来访问 opaque 类型的单个组
件。该类型的内部存储细节是隐藏的或不透明的。
要获取更多关于如何创建 opaque 数据类型以及它的支持函数的信息,请参阅
GBase 8s 用户定义的例程和数据类型开发者指南 。
由于最大行大小的限制为 32,767 字节,因此当您创建新表时,不超过大约 195
列可为可变长度的 opaque 或 distinct 用户定义的数据类型。(同样的限制也适
用于 BYTE、TEXT、VARCHAR、LVARCHAR、NVARCHAR 和 ROW 类型
列。请参阅 ROW 数据类型 来获取关于 ROW 数据类型的附加信息。)

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1305
复合的数据类型
复合的数据类型是您从内建的类型、opaque 类型、distinct 类型或其他复合的类
型创建的 ROW 类型或 COLLECTION 类型。
复合的数据类型

单个复合的数据类型可包括多个组件。当您创建符合的类型时,您定义该复合的
类型的组件。然而,不像 opaque 类型那样,不封装复合的类型。您可使用 SQL
来访问复合的数据类型的个别的组件。复合的数据类型的个别的组件称为元素。
GBase 8s 支持下列类别的复合的数据类型:

ROW 数据类型:命名的 ROW 类型和未命名的 ROW 类型

COLLECTION 数据类型:SET、MULTISET 和 LIST
COLLECTION 数据类型的元素必须都是同一数据类型。您可使用 SPL 数据类型
声明中的关键字 COLLECTION 来指定 untyped 集合变量。在 COLLECTION 数
据类型的元素中不支持 NULL 值。
ROW 数据类型的元素可以是不同的数据类型,但对于给定的 ROW 数据类型,从第
一个到最后一个元素,数据类型的模式不可变化。在 ROW 数据类型的元素中支持
NULL 值,除非您在数据类型声明中或在约束中另行指定。
ROW 数据类型
这是将一列定义为命名的或未命名的 ROW 类型的语法。
Row 数据类型

未命名 Row 类型

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1306

元素
描述
限制
语法
data_type
field 的数据类型
除了 BYTE 或 TEXT 之外
的任何数据类型
数据类型
field
row_type 内字段的名

在同一 ROW 类型的字段
之中必须是唯一的
标识符
row_type
通过 CREATE ROW TYPE
语句定义的某些 ROW
数据类型
在数据库中 ROW 类型必
须存在
标识符; 数
据类型
您可将命名的 ROW 类型指定给表、给列或给 SPL 变量。您用来创建 typed 表
或用来定义列的命名的 ROW 类型必须已存在。要获取关于如何创建命名的
ROW 数据类型的信息,请参阅 CREATE ROW TYPE 语句。
要在符合 ANSI 的数据库中指定命名的 ROW 数据类型,如果您不是 row_type
的所有者,则您必须以它的 owner 名称来限定 row_type。
通过未命名的 ROW 数据类型结构来标识它,其指定您以它的 ROW 构造函数创
建的字段。您可指定一列或一 SPL 变量作为未命名的 ROW 数据类型。要获取
为未命名的 ROW 类型指定值的语法,请参阅 ROW 构造函数。
由于最大的行大小的限制为 32,767 字节,因此不可以超过大约 195 ROW 类型
列来创建单个表。
集合数据类型
此图展示定义一列或一 SPL 变量作为集合数据类型的语法。(表可包括不多于
97 集合数据类型的列。)要了解指定集合元素的值的语法,请参阅 集合构造函
数。
集合数据类型

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1307

元素
描述
限制
语法
data_type
每一集合元素的数据类型 可为除了 BIGSERIAL、
BYTE、SERIAL、SERIAL8 或
TEXT 之外的任何数据类型
数据类

SET 是元素的无序的集合,每一元素都有唯一的值。当您想要存储其元素不包含
重复的值且没有相关联的顺序的集合时,请将一列定义为 SET 数据类型。
MULTISET 是可有重复的值的元素的无序的集合。当您想要存储其元素可能不是
唯一的且没有与它们相关联的特定顺序时,您可将一列定义为 MULTISET 集合
类型。
LIST 是一个可包括重复的元素的元素的有序的集合。与 MULTISET 不同的是,
LIST 集合中的每一元素都在该集合中有一有序的位置。当您想要存储其元素可能
不是唯一的但有一与它们相关联的特定顺序的集合时,您可将一列定义为 LIST
集合类型。
可在 SPL 数据类型声明中使用关键字 COLLECTION,来指定一 untyped 集合变
量。
如果您尝试将一个包括一个或多个重复的值的集合插入到 SET 列内,则 GBase
8s 不发出错误,但忽略重复的值,且只插入唯一的值。
SET 列上 DML 操作中的重复元素
SET 数据类型不允许在同一集合中有重复的元素值。如果您尝试将重复的元素插
入到 SET 数据类型内,或将 SET 列或变量更新为包括重复的元素的值,则当执
行 INSERT 或 UPDATE 语句时,数据库服务器不发出错误或警告,但在 SET
列或变量中仅存储重复的元素之一。
例如,假如您以 SET 数据类型的列 a 创建表 t3,然后您插入四行,其中一些包
括有相同的值的元素:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1308
> CREATE TABLE t3(a SET(INT NOT NULL));

Table created.

> INSERT INTO t3 VALUES( SET{10, 20, 30} );

1 row(s) inserted.

> INSERT INTO t3 VALUES( SET{10, 20, 10});

1 row(s) inserted.

> INSERT INTO t3 VALUES( SET{10, 10, 10});

1 row(s) inserted.

> INSERT INTO t3 VALUES( SET{10,10,10});

1 row(s) inserted.
当您查看插入到列 t3.a 内的那些数据值时,插入的四行不包括重复的元素值:
> SELECT * FROM t3;

a SET{10 ,20 ,30 }
a SET{10 ,20 }
a SET{10 }
a SET{10 }

4 row(s) retrieved.
在此示例中, GBase 8s 静默地从为每一 SET 值指定的 INSERT 语句的
VALUES 子句的元素中舍弃一个实例之外的所有重复的元素。
如果 UPDATE 语句的 SET 子句在同一 SET 值内包括重复的元素,则会发生类
似的行为。如果您想要数据库存储可在同一集合内包括重复的元素的无序集,则
请声明 MULTISET 数据类型的集合列,而不是 SET 数据类型的。
定义元素类型

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1309
元素类型可为除了 TEXT、BYTE、SERIAL、SERIAL8 或 BIGSERIAL 之外的
任何数据类型。您可使用集合类型的元素嵌套集合类型。
每个元素必须是同一类型的。例如,如果集合数据类型的元素类型是
INTEGER,则每个元素的类型必须是 INTEGER。
如果数据库服务器确定字符串的集合的某些元素是 VARCHAR 数据类型(其长度限
定为 255 或更少的字节),但其他元素长于 255 字节,则此限制会发生一个例
外。在此情况下,集合构造函数可将 CHAR(n) 数据类型指定给所有元素,n 是最
长的元素以字节计的长度。如果这不是想要的结果,则您可将该集合强制转型为
LVARCHAR,来防止在该集合的元素中填充额外的长度,如此示例中所示:
LIST {'first character string longer than 255 bytes . . . ',
'second character string longer than 255 bytes . . . ',
'another character string'} ::LIST (LVARCHAR NOT NULL)
要获取附加的信息,请参阅 集合构造函数。
如果集合的元素类型是未命名的 ROW 类型,则未命名的 ROW 类型不可包含持
有未命名的 ROW 类型的字段。也就是说,集合不可包含嵌套的未命名的 ROW
数据类型。
集合的元素不可为 NULL。当您定义一列为集合数据类型时,您必须使用 NOT
NULL 关键字来指定该集合的元素不可为 NULL。
对集合数据类型的权限就是数据库列的那些权限。您不可在集合的个别元素上指
定权限。

操作步骤
步骤1:修改demo.options 文件:
1)
设置coordinateHost 为要安装的管理节点的IP;
2)
设置coordinateHostNodeID 为要安装的管理节点设置的ID,与coordinateHost
节点设置的一一对应,且不重复的整数值;
3)
设置dataHost 参数为要安装的节点的IP;
4)
修改existCoordinateHost 参数为已存在的Coordinator 节点的IP;
5)
修改existDataHost 参数为已存在的所有data 节点的IP。
修改后的demo.options 参考如下:
$ cat demo.options
installPrefix= /opt
coordinateHost =172.168.83.16
coordinateHostNodeID = 16
dataHost =172.168.83.16

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
259
existCoordinateHost =172.168.83.11,172.168.83.12,172.168.83.13,172.168.83.14
existDataHost =172.168.83.11,172.168.83.12,172.168.83.13,172.168.83.15
existGcwareHost=172.168.83.11,172.168.83.12,172.168.83.13
#gcwareHost =
#gcwareHostNodeID =
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'gbasedba'
rootPwd = '111111'
#rootPwdFile = rootPwd.json