pysx0503
作者pysx0503·2020-04-30 23:58
系统工程师·第十区。散人

GBase 8s V8.7 安全数据库 SQL 参考指南-数据类型

字数 4283阅读 1045评论 0赞 0

数据类型

为数据库中的表的每一列指定数据类型。数据类型精确地定义可在该列中

存储的值的种类。

这些主题描述内置和扩展数据类型、两种数据类型之间的强制转型和运算

符优先级。

3.1 数据类型的摘要

GBase 8s 支持最常见内置数据类型集。此外, GBase 8s 上还支持扩展

数据类型集。

下图显示 GBase 8s 支持的数据类型的逻辑类别。有阴影的类别表示仅在

GBase 8s 上受支持的附加数据类型。

图 1 受支持数据类型的概述

对此图作了简化;一些内置类型是作为不透明类型实现的,并且仅在

GBase 8s 上受支持。虽然大部分内置数据类型都不是不透明数据类型,但是不

透明和内置不是分离的类别。

内置数据类型(系统定义的)和扩展数据类型(您可以定义)都具有下列

特征。

 使用它们来在数据库表中创建列。

 将它们声明为自变量和例程的返回类型。

GBase 8s V8.7 安全数据库 SQL 参考指南

南大通用数据技术股份有限公司 -89-

 将它们用作从中创建 DISTINCT 数据类型的基本类型。

 将它们强制转型为其他数据类型。

 用 SPL 和 ESQL/C 声明和存取这些类型的主变量。

有关例外情况,请参阅每种数据类型的描述。要了解概述,请参阅内置数

据类型和扩展数据类型。

可以使用 CREATE TABLE 语句将数据类型指定给列并使用 ALTER TABLE

语句更改数据类型。当更改现有列数据类型时,如果可能的话,会将所有数据

转换为新数据类型。

这些内置 SQL 数据类型在所有 GBase 8s SQL 事务中都有效,包括这些

类型的数据操作语言 (DML) 操作:

 对本地数据库中对象的操作

 对本地服务器实例数据库中对象的跨数据库操作

 对两个或多个数据库服务器实例数据库中对象的跨服务器操作

在跨服务器 MERGE 操作中,源表(而不是目标表)可以位于远程 GBase

8s 服务器的数据库中。

对于字符数据类型(CHAR、CHAR VARYING、LVARCHAR、NCHAR、

NVARCHAR 和 VARCHAR),数据字符串可以包含数据库语言环境代码集中的

字母、数字、标点符号、空格、区分标记、连字符和其他可打印符号。对于 UTF-8

和某些东亚语言环境的代码集,在数据字符串内支持多字节字符。

下表列出 GBase 8s 支持的所有内置数据类型。

表 1 GBase 8s 支持的数据类型

数据类型 解释

BIGINT 数据类型 存储 8 个字节的整数值,从 -(2 63 -1) 到 2 63 -1

BIGSERIAL 数据类型 存储 8 个字节的顺序整数值,范围是 1 到 2 63 -1

BYTE 数据类型 存储任何种类的二进制数据,最长 2 31 个字节

GBase 8s V8.7 安全数据库 SQL 参考指南

南大通用数据技术股份有限公司 -90-

数据类型 解释

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 个字节的整数值,从 -(2 63 -1) 到 2 63 -1

INTEGER 数据类型 存储从 -2,147,483,647 到 +2,147,483,647 的整数

INTERVAL 数据类型 以年和月为单位存储时间范围(或效果等级)。

INTERVAL 数据类型 以连续的单位日、小时、分钟、秒和若干分之几秒的存储时间

范围

MONEY(p,s) 数据类型 存储货币总额

NCHAR(n) 数据类型 与 CHAR 相同,但可以支持本地编码的排序

GBase 8s V8.7 安全数据库 SQL 参考指南

南大通用数据技术股份有限公司 -91-

数据类型 解释

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 数据类型 存储任何种类的文本数据,最长 2 31 个字节

VARCHAR(m,r) 数据类型 存储可变长度字符串(最长 255 个字节);以代码集顺序整

下表列出 GBase 8s 支持的其他数据类型。

表 2 GBase 8s 支持的其他数据类型

数据类型 解释

BLOB 数据类型 以随机存取块的形式存储二进制数据

binary18 存储 18 字节二进制编码的字符串

binaryvar 存储最大长度为 255 个字节的二进制编码的字符串

BOOLEAN 数据类型 存储布尔值 true 和 false

CLOB 数据类型 以随机存取块的形式存储文本数据

DISTINCT 数据类型 以用户定义的类型存储数据,该类型与它所基于的源类型具有相同

的格式,但该类型的强制转型和函数与源类型的不同

Calendar 存储 TimeSeries 数据类型的日历

GBase 8s V8.7 安全数据库 SQL 参考指南

南大通用数据技术股份有限公司 -92-

数据类型 解释

CalenderPattern 存储日历数据类型的日历模式结构

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 数据类型的集合

GBase 8s V8.7 安全数据库 SQL 参考指南

南大通用数据技术股份有限公司 -93-

数据类型 解释

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)。

然而,您无法引用跨数据库事务(这些事务访问本地 GBase 8s 实例的多

个数据库)中的以下扩展数据类型:

 没有强制转型为内置数据类型的 UDT

 没有强制转型为内置数据类型的 DISTINCT 类型

 集合数据类型

 命名或未命名 ROW 数据类型

访问其他 GBase 8s 实例数据库的分布式 SQL 事务和函数调用无法返回

复杂或智能大对象数据类型的值,也无法返回大部分单值或内置不透明数据类

型。跨服务器 SQL 操作中只可访问以下数据类型:

 任何透明的内置数据类型

 BOOLEAN

 透明的内置类型的 DISTINCT

GBase 8s V8.7 安全数据库 SQL 参考指南

南大通用数据技术股份有限公司 -94-

 BOOLEAN 的 DISTINCT

 LVARCHAR 的 DISTINCT

 以上所列出的任何 DISTINCT 类型的 DISTINCT

 IDSSECURITYLABEL

 LVARCHAR

只有 DISTINCT 数据类型显式地强制转型为内置类型,且所有 DISTINCT

类型、其数据类型层次结构和其强制转型在参与分布式操作的每个数据库中采

用相同的定义时,跨服务器分布式 SQL 事务才可支持 DISTINCT 数据类型。

对于使用上面列表中的数据类型作为参数或返回数据类型的跨服务器 UDR 中

的查询或其他 DML 操作,UDR 在每个参与数据库中的定义也必须相同。

拥有足够安全凭证的用户可以在对受保护数据的跨服务器和跨数据库操作

中,访问存储安全标号对象的内置 DISTINCT 数据类型 IDSSECURITYLABEL。

如对受保护数据的本地操作,在数据库服务器在对保护数据安全的安全标号和

发出查询的用户的安全凭证进行比较后,访问安全策略保护的远程表的分布式

查询只可以返回 IDSLBACRULES 允许的符合条件的行。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关资料

X社区推广