GBase 8s 支持最常见内置数据类型集。此外,GBase 8s 上还支持扩展数据类型集。
图: 受支持数据类型的概述
对此图作了简化;一些内置类型是作为不透明类型实现的,并且仅在 GBase 8s 上受支持。即,不透明和内置不是分离的类别,虽然大部分内置数据类型都不是不透明数据类型。
有关例外情况,请参阅每种数据类型的描述。要了解概述,请参阅内置数据类型和扩展数据类型。
可以使用 CREATE TABLE 语句将数据类型指定给列并使用 ALTER TABLE 语句更改数据类型。当更改现有列数据类型时,如果可能的话,会将所有数据转换为新数据类型。
有关 ALTER TABLE 和 CREATE TABLE 语句、创建特定数据类型及创建和删除强制转型的 SQL 语句以及其他数据类型主题的信息,请参阅 GBase 8s SQL 指南:语法。
有关如何创建和使用 GBase 8s 支持的复杂数据类型的信息,请参阅《GBase 8s 数据库设计和实现指南》。有关如何创建用户定义的数据类型的信息,请参阅 GBase 8s 用户定义的例程与数据类型开发者指南。
下表列出 GBase 8s 支持的所有内置数据类型。
数据类型 | 解释 |
---|---|
BIGINT 数据类型 | 存储 8 个字节的整数值,从 -(263 -1) 到 263 -1 |
BIGSERIAL 数据类型 | 存储 8 个字节的顺序整数值,范围是 1 到 263 -1 |
BYTE 数据类型 | 存储任何种类的二进制数据,最长 231 个字节 |
CHAR(n) 数据类型 | 存储字符串;整理使用代码集顺序 |
CHARACTER(n) 数据类型 | CHAR 的同义词 |
CHARACTER VARYING(m,r) 数据类型 | 存储可变长度字符串(符合 ANSI);以代码集顺序整理 |
DATE 数据类型 | 存储日历日期 |
DATETIME 数据类型 | 存储日历日期和一天中的时间 |
DEC 数据类型 | DECIMAL 的同义词 |
DECIMAL | 存储精度可定义的浮点数;如果数据库符合 ANSI,那么小数位为零 |
DECIMAL (p,s) 定点 | 存储已定义小数位和精度的定点数 |
DOUBLE PRECISION 数据类型 | FLOAT 的同义词 |
FLOAT(n) | 存储相应于 C 中的 double 数据类型的双精度浮点数 |
INT 数据类型 | INTEGER 的同义词 |
INT8 | 存储 8 个字节的整数值,从 -(263 -1) 到 263 -1 |
INTEGER 数据类型 | 存储从 -2,147,483,647 到 +2,147,483,647 的整数 |
INTERVAL 数据类型 | 以年和月为单位存储时间范围(或工作的级别)。 |
INTERVAL 数据类型 | 以连续的单位日、小时、分钟、秒和秒的若干分之几存储时间范围 |
MONEY(p,s) 数据类型 | 存储货币总额 |
NCHAR(n) 数据类型 | 与 CHAR 相同,但可以支持本地化的整理 |
NUMERIC(p,s) 数据类型 | DECIMAL(p,s) 的同义词 |
NVARCHAR(m,r) 数据类型 | 与 VARCHAR 相同,但可以支持本地化整理 |
REAL 数据类型 | SMALLFLOAT 的同义词 |
SERIAL(n) 数据类型 | 在 INT 的正数范围内存储连续整数 (> 0) |
SERIAL8(n) 数据类型 | 在 INT8 的正数范围内存储连续整数 (> 0) |
SMALLFLOAT | 存储对应于 C 语言的 float 数据类型的单精度浮点数 |
SMALLINT 数据类型 | 存储从 -32,767 到 +32,767 的整数 |
TEXT 数据类型 | 存储任何种类的文本数据,最长 231 个字节 |
VARCHAR(m,r) 数据类型 | 存储可变长度字符串(最长 255 个字节);以代码集顺序整理 |
在跨服务器 MERGE 操作中,源表(而不是目标表)可以位于远程 GBase 8s 服务器的数据库中。
对于字符数据类型(CHAR、CHAR VARYING、LVARCHAR、NCHAR、NVARCHAR 和 VARCHAR),数据字符串可以包含数据库语言环境代码集中的字母、数字、标点符号、空格、区分标记、连字符和其他可打印符号。对于 UTF-8 和某些东亚语言环境的代码集,在数据字符串内支持多字节字符。
数据类型 | 解释 |
---|---|
BLOB 数据类型 | 以随机存取块的形式存储二进制数据 |
binary18 | 存储 18 字节二进制编码的字符串 |
binaryvar | 存储最大长度为 255 个字节的二进制编码的字符串 |
BOOLEAN 数据类型 | 存储布尔值 true 和 false |
CLOB 数据类型 | 以随机存取块的形式存储文本数据 |
DISTINCT 数据类型 | 以用户定义的类型存储数据,该类型与它所基于的源类型具有相同的格式,但该类型的强制转型和函数与源类型的不同 |
日历 | 存储 TimeSeries 数据类型的日历 |
日历模式 | 存储日历数据类型的日历模式的结构 |
IDSSECURITYLABEL 数据类型 | 存储 LBAC 安全标号对象。 |
LIST(e) 数据类型 | 存储元素的按顺序排序的集合,所有元素都具有同一数据类型 e;允许重复值 |
lld_locator | 存储大对象标识 |
lld_lob_data | 存储智能大对象的位置,并指定对象是否包含二进制或字符数据 |
LVARCHAR(m) 数据类型 | 存储可变长度字符串,可多至 32,739 个字节 |
MULTISET(e) 数据类型 | 存储值的非排序集合,所有元素都具有同一数据类型 e;允许重复值 |
节点 (node) | 存储最多 256 个字符的可变长度的整数和小数点组合(用于表示分层关系) |
OPAQUE 数据类型 | 存储用户定义的数据类型,其内部结构对于数据库服务器不可存取 |
ROW 数据类型,已命名 | 存储命名 ROW 类型 |
ROW 数据类型,未命名 | 存储未命名 ROW 类型 |
SET(e) 数据类型 | 存储元素的非排序集合,所有元素都具有同一数据类型 e;不允许重复值 |
ST_LineString | 存储一维对象作为定义线性插值路径的点序列 |
ST_MultiLineString | 存储 ST_LineString 数据类型的集合 |
ST_MultiPoint | 存储 ST_Point 数据类型的集合 |
ST_MultiPolygon | 存储 ST_Polygon 数据类型的集合 |
ST_Point | 存储占用坐标空间中单个位置的零维几何 |
ST_Polygon | 存储二维表面,并且作为定义外部边界环以及 0 或 0 个以上内部环的点序列存储 |
TimeSeries | 存储行子类型的集合 |
其他主题中会单独描述 GBase 8s 的这些扩展数据类型。这些数据类型在定义数据类型的数据库上的本地操作中有效。
对相同 GBase 8s 实例的其他数据库的分布式操作可访问 BOOLEAN、BLOB、CLOB 和 LVARCHAR 数据类型,这些数据类型是作为内置不透明类型来实现的。如果 UDT 和 DISTINCT 类型显式地强制转型为内置类型,并且如果所有的 UDT、强制转型和 DISTINCT 类型在所有参与的数据库中都进行了定义,这样的操作还能访问 DISTINCT 类型(它的基本类型是内置类型)和用户定义类型 (UDT)。
只有 DISTINCT 数据类型显式地强制转型为内置类型,且所有 DISTINCT 类型、其数据类型层次结构和其强制转型在参与分布式操作的每个数据库中采用相同的定义时,跨服务器分布式 SQL 事务才可支持 DISTINCT 数据类型。对于使用上面列表中的数据类型作为参数或返回数据类型的跨服务器 UDR 中的查询或其他 DML 操作,UDR 在每个参与数据库中的定义也必须相同。
拥有足够安全凭证的用户可以在对受保护数据的跨服务器和跨数据库操作中,访问存储安全标号对象的内置 DISTINCT 数据类型 IDSSECURITYLABEL。如对受保护数据的本地操作,在数据库服务器在对保护数据安全的安全标号和发出查询的用户的安全凭证进行比较后,访问安全策略保护的远程表的分布式查询只可以返回 IDSLBACRULES 允许的符合条件的行。