3 数据类型
为数据库中的表的每一列指定数据类型。数据类型精确地定义可在该列中存储的值的
种类。
这些主题描述内置和扩展数据类型、两种数据类型之间的强制转型和运算符优先级。
3.1 数据类型的摘要
GBase 8s 支持最常见内置数据类型集。此外,GBase 8s 上还支持扩展数据类型集。
下图显示 GBase 8s 支持的数据类型的逻辑类别。有阴影的类别表示仅在 GBase 8s 上
受支持的其他数据类型。图 1. 受支持数据类型的概述
对此图作了简化;一些内置类型是作为不透明类型实现的,并且仅在 GBase 8s 上受
支持。即,不透明和内置不是分离的类别,虽然大部分内置数据类型都不是不透明数据类
型。
内置数据类型(系统定义的)和扩展数据类型(您可以定义)都具有下列特征。您可
以:
使用它们来在数据库表中创建列。
将它们声明为自变量和例程的返回类型。
将它们用作从中创建 DISTINCT 数据类型的基本类型。
将它们强制转型为其他数据类型。
用 SPL 和 ESQL/C 声明和存取这些类型的主变量。
有关例外情况,请参阅每种数据类型的描述。要了解概述,请参阅内置数据类型和扩
展数据类型。
可以使用 CREATE TABLE 语句将数据类型指定给列并使用 ALTER TABLE 语句更改数据
类型。当更改现有列数据类型时,如果可能的话,会将所有数据转换为新数据类型。
有关 ALTER TABLE 和 CREATE TABLE 语句、创建特定数据类型及创建和删除强制转型
的 SQL 语句以及其他数据类型主题的信息,请参阅 GBase 8s SQL 指南:语法。
GBase 8s 支持的数据类型
下表列出 GBase 8s 支持的所有内置数据类型。
表 1. GBase 8s 支持的数据类型


这些内置 SQL 数据类型在所有 GBase 8s SQL 事务中都有效,包括这些类型的数据操
作语言 (DML) 操作:
对本地数据库中对象的操作
对本地服务器实例数据库中对象的跨数据库操作
对两个或多个数据库服务器实例的数据库中对象的跨服务器操作
在跨服务器 MERGE 操作中,源表(而不是目标表)可以位于远程 GBase 8s 服务器的
数据库中。
对于字符数据类型(CHAR、CHAR VARYING、LVARCHAR、NCHAR、NVARCHAR 和 VARCHAR),
数据字符串可以包含数据库语言环境代码集中的字母、数字、标点符号、空格、区分标记、
连字符和其他可打印符号。对于 UTF-8 和某些东亚语言环境的代码集,在数据字符串内支
持多字节字符。
GBase 8s 支持的其他数据类型
下表列出 GBase 8s 支持的其他数据类型。
表 2. GBase 8s 支持的其他数据类型


其他主题中会单独描述 GBase 8s 的这些扩展数据类型。这些数据类型在定义数据类
型的数据库上的本地操作中有效。
跨数据库分布式 SQL 事务中的扩展数据类型
对相同 GBase 8s 实例的其他数据库的分布式操作可访问 BOOLEAN、BLOB、CLOB 和
LVARCHAR 数据类型,这些数据类型是作为内置不透明类型来实现的。如果 UDT 和
DISTINCT 类型显式地强制转型为内置类型,并且如果所有的 UDT、强制转型和 DISTINCT
类型在所有参与的数据库中都进行了定义,这样的操作还能访问 DISTINCT 类型(它的基
本类型是内置类型)和用户定义类型 (UDT)。
然而,您无法引用跨数据库事务(这些事务访问本地 GBase 8s 实例的多个数据库)
中的以下扩展数据类型:
没有强制转型为内置数据类型的 UDT
没有强制转型为内置数据类型的 DISTINCT 类型
集合数据类型
命名或未命名 ROW 数据类型
跨服务器分布式 SQL 事务中的扩展数据类型
访问其他 GBase 8s 实例数据库的分布式 SQL 事务和函数调用无法返回复杂或智能大
对象数据类型的值,也无法返回大部分单值或内置不透明数据类型。跨服务器 SQL 操作中
只可访问以下数据类型:
任何透明的内置数据类型
BOOLEAN
透明的内置类型的 DISTINCT
BOOLEAN 的 DISTINCT
LVARCHAR 的 DISTINCT
以上所列出的任何 DISTINCT 类型的 DISTINCT
IDSSECURITYLABEL
LVARCHAR
只有 DISTINCT 数据类型显式地强制转型为内置类型,且所有 DISTINCT 类型、其数
据类型层次结构和其强制转型在参与分布式操作的每个数据库中采用相同的定义时,跨服
务器分布式 SQL 事务才可支持 DISTINCT 数据类型。对于使用上面列表中的数据类型作为
参数或返回数据类型的跨服务器 UDR 中的查询或其他 DML 操作,UDR 在每个参与数据库
中的定义也必须相同。
拥有足够安全凭证的用户可以在对受保护数据的跨服务器和跨数据库操作中,访问存
储安全标号对象的内置 DISTINCT 数据类型 IDSSECURITYLABEL。如对受保护数据的本地操
作,在数据库服务器在对保护数据安全的安全标号和发出查询的用户的安全凭证进行比较
后,访问安全策略保护的远程表的分布式查询只可以返回 IDSLBACRULES 允许的符合条件
的行。




