Oracle/MySQL/SqlServer/PostgreSQL等数据库的数据类型映射以及各版本数据类型情况说明
1 引言
近期工作聚焦于跨数据库系统的数据类型兼容性研究,旨在解决多源异构数据迁移、系统集成及版本升级中的类型映射难题。具体任务包括:1)建立主流数据库(如MySQL、Oracle、PostgreSQL、SQL Server等)的数据类型映射体系,明确各类型在语义、精度、存储范围上的等价关系(如MySQL的VARCHAR
与Oracle的VARCHAR2
);2)梳理各数据库版本间的类型差异(如MySQL 5.7与8.0的JSON支持、Oracle 12c的CLOB
性能优化),制定版本适配方案;3)结合业务场景输出映射指南,针对财务、地理信息等特殊需求提出类型选择建议(如高精度计算强制使用DECIMAL
)。通过此工作,可降低数据迁移风险,提升系统兼容性,并为后续数据库选型及版本升级提供技术依据,确保数据一致性与业务连续性。
整理如有错误,请各位朋友指正,谢谢。
2 各数据库数据类型映射成果
通用类型 | mysql | oracle | SqlServer | PostgreSQL | DM | kingbase | GaussDB | GBase | TIDB |
数值类型 | TINYINT | TINYINT | TINYINT | TINYINT | TINYINT | TINYINT | |||
SMALLINT | SMALLINT | SMALLINT | SMALLINT | SMALLINT | SMALLINT | SMALLINT | SMALLINT | ||
MEDIUMINT | MEDIUMINT | ||||||||
INT(INTEGER) | INTEGER | INT(INTEGER) | INTEGER(INT) | INTEGER(INT) | INTEGER(INT) | INTEGER/INT | INTEGER/INT | INTEGER/INT | |
BIGINT | BIGINT | BIGINT | BIGINT | BIGINT | BIGINT | BIGINT | BIGINT | ||
FLOAT | FLOAT | REAL | REAL | REAL | REAL | FLOAT | FLOAT | FLOAT | |
DOUBLE | DOUBLE | FLOAT | DOUBLE PRECISION(FLOAT8) | DOUBLE PRECISION(FLOAT8) | DOUBLE PRECISION(FLOAT8) | DOUBLE/DOUBLE PRECISION | DOUBLE/DOUBLE PRECISION | DOUBLE/DOUBLE PRECISION | |
DECIMAL | NUMBER/DECIMAL | NUMBER/DECIMAL | NUMERIC(DECIMAL) | NUMERIC(DECIMAL) | NUMERIC(DECIMAL) | DECIMAL/NUMERIC | DECIMAL/NUMERIC | DECIMAL/NUMERIC | |
字符串类型 | CHAR | CHAR | CHAR | CHARACTER(n)(CHAR(n)) | CHAR(n) | CHAR(n) | CHAR(n) | CHAR(n) | CHAR(n) |
VARCHAR | VARCHAR2 | VARCHAR | CHARACTER VARYING(n)(VARCHAR(n)) | VARCHAR(n) | VARCHAR(n) | VARCHAR(n) | VARCHAR(n) | VARCHAR(n) | |
TINYTEXT | TINYTEXT | ||||||||
TEXT | CLOB | TEXT | TEXT | TEXT | TEXT | TEXT | TEXT | TEXT | |
二进制字符串 | BINARY | RAW | BINARY | BYTEA | BINARY(n) | BINARY(n) | BINARY | BINARY | BINARY(n) |
VARBINAR | LONG RAW | VARBINARY | VARBINARY(n) | VARBINARY(n) | VARBINARY | VARBINARY | VARBINARY(n) | ||
大对象类型 | BLOB | BLOB | IMAGE | BLOB | BLOB | BLOB/CLOB | BLOB/CLOB | BLOB | |
日期和时间类型 | DATE | DATE | DATE | DATE | DATE | DATE | DATE | DATE | DATE |
TIME | DATE | TIME | TIME | TIME | TIME | TIME | TIME | TIME | |
DATETIME | DATE | DATETIME | TIMESTAMP | DATETIME | TIMESTAMP | DATETIME | DATETIME | DATETIME | |
TIMESTAMP | TIMESTAMP | DATETIME | TIMESTAMP | TIMESTAMP | TIMESTAMP | TIMESTAMP | TIMESTAMP | TIMESTAMP | |
YEAR | DATE | ||||||||
布尔类型 | BOOLEAN | CHAR(1)/NUMBER(1) | BOOLEAN | BOOLEAN | BOOLEAN | BOOLEAN/BOOL | BOOLEAN/BOOL | ||
JSON 类型 | JSON | JSON | JSON | JSON | JSON | JSON | JSON | JSON | JSON |
3 数据库各版本数据类型映射关系
3.1 Oracle(11G/12C/18C/19C)
3.1.1 数值类型
数据类型 | 说明 | Oracle 版本支持 |
---|---|---|
NUMBER(p, s) | 可变长度数值类型,p 为精度(1-38),s 为小数位数(-84 到 127) | 11G/12C/18C/19C |
BINARY_FLOAT | 32 位单精度浮点数 | 11G/12C/18C/19C |
BINARY_DOUBLE | 64 位双精度浮点数 | 11G/12C/18C/19C |
INTEGER | NUMBER(38) 的别名,表示整数 | 11G/12C/18C/19C |
FLOAT | BINARY_FLOAT 的别名 | 11G/12C/18C/19C |
DECIMAL | 类似于 NUMBER ,但语法上更接近 SQL 标准 | 11G/12C/18C/19C |
版本变化:
- 数值类型在 Oracle 11G 及后续版本中基本保持稳定,没有显著变化。
3.1.2 字符类型
数据类型 | 说明 | Oracle 版本支持 |
---|---|---|
CHAR(n) | 固定长度字符串,n 为字节数(1-2000) | 11G/12C/18C/19C |
NCHAR(n) | 固定长度 Unicode 字符串,n 为字符数(1-1000) | 11G/12C/18C/19C |
VARCHAR2(n) | 可变长度字符串,n 为字节数(1-4000) | 11G/12C/18C/19C |
NVARCHAR2(n) | 可变长度 Unicode 字符串,n 为字符数(1-2000) | 11G/12C/18C/19C |
LONG | 可变长度字符串,最大长度 2GB(已逐渐被弃用,建议使用 CLOB ) | 11G/12C/18C/19C |
RAW(n) | 固定长度二进制数据,n 为字节数(1-2000) | 11G/12C/18C/19C |
LONG RAW | 可变长度二进制数据,最大长度 2GB(已逐渐被弃用,建议使用 BLOB ) | 11G/12C/18C/19C |
版本变化:
- 从 Oracle 12C 开始,字符类型的最大长度限制有所扩展(如
VARCHAR2
在某些情况下可支持 32,767 字节,但需使用扩展数据类型特性)。LONG
和LONG RAW
类型在较新版本中逐渐被弃用,建议使用CLOB
和BLOB
替代。
3.1.3 日期时间类型
数据类型 | 说明 | Oracle 版本支持 |
---|---|---|
DATE | 存储日期和时间,精度到秒,范围公元前 4712 年到公元 9999 年 | 11G/12C/18C/19C |
TIMESTAMP(p) | 存储日期和时间,精度到小数秒(p 为小数位数,0-9) | 11G/12C/18C/19C |
TIMESTAMP WITH TIME ZONE | 存储带时区的日期和时间 | 11G/12C/18C/19C |
TIMESTAMP WITH LOCAL TIME ZONE | 存储带时区的日期和时间,但存储时转换为数据库时区 | 11G/12C/18C/19C |
INTERVAL YEAR TO MONTH | 存储时间间隔(年-月) | 11G/12C/18C/19C |
INTERVAL DAY TO SECOND | 存储时间间隔(日-秒) | 11G/12C/18C/19C |
版本变化:
- 日期时间类型在 Oracle 11G 及后续版本中基本保持稳定,但时区相关类型在 12C 及后续版本中得到了更好的支持和优化。
3.1.4 大对象类型(LOB)
数据类型 | 说明 | Oracle 版本支持 |
---|---|---|
CLOB | 存储大文本数据,最大长度 (4GB - 1) * DB_BLOCK_SIZE | 11G/12C/18C/19C |
NCLOB | 存储大 Unicode 文本数据,最大长度同 CLOB | 11G/12C/18C/19C |
BLOB | 存储大二进制数据,最大长度同 CLOB | 11G/12C/18C/19C |
BFILE | 存储指向操作系统文件的指针,最大长度 4GB | 11G/12C/18C/19C |
版本变化:
- LOB 类型在 Oracle 11G 及后续版本中基本保持稳定,但 12C 及后续版本对 LOB 的存储和访问性能进行了优化。
3.1.5 二进制类型
数据类型 | 说明 | Oracle 版本支持 |
---|---|---|
ROWID | 存储行的物理地址,用于快速访问行 | 11G/12C/18C/19C |
UROWID | 存储逻辑行地址,适用于索引组织表和外键表 | 11G/12C/18C/19C |
版本变化:
- 二进制类型在 Oracle 11G 及后续版本中基本保持稳定。
3.1.6 布尔类型
BOOLEAN
:Oracle 本身不直接支持BOOLEAN
类型,但可以通过NUMBER(1)
或CHAR(1)
来模拟,其中1
/'Y'
表示TRUE
,0
/'N'
表示FALSE
。
3.1.7 空间数据类型(Oracle Spatial)
Oracle Spatial 是 Oracle 提供的空间数据扩展,支持存储和查询地理空间数据。主要数据类型包括:
SDO_GEOMETRY
:存储几何对象,如点、线、面等。SDO_TOPO_GEOMETRY
:存储拓扑几何对象。
版本变化:
- Oracle Spatial 在 11G 及后续版本中得到了持续的增强和优化,支持更多的空间函数和操作。
3.1.8 JSON 数据类型
从 Oracle 12C R2 开始,Oracle 提供了对 JSON 数据的支持:
- JSON 列:可以将
VARCHAR2
、CLOB
或BLOB
列定义为存储 JSON 数据。 - JSON 函数:提供了丰富的 JSON 函数,如
JSON_TABLE
、JSON_VALUE
、JSON_QUERY
等,用于提取和操作 JSON 数据。
版本变化:
- JSON 支持在 Oracle 12C R2 中引入,并在 18C 和 19C 中得到了进一步的增强和优化。
3.1.9 其他特殊类型
XMLType
:存储 XML 数据,支持 XML 查询和操作。- 用户定义类型(UDT):通过 PL/SQL 或 Java 创建自定义数据类型。
版本变化:
XMLType
和 UDT 在 Oracle 11G 及后续版本中保持稳定,但功能得到了持续的增强。
3.1.10 版本之间的主要变化
- Oracle 12C:
- 引入了多租户架构(CDB 和 PDB)。
- 增强了对 JSON 数据的支持(从 12C R2 开始)。
- 对 LOB 类型的存储和访问性能进行了优化。
- Oracle 18C 和 19C:
- 继续增强 JSON 支持,提供了更多的 JSON 函数和操作。
- 对空间数据类型进行了优化和增强。
- 引入了自动索引(Automatic Indexing)等新特性,但数据类型本身没有显著变化。
3.2 MySQL(5.x、8.x)
3.2.1 数据类型映射
数据类型分类 | 数据类型名称 | MySQL 8.x | MySQL 5.x | 备注 |
---|---|---|---|---|
数值类型 | TINYINT | 支持(1 字节有符号整数) | 支持 | 5.x 和 8.x 完全一致 |
数值类型 | SMALLINT | 支持(2 字节有符号整数) | 支持 | 5.x 和 8.x 完全一致 |
数值类型 | MEDIUMINT | 支持(3 字节有符号整数) | 支持 | 5.x 和 8.x 完全一致 |
数值类型 | INTEGER /INT | 支持(4 字节有符号整数) | 支持 | 5.x 和 8.x 完全一致 |
数值类型 | BIGINT | 支持(8 字节有符号整数) | 支持 | 5.x 和 8.x 完全一致 |
数值类型 | FLOAT | 支持(单精度浮点数) | 支持 | 5.x 和 8.x 完全一致 |
数值类型 | DOUBLE /DOUBLE PRECISION | 支持(双精度浮点数) | 支持 | 5.x 和 8.x 完全一致 |
数值类型 | DECIMAL /NUMERIC | 支持(高精度数值) | 支持 | 5.x 和 8.x 完全一致 |
字符串类型 | CHAR(n) | 支持(定长字符串) | 支持 | 5.x 和 8.x 完全一致 |
字符串类型 | VARCHAR(n) | 支持(变长字符串) | 支持 | 5.x 和 8.x 完全一致 |
字符串类型 | TINYTEXT | 支持(短文本) | 支持 | 5.x 和 8.x 完全一致 |
字符串类型 | TEXT | 支持(长文本) | 支持 | 5.x 和 8.x 完全一致 |
字符串类型 | MEDIUMTEXT | 支持(中等长度文本) | 支持 | 5.x 和 8.x 完全一致 |
字符串类型 | LONGTEXT | 支持(超长文本) | 支持 | 5.x 和 8.x 完全一致 |
字符串类型 | BINARY(n) | 支持(定长二进制) | 支持 | 5.x 和 8.x 完全一致 |
字符串类型 | VARBINARY(n) | 支持(变长二进制) | 支持 | 5.x 和 8.x 完全一致 |
字符串类型 | BLOB | 支持(二进制大对象) | 支持 | 5.x 和 8.x 完全一致 |
字符串类型 | MEDIUMBLOB | 支持(中等二进制大对象) | 支持 | 5.x 和 8.x 完全一致 |
字符串类型 | LONGBLOB | 支持(超长二进制大对象) | 支持 | 5.x 和 8.x 完全一致 |
日期和时间类型 | DATE | 支持(日期) | 支持 | 5.x 和 8.x 完全一致 |
日期和时间类型 | TIME | 支持(时间) | 支持 | 5.x 和 8.x 完全一致 |
日期和时间类型 | DATETIME | 支持(日期时间) | 支持 | 8.0 引入 DATETIME(fsp) 支持微秒精度(fsp=0-6),5.x 仅支持秒级精度 |
日期和时间类型 | TIMESTAMP | 支持(带时区的日期时间) | 支持 | 8.0 引入 TIMESTAMP(fsp) 支持微秒精度(fsp=0-6),5.x 仅支持秒级精度 |
日期和时间类型 | YEAR | 支持(年份) | 支持 | 5.x 和 8.x 完全一致 |
JSON 类型 | JSON | 支持(JSON 文档) | 5.7.8+ 支持 | 5.7.8 引入 JSON 类型,5.6 及以下版本不支持 |
枚举和集合类型 | ENUM | 支持(枚举类型) | 支持 | 5.x 和 8.x 完全一致 |
枚举和集合类型 | SET | 支持(集合类型) | 支持 | 5.x 和 8.x 完全一致 |
位类型 | BIT(M) | 支持(位数据类型) | 支持 | 5.x 和 8.x 完全一致 |
空间数据类型 | GEOMETRY | 支持(空间几何数据) | 支持(需开启插件或存储引擎) | 5.x 和 8.x 均支持,但需使用支持空间数据的存储引擎(如 MyISAM、InnoDB) |
空间数据类型 | POINT | 支持(点) | 支持 | 5.x 和 8.x 完全一致 |
空间数据类型 | LINESTRING | 支持(线) | 支持 | 5.x 和 8.x 完全一致 |
空间数据类型 | POLYGON | 支持(多边形) | 支持 | 5.x 和 8.x 完全一致 |
自动递增类型 | AUTO_INCREMENT | 支持(自增主键) | 支持 | 5.x 和 8.x 完全一致 |
序列类型 | SEQUENCE | 不支持 | 不支持 | MySQL 不支持序列类型,需通过自增主键或其他方式实现 |
3.2.2 版本差异说明
- JSON 类型:
- MySQL 5.7.8+ 引入了
JSON
类型,支持 JSON 文档的存储和查询。 - MySQL 5.6 及以下版本 不支持
JSON
类型。
- MySQL 5.7.8+ 引入了
- 日期和时间类型的微秒精度:
- MySQL 8.0 引入了
DATETIME(fsp)
和TIMESTAMP(fsp)
,支持微秒精度(fsp=0-6)。 - MySQL 5.x 仅支持秒级精度。
- MySQL 8.0 引入了
- 其他类型:
- 数值、字符串、枚举、位等基础类型在 5.x 和 8.x 中均保持一致。
- 空间数据类型(如
GEOMETRY
、POINT
)在 5.x 和 8.x 中均支持,但需使用支持空间数据的存储引擎(如 MyISAM、InnoDB)。
3.3 SQL Server(2016、2017、2019、2022)
3.3.1 数值类型
数据类型 | 说明 | SQL Server 版本支持 |
---|---|---|
精确数值 | ||
BIT | 存储 0、1 或 NULL,用于表示布尔值 | 2016/2017/2019/2022 |
TINYINT | 1 字节,范围 0 到 255 | 2016/2017/2019/2022 |
SMALLINT | 2 字节,范围 -32,768 到 32,767 | 2016/2017/2019/2022 |
INT (INTEGER ) | 4 字节,范围 -2,147,483,648 到 2,147,483,647 | 2016/2017/2019/2022 |
BIGINT | 8 字节,范围 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 2016/2017/2019/2022 |
DECIMAL(p, s) | p 为精度(1-38),s 为小数位数(0-p),固定精度和小数位数 | 2016/2017/2019/2022 |
NUMERIC(p, s) | 与 DECIMAL 相同 | 2016/2017/2019/2022 |
近似数值 | ||
FLOAT(n) | 4 或 8 字节浮点数,n 指定精度(1-53) | 2016/2017/2019/2022 |
REAL | 4 字节浮点数,等价于 FLOAT(24) | 2016/2017/2019/2022 |
3.3.2 字符串类型
数据类型 | 说明 | SQL Server 版本支持 |
---|---|---|
定长字符串 | ||
CHAR(n) | 固定长度字符串,n 为字符数(1-8,000) | 2016/2017/2019/2022 |
NCHAR(n) | 固定长度 Unicode 字符串,n 为字符数(1-4,000) | 2016/2017/2019/2022 |
变长字符串 | ||
VARCHAR(n) | 可变长度字符串,n 为字符数(1-8,000) | 2016/2017/2019/2022 |
VARCHAR(MAX) | 可变长度字符串,最大长度 2GB | 2016/2017/2019/2022 |
NVARCHAR(n) | 可变长度 Unicode 字符串,n 为字符数(1-4,000) | 2016/2017/2019/2022 |
NVARCHAR(MAX) | 可变长度 Unicode 字符串,最大长度 2GB | 2016/2017/2019/2022 |
文本类型 | ||
TEXT | 可变长度字符串,最大长度 2GB(已逐渐被弃用,建议使用 VARCHAR(MAX) ) | 2016/2017/2019/2022 |
NTEXT | 可变长度 Unicode 字符串,最大长度 1GB(已逐渐被弃用,建议使用 NVARCHAR(MAX) ) | 2016/2017/2019/2022 |
3.3.3 日期和时间类型
数据类型 | 说明 | SQL Server 版本支持 |
---|---|---|
DATE | 存储日期,格式 'YYYY-MM-DD',范围 0001-01-01 到 9999-12-31 | 2016/2017/2019/2022 |
TIME(n) | 存储时间,格式 'HH:MM:SS[.nnnnnnn]',n 为小数秒精度(0-7) | 2016/2017/2019/2022 |
DATETIME2(n) | 存储日期和时间,格式 'YYYY-MM-DD HH:MM:SS[.nnnnnnn]',n 为小数秒精度(0-7) | 2016/2017/2019/2022 |
SMALLDATETIME | 存储日期和时间,范围 1900-01-01 到 2079-06-06,精度到分钟 | 2016/2017/2019/2022 |
DATETIME | 存储日期和时间,范围 1753-01-01 到 9999-12-31,精度到 3.33 毫秒 | 2016/2017/2019/2022 |
DATETIMEOFFSET(n) | 存储带时区的日期和时间,n 为小数秒精度(0-7) | 2016/2017/2019/2022 |
3.3.4 二进制类型
数据类型 | 说明 | SQL Server 版本支持 |
---|---|---|
BINARY(n) | 固定长度二进制数据,n 为字节数(1-8,000) | 2016/2017/2019/2022 |
VARBINARY(n) | 可变长度二进制数据,n 为字节数(1-8,000) | 2016/2017/2019/2022 |
VARBINARY(MAX) | 可变长度二进制数据,最大长度 2GB | 2016/2017/2019/2022 |
IMAGE | 可变长度二进制数据,最大长度 2GB(已逐渐被弃用,建议使用 VARBINARY(MAX) ) | 2016/2017/2019/2022 |
3.3.5 其他特殊类型
数据类型 | 说明 | SQL Server 版本支持 |
---|---|---|
UNIQUEIDENTIFIER | 存储全局唯一标识符(GUID),16 字节 | 2016/2017/2019/2022 |
SQL_VARIANT | 存储除文本、ntext、图像、时间戳和 sql_variant 之外的各种数据类型的值 | 2016/2017/2019/2022 |
XML | 存储 XML 数据 | 2016/2017/2019/2022 |
CURSOR | 存储对数据库游标的引用 | 2016/2017/2019/2022 |
TABLE | 存储临时结果集,用于表值函数或存储过程中的临时表 | 2016/2017/2019/2022 |
HIERARCHYID | 存储表示层次结构中节点的数据 | 2016/2017/2019/2022 |
GEOMETRY | 存储平面空间数据(欧几里得坐标系) | 2016/2017/2019/2022 |
GEOGRAPHY | 存储地球表面空间数据(经纬度坐标系) | 2016/2017/2019/2022 |
3.3.6 JSON 数据类型
从 SQL Server 2016 开始,SQL Server 提供了对 JSON 数据的支持:
- JSON 列:可以将
NVARCHAR
列定义为存储 JSON 数据。 - JSON 函数:提供了丰富的 JSON 函数,如
JSON_VALUE
、JSON_QUERY
、JSON_MODIFY
、OPENJSON
等,用于提取、查询和修改 JSON 数据。
版本变化:
- JSON 支持在 SQL Server 2016 中引入,并在后续版本中得到了进一步的增强和优化。
3.3.7 版本之间的主要变化
- SQL Server 2016:
- 引入了对 JSON 数据的支持。
- 提供了新的日期和时间类型(如
DATETIME2
和DATETIMEOFFSET
)的更好支持。 - 开始弃用
TEXT
、NTEXT
和IMAGE
类型,建议使用VARCHAR(MAX)
、NVARCHAR(MAX)
和VARBINARY(MAX)
替代。
- SQL Server 2017:
- 增强了 JSON 支持,提供了更多的 JSON 函数和操作。
- 引入了对图数据(Graph Data)的支持(通过
NODE
和EDGE
表类型,但正式广泛支持在后续版本中增强)。
- SQL Server 2019:
- 继续增强 JSON 支持。
- 对大数据和聚类列存储索引进行了优化。
- 引入了 UTF-8 支持(对于
CHAR
和VARCHAR
数据类型)。
- SQL Server 2022:
- 提供了更多的性能优化和安全性增强。
- 对 JSON 和空间数据类型的支持更加完善。
- 引入了新的功能,如参数化查询的更多优化选项。
3.4 PostgreSQL(13.x、14.x、15.x、16.x、17.x)
3.4.1 数值类型
数据类型 | 说明 | PostgreSQL 版本支持 |
---|---|---|
整数类型 | ||
SMALLINT | 2 字节有符号整数,范围 -32,768 到 32,767 | 13.x/14.x/15.x/16.x/17.x |
INTEGER (INT ) | 4 字节有符号整数,范围 -2,147,483,648 到 2,147,483,647 | 13.x/14.x/15.x/16.x/17.x |
BIGINT | 8 字节有符号整数,范围 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 13.x/14.x/15.x/16.x/17.x |
任意精度数值 | ||
NUMERIC (DECIMAL ) | 用户指定精度和小数位数的数值类型,精度最高可达 131,072 位 | 13.x/14.x/15.x/16.x/17.x |
浮点类型 | ||
REAL | 4 字节浮点数,约 6 位十进制数字精度 | 13.x/14.x/15.x/16.x/17.x |
DOUBLE PRECISION (FLOAT8 ) | 8 字节浮点数,约 15 位十进制数字精度 | 13.x/14.x/15.x/16.x/17.x |
3.4.2 字符串类型
数据类型 | 说明 | PostgreSQL 版本支持 |
---|---|---|
变长字符串 | ||
CHARACTER VARYING(n) (VARCHAR(n) ) | 可变长度字符串,最大长度 n 字符 | 13.x/14.x/15.x/16.x/17.x |
TEXT | 可变长度字符串,无长度限制 | 13.x/14.x/15.x/16.x/17.x |
定长字符串 | ||
CHARACTER(n) (CHAR(n) ) | 固定长度字符串,不足部分用空格填充 | 13.x/14.x/15.x/16.x/17.x |
二进制字符串 | ||
BYTEA | 用于存储二进制数据 | 13.x/14.x/15.x/16.x/17.x |
3.4.3 日期和时间类型
数据类型 | 说明 | PostgreSQL 版本支持 |
---|---|---|
TIMESTAMP | 日期和时间(无时区),精度可到微秒 | 13.x/14.x/15.x/16.x/17.x |
TIMESTAMP WITH TIME ZONE (TIMESTAMPTZ ) | 日期和时间(带时区),精度可到微秒 | 13.x/14.x/15.x/16.x/17.x |
DATE | 日期(无时间部分) | 13.x/14.x/15.x/16.x/17.x |
TIME | 时间(无日期部分),精度可到微秒 | 13.x/14.x/15.x/16.x/17.x |
TIME WITH TIME ZONE | 时间(带时区),精度可到微秒 | 13.x/14.x/15.x/16.x/17.x |
INTERVAL | 时间间隔 | 13.x/14.x/15.x/16.x/17.x |
3.4.4 布尔类型
数据类型 | 说明 | PostgreSQL 版本支持 |
---|---|---|
BOOLEAN | 存储 TRUE 、FALSE 或 NULL | 13.x/14.x/15.x/16.x/17.x |
3.4.5 枚举类型
数据类型 | 说明 | PostgreSQL 版本支持 |
---|---|---|
ENUM | 用户自定义的枚举类型,包含一组预定义的字符串值 | 13.x/14.x/15.x/16.x/17.x |
3.4.6 数组类型
数据类型 | 说明 | PostgreSQL 版本支持 |
---|---|---|
ARRAY | 可以是任何基础类型的数组,如 INTEGER[] 、TEXT[] | 13.x/14.x/15.x/16.x/17.x |
3.4.7 JSON 类型
数据类型 | 说明 | PostgreSQL 版本支持 |
---|---|---|
JSON | 存储 JSON 数据,不验证数据格式 | 13.x/14.x/15.x/16.x/17.x |
JSONB | 存储 JSON 数据,二进制格式,支持索引和高效查询 | 13.x/14.x/15.x/16.x/17.x |
3.4.8 几何类型
数据类型 | 说明 | PostgreSQL 版本支持 |
---|---|---|
POINT | 平面上的点 | 13.x/14.x/15.x/16.x/17.x |
LINE | 无限长的直线 | 13.x/14.x/15.x/16.x/17.x |
LSEG | 有限长的线段 | 13.x/14.x/15.x/16.x/17.x |
BOX | 矩形框 | 13.x/14.x/15.x/16.x/17.x |
PATH | 路径(由点组成) | 13.x/14.x/15.x/16.x/17.x |
POLYGON | 多边形 | 13.x/14.x/15.x/16.x/17.x |
CIRCLE | 圆 | 13.x/14.x/15.x/16.x/17.x |
3.4.9 网络地址类型
数据类型 | 说明 | PostgreSQL 版本支持 |
---|---|---|
CIDR | IPv4 或 IPv6 网络地址 | 13.x/14.x/15.x/16.x/17.x |
INET | IPv4 或 IPv6 主机地址 | 13.x/14.x/15.x/16.x/17.x |
MACADDR | MAC 地址 | 13.x/14.x/15.x/16.x/17.x |
MACADDR8 | 扩展的 MAC 地址(支持 EUI-64) | 13.x/14.x/15.x/16.x/17.x |
3.4.10 位串类型
数据类型 | 说明 | PostgreSQL 版本支持 |
---|---|---|
BIT(n) | 固定长度位串,长度为 n | 13.x/14.x/15.x/16.x/17.x |
BIT VARYING(n) (VARBIT(n) ) | 可变长度位串,最大长度为 n | 13.x/14.x/15.x/16.x/17.x |
3.4.11 其他类型
数据类型 | 说明 | PostgreSQL 版本支持 |
---|---|---|
UUID | 通用唯一标识符 | 13.x/14.x/15.x/16.x/17.x |
XML | 存储 XML 数据 | 13.x/14.x/15.x/16.x/17.x |
伪类型 | 用于函数声明中的特殊类型,如 ANY 、ANYELEMENT 、ANYARRAY 等 | 13.x/14.x/15.x/16.x/17.x |
3.4.12 版本之间的主要变化
- PostgreSQL 13.x:
- 引入了
pg_stat_progress_create_index
视图,用于监控索引创建的进度。 - 增强了分区表的性能和功能。
- 数据类型方面,主要对现有类型的性能和稳定性进行了优化。
- 引入了
- PostgreSQL 14.x:
- 引入了逻辑复制的增强功能,如支持发布
SEQUENCE
。 - 改进了并行查询的性能。
- 数据类型方面,对
JSONB
类型的查询性能进行了优化。
- 引入了逻辑复制的增强功能,如支持发布
- PostgreSQL 15.x:
- 引入了
MERGE
语句,支持在单个语句中执行条件插入、更新和删除。 - 增强了 SQL/JSON 路径语言的支持。
- 数据类型方面,对
RANGE
类型的操作进行了优化。
- 引入了
- PostgreSQL 16.x:
- 引入了并行哈希连接,提高了复杂查询的性能。
- 增强了
pg_stat_statements
扩展,提供了更多的查询性能统计信息。 - 数据类型方面,对
ARRAY
类型的操作进行了优化,并引入了新的 JSON 函数。
- PostgreSQL 17.x(假设性说明,基于 PostgreSQL 的发布趋势):
- 可能会引入更多的性能优化和功能增强,如更高效的索引类型、更强大的查询处理能力等。
- 数据类型方面,可能会引入新的类型或对现有类型进行进一步的优化和扩展。
3.5 达梦数据库-DM(7.x、8.x)
3.5.1 数值类型
数据类型 | 说明 | DM7.x/DM8.x 支持 |
---|---|---|
整数类型 | ||
TINYINT | 1 字节有符号整数,范围 -128 到 127 | DM8.x 新增 |
SMALLINT | 2 字节有符号整数,范围 -32,768 到 32,767 | DM7.x/DM8.x |
INTEGER (INT ) | 4 字节有符号整数,范围 -2,147,483,648 到 2,147,483,647 | DM7.x/DM8.x |
BIGINT | 8 字节有符号整数,范围 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | DM7.x/DM8.x |
任意精度数值 | ||
NUMERIC (DECIMAL ) | 用户指定精度和小数位数的数值类型,精度最高可达 38 位 | DM7.x/DM8.x |
浮点类型 | ||
REAL | 4 字节浮点数,约 6 位十进制数字精度 | DM7.x/DM8.x |
DOUBLE PRECISION (FLOAT8 ) | 8 字节浮点数,约 15 位十进制数字精度 | DM7.x/DM8.x |
FLOAT(n) | 可变精度浮点数,n 为精度(1 到 53) | DM7.x/DM8.x |
3.5.2 字符串类型
数据类型 | 说明 | DM7.x/DM8.x 支持 |
---|---|---|
变长字符串 | ||
VARCHAR(n) | 可变长度字符串,最大长度 n 字节(DM8.x 支持 n 最大为 8,188 字节) | DM7.x/DM8.x |
TEXT | 可变长度字符串,无长度限制 | DM8.x 新增 |
定长字符串 | ||
CHAR(n) | 固定长度字符串,不足部分用空格填充 | DM7.x/DM8.x |
二进制字符串 | ||
BINARY(n) | 固定长度二进制字符串,长度为 n 字节 | DM7.x/DM8.x |
VARBINARY(n) | 可变长度二进制字符串,最大长度 n 字节 | DM7.x/DM8.x |
BLOB | 二进制大对象,用于存储大量二进制数据 | DM8.x 新增 |
3.5.3 日期和时间类型
数据类型 | 说明 | DM7.x/DM8.x 支持 |
---|---|---|
DATE | 日期(无时间部分),格式为 YYYY-MM-DD | DM7.x/DM8.x |
TIME | 时间(无日期部分),格式为 HH:MI:SS ,支持毫秒 | DM7.x/DM8.x |
TIMESTAMP | 日期和时间,格式为 YYYY-MM-DD HH:MI:SS ,支持毫秒 | DM7.x/DM8.x |
DATETIME | 日期和时间,格式为 YYYY-MM-DD HH:MI:SS ,支持毫秒(与 TIMESTAMP 类似) | DM7.x/DM8.x |
3.5.4 布尔类型
数据类型 | 说明 | DM7.x/DM8.x 支持 |
---|---|---|
BOOLEAN | 存储 TRUE 、FALSE 或 NULL | DM8.x 新增 |
3.5.5 JSON 类型
数据类型 | 说明 | DM7.x/DM8.x 支持 |
---|---|---|
JSON | 存储 JSON 数据,支持 JSON 格式验证和查询 | DM8.x 新增 |
3.5.6 大对象类型
数据类型 | 说明 | DM7.x/DM8.x 支持 |
---|---|---|
CLOB | 字符大对象,用于存储大量文本数据 | DM8.x 新增 |
BLOB | 二进制大对象,用于存储大量二进制数据 | DM8.x 新增 |
3.5.7 其他类型
数据类型 | 说明 | DM7.x/DM8.x 支持 |
---|---|---|
ROWID | 行标识符,用于唯一标识表中的一行 | DM7.x/DM8.x |
XML | 存储 XML 数据(部分版本支持) | DM7.x/DM8.x |
3.5.8 DM7.x 和 DM8.x 版本之间的数据类型变化
1. 新增的数据类型
TINYINT
:DM8.x 新增了TINYINT
类型,用于存储 1 字节的有符号整数,适用于需要节省存储空间的场景。TEXT
和CLOB
:DM8.x 新增了TEXT
和CLOB
类型,用于存储大量文本数据,解决了 DM7.x 中字符串长度限制的问题。BLOB
:DM8.x 新增了BLOB
类型,用于存储大量二进制数据,如图片、音频等。BOOLEAN
:DM8.x 新增了BOOLEAN
类型,用于存储布尔值,简化了逻辑判断的表达。JSON
:DM8.x 新增了JSON
类型,支持 JSON 格式的存储和查询,满足了现代应用对 JSON 数据的需求。
2. 改进的数据类型
VARCHAR(n)
的长度限制:DM8.x 中VARCHAR(n)
的最大长度从 DM7.x 的 4,000 字节扩展到了 8,188 字节,提供了更大的灵活性。- 日期和时间类型的增强:DM8.x 对日期和时间类型的支持更加完善,如
TIMESTAMP
和DATETIME
类型都支持毫秒精度。
3. 移除或弃用的数据类型
- 在 DM8.x 中,未发现明显的移除或弃用数据类型的情况,但部分功能或语法可能发生了变化,建议查阅官方文档以获取最新信息。
3.6 人大金仓-KingBase(V7、V8、V9)
3.6.1 数值类型
数据类型 | 说明 | V7/V8/V9 支持 |
---|---|---|
整数类型 | ||
SMALLINT | 2 字节有符号整数,范围 -32,768 到 32,767 | V7/V8/V9 |
INTEGER (INT ) | 4 字节有符号整数,范围 -2,147,483,648 到 2,147,483,647 | V7/V8/V9 |
BIGINT | 8 字节有符号整数,范围 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | V7/V8/V9 |
任意精度数值 | ||
NUMERIC (DECIMAL ) | 用户指定精度和小数位数的数值类型,精度最高可达 38 位 | V7/V8/V9 |
浮点类型 | ||
REAL | 4 字节浮点数,约 6 位十进制数字精度 | V7/V8/V9 |
DOUBLE PRECISION (FLOAT8 ) | 8 字节浮点数,约 15 位十进制数字精度 | V7/V8/V9 |
FLOAT(n) | 可变精度浮点数,n 为精度(1 到 53) | V7/V8/V9 |
3.6.2 字符串类型
数据类型 | 说明 | V7/V8/V9 支持 |
---|---|---|
变长字符串 | ||
VARCHAR(n) | 可变长度字符串,最大长度 n 字节(V9 版本支持 n 最大为 1GB) | V7/V8/V9 |
TEXT | 可变长度字符串,无长度限制(V8/V9 新增) | V8/V9 |
定长字符串 | ||
CHAR(n) | 固定长度字符串,不足部分用空格填充 | V7/V8/V9 |
二进制字符串 | ||
BINARY(n) | 固定长度二进制字符串,长度为 n 字节 | V7/V8/V9 |
VARBINARY(n) | 可变长度二进制字符串,最大长度 n 字节 | V7/V8/V9 |
BLOB | 二进制大对象,用于存储大量二进制数据(V8/V9 新增) | V8/V9 |
3.6.3 日期和时间类型
数据类型 | 说明 | V7/V8/V9 支持 |
---|---|---|
DATE | 日期(无时间部分),格式为 YYYY-MM-DD | V7/V8/V9 |
TIME | 时间(无日期部分),格式为 HH:MI:SS ,支持毫秒 | V7/V8/V9 |
TIMESTAMP | 日期和时间,格式为 YYYY-MM-DD HH:MI:SS ,支持毫秒 | V7/V8/V9 |
TIMESTAMP WITH TIME ZONE | 带时区的日期和时间(V9 新增) | V9 |
3.6.4 布尔类型
数据类型 | 说明 | V7/V8/V9 支持 |
---|---|---|
BOOLEAN | 存储 TRUE 、FALSE 或 NULL (V8/V9 新增) | V8/V9 |
3.6.5 JSON 类型
数据类型 | 说明 | V7/V8/V9 支持 |
---|---|---|
JSON | 存储 JSON 数据,支持 JSON 格式验证和查询(V9 新增) | V9 |
3.6.6 大对象类型
数据类型 | 说明 | V7/V8/V9 支持 |
---|---|---|
CLOB | 字符大对象,用于存储大量文本数据(V8/V9 新增) | V8/V9 |
BLOB | 二进制大对象,用于存储大量二进制数据(V8/V9 新增) | V8/V9 |
3.6.7 其他类型
数据类型 | 说明 | V7/V8/V9 支持 |
---|---|---|
UUID | 通用唯一标识符(V9 新增) | V9 |
XML | 存储 XML 数据(部分版本支持) | V7/V8/V9 |
3.6.8 V7、V8、V9 版本之间的数据类型变化
1. 新增的数据类型
- V8 版本新增:
TEXT
:用于存储无长度限制的字符串,解决了 V7 中字符串长度限制的问题。CLOB
和BLOB
:用于存储大量文本和二进制数据,满足大对象存储需求。BOOLEAN
:用于存储布尔值,简化了逻辑判断的表达。
- V9 版本新增:
JSON
:支持 JSON 格式的存储和查询,满足了现代应用对 JSON 数据的需求。TIMESTAMP WITH TIME ZONE
:支持带时区的日期和时间,增强了时区处理能力。UUID
:用于生成通用唯一标识符,适用于分布式系统。
2. 改进的数据类型
VARCHAR(n)
的长度限制:- V7 版本中,
VARCHAR(n)
的最大长度可能有限制(具体取决于版本和配置)。 - V9 版本中,
VARCHAR(n)
的最大长度支持到 1GB,提供了更大的灵活性。
- V7 版本中,
- 日期和时间类型的增强:
- V9 版本新增了
TIMESTAMP WITH TIME ZONE
类型,支持带时区的日期和时间处理。
- V9 版本新增了
3. 移除或弃用的数据类型
- 在 V7、V8、V9 版本中,未发现明显的移除或弃用数据类型的情况。但部分功能或语法可能发生了变化,建议查阅官方文档以获取最新信息。
3.7 GaussDB (for MySQL、for PostgreSQL、DWS、for Influx、for Mongo)
3.7.1 数据类型映射
数据类型分类 | 数据类型名称 | GaussDB(for MySQL) | GaussDB(for PostgreSQL) | GaussDB(DWS) | GaussDB(for Influx) | GaussDB(for Mongo) |
---|---|---|---|---|---|---|
数值类型 | TINYINT | 支持(1 字节有符号整数) | 不支持(PostgreSQL 无原生 TINYINT ,可用 SMALLINT 替代) | 不支持(DWS 主要聚焦分析,不常用基础数值类型) | 不支持(时序数据库侧重浮点/时间戳) | 不支持(MongoDB 使用 NumberInt 或 NumberLong ) |
数值类型 | SMALLINT | 支持(2 字节有符号整数) | 支持 | 支持 | 不支持 | 使用 NumberInt (32 位整数) |
数值类型 | INTEGER /INT | 支持(4 字节有符号整数) | 支持 | 支持 | 不支持 | 使用 NumberInt 或 NumberLong (64 位整数) |
数值类型 | BIGINT | 支持(8 字节有符号整数) | 支持 | 支持 | 不支持 | 使用 NumberLong |
数值类型 | FLOAT | 支持(单精度浮点数) | 支持 | 支持 | 不支持(时序数据用 FLOAT 或 DOUBLE 存储值) | 使用 NumberDouble (双精度浮点数) |
数值类型 | DOUBLE /DOUBLE PRECISION | 支持(双精度浮点数) | 支持 | 支持 | 支持(存储时序数据的值) | 使用 NumberDouble |
数值类型 | DECIMAL /NUMERIC | 支持(高精度数值) | 支持 | 支持 | 不支持(时序数据库不常用) | 使用 NumberDecimal (高精度十进制) |
字符串类型 | CHAR(n) | 支持(定长字符串) | 支持 | 支持 | 不支持(时序数据库不常用) | 使用字符串类型(如 "string" ) |
字符串类型 | VARCHAR(n) | 支持(变长字符串) | 支持 | 支持 | 不支持 | 使用字符串类型 |
字符串类型 | TEXT | 支持(长文本) | 支持 | 支持 | 不支持 | 使用字符串类型(无长度限制) |
字符串类型 | BINARY /VARBINARY | 支持(二进制数据) | 不支持(PostgreSQL 用 BYTEA 替代) | 不支持 | 不支持 | 使用 BinData (二进制数据) |
日期和时间类型 | DATE | 支持(日期) | 支持 | 支持 | 不支持(时序数据库用时间戳) | 使用 ISODate (日期时间) |
日期和时间类型 | TIME | 支持(时间) | 支持 | 支持 | 不支持 | 使用 ISODate (包含时间部分) |
日期和时间类型 | DATETIME | 支持(日期时间) | 不支持(PostgreSQL 用 TIMESTAMP 替代) | 支持 | 不支持 | 使用 ISODate |
日期和时间类型 | TIMESTAMP | 支持(带时区的日期时间,部分版本支持) | 支持 | 支持 | 核心类型(时序数据库的时间戳) | 使用 ISODate |
日期和时间类型 | TIMESTAMP WITH TIME ZONE | 支持(带时区的日期时间,部分版本增强) | 支持 | 支持 | 默认支持(时序数据库的关键字段) | 使用 ISODate (可存储时区信息) |
布尔类型 | BOOLEAN /BOOL | 支持(逻辑值) | 支持 | 支持 | 不支持(时序数据库用 0 /1 或字段标记) | 使用 Boolean 类型 |
JSON 类型 | JSON | 支持(JSON 文档) | 支持 | 支持(部分版本) | 不支持(时序数据库用字段存储 JSON 字符串) | 原生支持(MongoDB 的核心数据模型) |
数组类型 | ARRAY | 不支持(MySQL 无原生数组) | 支持(PostgreSQL 特色) | 支持(部分版本) | 不支持 | 支持(MongoDB 的数组字段) |
地理空间类型 | GEOMETRY /GEOGRAPHY | 不支持(MySQL 需插件) | 支持(PostGIS 扩展) | 不支持 | 不支持 | 支持(MongoDB 的 GeoJSON 格式) |
大对象类型 | BLOB /CLOB | 支持(二进制/文本大对象) | 支持(BYTEA /TEXT ) | 支持(部分版本) | 不支持 | 使用 GridFS (MongoDB 的大文件存储) |
时序专用类型 | TAG /FIELD | 不支持 | 不支持 | 不支持 | 核心类型(InfluxDB 的标签和字段) | 不支持 |
UUID 类型 | UUID | 支持(部分版本) | 支持(PostgreSQL 原生) | 支持(部分版本) | 不支持 | 使用 ObjectId (MongoDB 的唯一标识符) |
自动递增类型 | AUTO_INCREMENT | 支持(MySQL 自增主键) | 不支持(PostgreSQL 用 SERIAL 或序列) | 不支持(DWS 用分布式 ID 生成器) | 不支持 | 使用 _id 字段(MongoDB 自动生成) |
3.7.2 版本差异说明
- GaussDB(for MySQL):
- 完全兼容 MySQL 数据类型,包括
TINYINT
、AUTO_INCREMENT
等。 - 不支持 PostgreSQL 的高级类型(如
ARRAY
、GEOMETRY
)。
- 完全兼容 MySQL 数据类型,包括
- GaussDB(for PostgreSQL):
- 支持 PostgreSQL 的所有原生类型,包括
ARRAY
、GEOMETRY
等。 - 不支持 MySQL 特有的
TINYINT
、AUTO_INCREMENT
,但提供替代方案(如SERIAL
)。
- 支持 PostgreSQL 的所有原生类型,包括
- GaussDB(DWS):
- 聚焦分析型场景,支持基础数值、字符串、日期类型。
- 部分版本支持 JSON 和数组类型,但不如关系型版本丰富。
- GaussDB(for Influx):
- 专为时序数据设计,核心类型为
TIMESTAMP
、TAG
、FIELD
。 - 不支持关系型数据库的复杂类型(如
JSON
、ARRAY
)。
- 专为时序数据设计,核心类型为
- GaussDB(for Mongo):
- 使用 MongoDB 的文档模型,支持
JSON
、Array
、ObjectId
等。 - 不支持关系型数据库的类型(如
INT
、VARCHAR
),但提供类似功能的替代方案。
- 使用 MongoDB 的文档模型,支持
3.8 GBase(GBase 8a、GBase 8s、GBase 8c)
3.8.1 数据类型映射
数据类型分类 | 数据类型名称 | GBase 8a | GBase 8s | GBase 8c |
---|---|---|---|---|
数值类型 | TINYINT | 支持(1 字节有符号整数) | 支持(1 字节有符号整数) | 支持(1 字节有符号整数) |
数值类型 | SMALLINT | 支持(2 字节有符号整数) | 支持(2 字节有符号整数) | 支持(2 字节有符号整数) |
数值类型 | INTEGER /INT | 支持(4 字节有符号整数) | 支持(4 字节有符号整数) | 支持(4 字节有符号整数) |
数值类型 | BIGINT | 支持(8 字节有符号整数) | 支持(8 字节有符号整数) | 支持(8 字节有符号整数) |
数值类型 | FLOAT | 支持(单精度浮点数) | 支持(单精度浮点数) | 支持(单精度浮点数) |
数值类型 | DOUBLE /DOUBLE PRECISION | 支持(双精度浮点数) | 支持(双精度浮点数) | 支持(双精度浮点数) |
数值类型 | DECIMAL /NUMERIC | 支持(高精度数值) | 支持(高精度数值) | 支持(高精度数值) |
字符串类型 | CHAR(n) | 支持(定长字符串) | 支持(定长字符串) | 支持(定长字符串) |
字符串类型 | VARCHAR(n) | 支持(变长字符串) | 支持(变长字符串) | 支持(变长字符串) |
字符串类型 | TEXT | 支持(长文本) | 支持(长文本) | 支持(长文本) |
字符串类型 | BINARY /VARBINARY | 支持(二进制数据) | 支持(二进制数据) | 支持(二进制数据) |
日期和时间类型 | DATE | 支持(日期) | 支持(日期) | 支持(日期) |
日期和时间类型 | TIME | 支持(时间) | 支持(时间) | 支持(时间) |
日期和时间类型 | DATETIME | 支持(日期时间) | 支持(日期时间) | 支持(日期时间) |
日期和时间类型 | TIMESTAMP | 支持(带时区的日期时间,部分版本支持) | 支持(带时区的日期时间) | 支持(带时区的日期时间) |
日期和时间类型 | TIMESTAMP WITH TIME ZONE | 支持(部分版本增强) | 支持(带时区的日期时间) | 支持(带时区的日期时间) |
布尔类型 | BOOLEAN /BOOL | 支持(逻辑值) | 支持(逻辑值) | 支持(逻辑值) |
JSON 类型 | JSON | 部分支持(GBase 8a 增强版支持 JSON 存储) | 支持(GBase 8s 原生支持 JSON) | 支持(GBase 8c 原生支持 JSON) |
数组类型 | ARRAY | 不支持(GBase 8a 无原生数组) | 不支持(GBase 8s 无原生数组) | 支持(GBase 8c 支持数组类型) |
地理空间类型 | GEOMETRY /GEOGRAPHY | 不支持(GBase 8a 无原生地理空间类型) | 部分支持(需扩展插件) | 支持(GBase 8c 支持地理空间类型,需扩展) |
大对象类型 | BLOB /CLOB | 支持(二进制/文本大对象) | 支持(二进制/文本大对象) | 支持(二进制/文本大对象) |
UUID 类型 | UUID | 支持(部分版本) | 支持(GBase 8s 原生支持) | 支持(GBase 8c 原生支持) |
自动递增类型 | AUTO_INCREMENT | 支持(自增主键) | 支持(自增主键) | 支持(自增主键) |
序列类型 | SEQUENCE | 不支持(GBase 8a 无原生序列) | 支持(GBase 8s 原生支持序列) | 支持(GBase 8c 原生支持序列) |
位类型 | BIT /BIT VARYING | 支持(位数据类型) | 支持(位数据类型) | 支持(位数据类型) |
枚举类型 | ENUM | 支持(枚举类型) | 不支持(GBase 8s 无原生枚举) | 不支持(GBase 8c 无原生枚举) |
集合类型 | SET | 支持(集合类型) | 不支持(GBase 8s 无原生集合) | 不支持(GBase 8c 无原生集合) |
3.8.2 版本差异说明
- GBase 8a:
- 专注于分析型场景,支持基础数值、字符串、日期类型。
- 部分增强版支持 JSON 类型,但不支持数组、地理空间等高级类型。
- 不支持序列类型,需通过应用层实现自增逻辑。
- GBase 8s:
- 兼容传统关系型数据库,支持完整的数值、字符串、日期类型。
- 原生支持 JSON、序列类型,但需扩展插件支持地理空间类型。
- 不支持数组类型,但提供其他高级功能(如触发器、存储过程)。
- GBase 8c:
- 支持分布式架构,兼容 PostgreSQL 生态,类型系统更丰富。
- 原生支持 JSON、数组、地理空间类型,适合复杂数据模型。
- 支持序列类型,适合需要分布式 ID 生成的场景。
3.9 TiDB(v8.5、v8.4、v8.3、v8.2、v8.1、v8.0、v7.6)
3.9.1 数据类型映射
数据类型分类 | 数据类型名称 | v8.5 | v8.4 | v8.3 | v8.2 | v8.1 | v8.0 | v7.6 |
---|---|---|---|---|---|---|---|---|
数值类型 | TINYINT | 支持(1 字节有符号整数) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
数值类型 | SMALLINT | 支持(2 字节有符号整数) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
数值类型 | MEDIUMINT | 支持(3 字节有符号整数) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
数值类型 | INTEGER /INT | 支持(4 字节有符号整数) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
数值类型 | BIGINT | 支持(8 字节有符号整数) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
数值类型 | FLOAT | 支持(单精度浮点数) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
数值类型 | DOUBLE /DOUBLE PRECISION | 支持(双精度浮点数) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
数值类型 | DECIMAL /NUMERIC | 支持(高精度数值) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
字符串类型 | CHAR(n) | 支持(定长字符串) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
字符串类型 | VARCHAR(n) | 支持(变长字符串) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
字符串类型 | TINYTEXT | 支持(短文本) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
字符串类型 | TEXT | 支持(长文本) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
字符串类型 | MEDIUMTEXT | 支持(中等长度文本) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
字符串类型 | LONGTEXT | 支持(超长文本) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
字符串类型 | BINARY(n) | 支持(定长二进制) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
字符串类型 | VARBINARY(n) | 支持(变长二进制) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
字符串类型 | BLOB | 支持(二进制大对象) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
字符串类型 | MEDIUMBLOB | 支持(中等二进制大对象) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
字符串类型 | LONGBLOB | 支持(超长二进制大对象) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
日期和时间类型 | DATE | 支持(日期) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
日期和时间类型 | TIME | 支持(时间) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
日期和时间类型 | DATETIME | 支持(日期时间) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
日期和时间类型 | TIMESTAMP | 支持(带时区的日期时间) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
日期和时间类型 | YEAR | 支持(年份) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
JSON 类型 | JSON | 支持(JSON 文档) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
枚举和集合类型 | ENUM | 支持(枚举类型) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
枚举和集合类型 | SET | 支持(集合类型) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
位类型 | BIT(M) | 支持(位数据类型) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
空间数据类型 | GEOMETRY | 支持(空间几何数据) | 支持(需开启插件) | 支持(需开启插件) | 支持(需开启插件) | 支持(需开启插件) | 支持(需开启插件) | 不支持 |
空间数据类型 | POINT | 支持(点) | 支持(需开启插件) | 支持(需开启插件) | 支持(需开启插件) | 支持(需开启插件) | 支持(需开启插件) | 不支持 |
空间数据类型 | LINESTRING | 支持(线) | 支持(需开启插件) | 支持(需开启插件) | 支持(需开启插件) | 支持(需开启插件) | 支持(需开启插件) | 不支持 |
空间数据类型 | POLYGON | 支持(多边形) | 支持(需开启插件) | 支持(需开启插件) | 支持(需开启插件) | 支持(需开启插件) | 支持(需开启插件) | 不支持 |
自动递增类型 | AUTO_INCREMENT | 支持(自增主键) | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
序列类型 | SEQUENCE | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
3.9.2 版本差异说明
- 空间数据类型:
- 从 v7.6 开始,TiDB 不支持空间数据类型(如
GEOMETRY
、POINT
)。 - 从 v8.0 开始,TiDB 支持空间数据类型,但需通过插件(如 TiDB GIS)开启。
- 后续版本(v8.1+)继续支持空间数据类型,且功能逐渐完善。
- 从 v7.6 开始,TiDB 不支持空间数据类型(如
- JSON 类型:
- 所有版本均支持 JSON 类型,但 v8.0+ 对 JSON 函数的性能和功能进行了优化。
- 其他类型:
- 数值、字符串、日期等基础类型在所有版本中均保持一致。
- TiDB 不支持序列类型(
SEQUENCE
),需通过自增主键或其他方式实现。
4 总结
时间有点紧,整理如有错误,请各位朋友指正,谢谢。
相关文章:
Oracle/MySQL/SqlServer/PostgreSQL等数据库的数据类型映射以及各版本数据类型情况说明
1 引言 近期工作聚焦于跨数据库系统的数据类型兼容性研究,旨在解决多源异构数据迁移、系统集成及版本升级中的类型映射难题。具体任务包括:1)建立主流数据库(如MySQL、Oracle、PostgreSQL、SQL Server等)的数据类型映射…...
新生活的开启:从 Trae AI 离开后的三个月
很久没有写文章了,想借着入职新公司一个月的机会,和大家唠唠嗑。 离职 今年2月份我从字节离职了,结束了四年的经历,当时离开的核心原因是觉得加班时间太长了,平均每天都要工作15,16个小时,周末…...
背包问题概论(01背包,完全背包,多重背包)DP
背包问题概论(01背包,完全背包,多重背包)DP 背包问题一种经典的组合优化问题,主要用于在有限的容量下选择物品以最大化总价值。它分为几种类型: ①:0/1背包问题:每种物品只能选择…...
攻克SQL审核“最后堡垒”!PawSQL首发T-SQL存储过程深度优化引擎
为什么存储过程审核那么难? 存储过程将数据操作逻辑固化在数据库层,一次编译、多次执行,既能大幅提升性能,也能通过权限隔离增强安全。然而,正因其逻辑复杂、分支众多,存储过程内部的 SQL 审核与优化常常成…...
Stable Diffusion 实战-手机壁纸制作 第二篇:优化那些“崩脸”和“马赛克”问题,让图像更加完美!
欢迎回来!在《StableDiffusion实战-手机壁纸制作》系列的第一篇中,我们成功完成了基础操作,制作出了令人炫目的手机壁纸。 今天,我们将进入一个更高阶的领域——优化处理。因为谁不想让生成的艺术品更完美呢?尤其是避免“崩脸”和“马赛克”这种让人抓狂的问题! 创作的路…...
Kafka消费者客户端源码深度解析:从架构到核心流程
在Kafka生态系统中,消费者客户端作为数据消费的入口,其设计与实现直接影响数据处理的效率和可靠性。本文将深入Kafka消费者客户端源码,通过核心组件解析、流程拆解与源码分析,揭示其高性能消费背后的技术奥秘,并辅以架…...
Linux进程间通信:从入门到精通(2)
嘿,小伙伴!今天我们来聊聊Linux系统中一个超级重要的话题——进程间通信(IPC)。看到"进程间通信"这个词,别急着打哈欠,这可是Linux内核中的"社交达人",让进程们能够愉快地交…...
从源码到生产:Apache 2.4.57 自动化安装实战指南(附脚本)
引言:为何选择源码安装 Apache? 在服务器运维场景中,源码编译安装 Apache HTTP Server 是实现精细化配置的重要方式。相比包管理器安装,源码安装可自定义模块组合、适配特定依赖环境,并精确控制版本。本文将通过自动化…...
CMake实践:指定gcc版本编译和交叉编译
目录 1.指定gcc版本编译 1.1.通过CMake参数来实现 1.2.使用 RPATH/RUNPATH 直接指定库路径 1.3.使用符号链接和 LD_LIBRARY_PATH 1.4.使用 wrapper 脚本封装 LD_LIBRARY_PATH 2.交叉编译 2.1.基本用法 2.2.工具链文件关键配置 2.3.多平台工具链示例 2.4.注意事项 2.…...
【MySQL基础】MySQL内置函数全面解析:提升你的数据库操作效率
MySQL学习: https://blog.csdn.net/2301_80220607/category_12971838.html?spm1001.2014.3001.5482 前言: MySQL提供了丰富的内置函数来帮助开发者高效地处理数据。这些函数覆盖了字符串操作、数值计算、日期时间处理、流程控制等多个方面。本文将全面…...
OpenCV CUDA模块设备层-----在GPU上计算两个uchar1类型像素值的反正切(arctangent)比值函数atan2()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 对输入的两个 uchar1 像素值 a 和 b,先分别归一化到 [0.0, 1.0] 浮点区间,然后计算它们的 四象限反正切函数。 函数原型…...
unity 半透明描线shader
效果如图 Shader "Custom/TransparentWithOutline_Fixed" {Properties{// 主材质属性_Color ("Main Color", Color) (1,1,1,1)_MainTex ("Base (RGB) Trans (A)", 2D) "white" {}_Glossiness ("Smoothness", Range(0,1)…...
react中使用antd的form表单去受控switch时初始值没有正确显示
解决方案 antd内api中有valuePropName熟悉 只需正常绑定当前元素触发事件即可...
01__QT的背景介绍和工程创建
一、QT软件的安装 1、qt的背景介绍 Qt 是一个跨平台的 图形界面库(重量级),1994年由罗威troll tech公司出品,它集成了网络、数据库、串口通信协议(RS232,蓝牙,NFC)、打印、PDF生成…...
Java Map 深度解析
一、HashMap 底层实现详解 1. 核心数据结构 HashMap 在 JDK 8 中的底层结构是 数组 链表 红黑树,其核心成员变量包括: transient Node<K,V>[] table;:哈希桶数组transient int size;:实际键值对数量int threshold;&…...
异地组网工具
目前手头上两台服务器(一台主力,一台有gpu用来跑点深度学习任务),两台pc(一台是主力,一台是便携碎片化时间随时赶工用); 之前组网的时候,用zerotiertailscale࿰…...
我们为什么要模拟
大约 25 年前,当我开始从事高速 PCB 设计时,速度很慢,层数少,介电常数和损耗角正切很高,设计裕量很宽,铜粗糙度无关紧要,玻璃编织样式也无关紧要。我们称电介质为“FR-4”,它们的特性…...
MySQL 三大日志:Redo、Undo 与 Binlog 详解
写在前面 关于三大日志,博主看了无数视频和文章,也是总结的非常精辟了! 在 MySQL 数据库的运行机制中,Redo Log、Undo Log 和 Binlog 起着至关重要的作用,它们各司其职,共同保障数据库的数据安全、事务一…...
JMeter-SSE响应数据自动化3.0
背景 此次因为多了一些需要过滤排除的错误(数量很少),还需要修改下JMeter的jtl文件输出数据(后续统计数据需要) 所以只涉及到JSR脚本的一些改动(此部分改动并不会影响到JMeter的HTML报告) 改动 主要通过设置JMeter中prev输出数据变量threadN…...
C#上位机通过WebApi访问WinCC
在智能工厂架构中,WinCC作为SCADA一级,负责着与上级MES和下级PLC及其他现场组件的联系。与下层通信,WinCC支持S7、MC、Modbus TCP、OPC等多种接口和协议。对上层通信,WinCC从7.5 SP2开始支持REST Api这种Web接口方式。 今天跟大家…...
【深度学习新浪潮】什么是端侧AI?
什么是端侧AI? 端侧AI的定义 端侧AI(Edge AI)是指在终端设备(如手机、智能家居、穿戴设备等)本地运行的人工智能技术,无需将数据上传至云端服务器,直接在设备端完成数据处理、模型推理和决策。其核心优势在于低延迟、高隐私性、减少网络依赖,尤其适合对实时性和数据安…...
Postman 的 Jenkins 管理 - 自动构建
目录 一、环境准备 创建 Postman 集合和环境 二、postman Postman 集合和环境并导出 1. 打开已完成并测试无误的 postman 项目脚本。 再次执行测试。 编辑2. 导出( 测试用例集、环境变量 两个文件)**“不 支 持 中 文”** —— 全部改成英文&a…...
HomeBrew MAC PRO 安装教程
1、检查xcode工具 这个东西一般是有的,命令后输入以下内容即可 xcode-select --install如安装,结果为: 2、安装HomeBrew 方式1(推荐) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebr…...
多模态大语言模型arxiv论文略读(129)
Task Success Prediction for Open-Vocabulary Manipulation Based on Multi-Level Aligned Representations ➡️ 论文标题:Task Success Prediction for Open-Vocabulary Manipulation Based on Multi-Level Aligned Representations ➡️ 论文作者:M…...
Android 实现 Toast 显示重叠问题,有效提升用户体验
Android 实现 Toast 显示重叠问题 在 Android 开发中,Toast 是一个非常常用的提示工具,能够为用户提供短暂的信息展示。然而,Toast 的默认实现中,存在一个体验上的问题,当多次触发 Toast 显示时,会导致多个…...
Spring Boot + MyBatis + Vue:构建高效全栈应用的实战指南
一、项目需求分析 假设我们需要开发一个简单的任务管理系统,用户可以通过该系统创建、查看和删除任务。以下是项目的基本需求: 用户管理:用户可以注册和登录系统。 任务管理:用户可以创建、查看和删除任务。 数据持久化&#x…...
语音情感识别:CNN-LSTM 和注意力增强 CNN-LSTM 模型的比较分析
摘要: 语音情感识别 (SER) 技术可帮助计算机理解语音中的人类情感,这在推进人机交互和心理健康诊断方面占据了关键地位。本研究的主要目标是通过创新的深度学习模型提高 SER 的准确性和泛化性。尽管它在人机交互和心理健康诊断等各个领域都很…...
Cursor Pro取消500次请求限制,无限用的体验更好了吗?
目录 前言 一、发生了什么?从"限量"到"无限"的升级 1.1 "顶配" Ultra 套餐的登场 1.2 Pro 套餐的"静默升级" 1.3 新旧方案对比 二、"无限"背后的体验:一个开发者的真实感受 三、Cursor 为何要…...
视频汇聚EasyCVR平台v3.7.2发布:新增全局搜索、播放器默认解码方式等4大功能
EasyCVR视频汇聚平台带着全新的v3.7.2版本重磅登场!此次升级,绝非简单的功能堆砌,而是从用户体验、操作效率以及系统性能等多维度进行的深度优化与革新,旨在为大家带来更加强大、稳定且高效的视频监控管理体验。 一、全局功能搜索…...
2025年AI热潮:开发一款聚合AI系统,包含AI对话、视频、数字人、办公、客服、剪辑为一体的ai智能系统有多强
前言,我们了解了网上比较火的ai平台,比如: 抖音豆包AI、百度AI、阿里巴巴AI、腾讯AI、华为AI、DeepSeek、ChatGPT、文心一言、通义千问 一、系统概述 本聚合AI系统是一个集AI对话、图片生成、视频生成、视频剪辑、数字人创作、音乐制作、办公…...
DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_项目里程碑示例(CalendarView01_22)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
AWS数据库迁移实战:本地MySQL零停机上云方案
一、迁移场景 本地环境:自建MySQL 5.7(数据量500GB),业务要求迁移停机时间<5分钟 目标架构: 二、迁移四步法 步骤1:环境准备(耗时30分钟) 1.1 创建Aurora MySQL # AWS CLI创…...
windows汇编
今天发现一个很好的视频,讲windows汇编/调试等。是个老太太讲的,但是讲的真好。 Create/Assemble/Link x64 Windows asm exe, Debugging Tools for Windows (WinDbg), stack shadow store. 照例边看边记录边实验。 1. install visual studio 2. instal…...
用 python 开发一个可调用工具的 AI Agent,实现电脑配置专业评价
在人工智能时代,AI Agent凭借其强大的任务处理能力,逐渐成为开发人员手中的得力工具。今天,我们就来一起动手,用Python打造一个能够调用工具的AI Agent,实现根据电脑信息对电脑配置进行专业评价的功能。 一、项目创建…...
Java自定义线程池(ThreadPoolExecutor)
Java线程池使用示例 下面将展示如何使用自定义线程池(ThreadPoolExecutor)来执行任务,包括提交Runnable任务、Callable任务,处理拒绝策略以及关闭线程池。 import java.util.concurrent.*;public class ThreadPoolDemo {// 自定义线程工厂(…...
386. 字典序排数
386. 字典序排数 理解题目要求 题目要求我们生成从 1 到 n 的整数的字典序排列,并且要求: 时间复杂度 O(n):不能使用直接排序(通常指的是使用标准的排序算法(如快速排序、归并排序、堆排序等)对数…...
Kaggle-Plant Seedlings Classification-(多分类+CNN+图形处理)
Plant Seedlings Classification 题意: 就是给出很多图片,预测出图片中的小草是什么类型的。 数据处理: 1.去除图片背景,只保留物体。 2.图片数据加强。 建立模型: 1.CNN的Sequential(),多层卷积块和…...
Android 应用多语言与系统语言偏好设置指南
文章目录 创建语言包以中文包为例 以系统为主导的“应用语言偏好设置”从你的应用调到“应用语言偏好设置” 创建语言包 我们可以使用一个很蹩脚的办法来实现: 以中文包为例 values是默认values-zh-rCN是简体中文values-zh-rTW是繁体(台湾省ÿ…...
Excel学习01
Excel是微软公司开发的一款电子表格软件,可以广泛应用于数据处理、统计分析、图表制作、财务管理和自动化办公领域等。Excel在实际工作中使用的非常广泛,为此本次开始针对excel的使用进行一系列讲解。 展示使用的软件是WPS,它和excel的使用方…...
Loggers 配置解析(log4j.xml)
Loggers 配置解析 我们通过下面的例子来理解 log4j 的 Loggers 配置是如何决定日志输出规则的。 <Loggers><!-- 根Logger:全局配置 --><Root level"debug"><AppenderRef ref"consoleAppender" level"info"/&g…...
Matplotlib 绘图库使用技巧介绍
目录 前言 Matplotlib 简介 快速入门 图形结构解剖 常用绘图函数 子图与布局 单行多列子图: 网格布局: 自定义位置: 样式与标注 中文字体与科学计数 图例、网格、坐标轴 动态图与动画 三维绘图 常见问题与技巧 前言 Matplotli…...
服务器如何从http升级到https(nginx)
1.证书申请 可以到阿里云或者华为云去申请证书,申请完下载证书是个压缩包,然后解压 可以到到几个文件夹,找到 .Nginx 文件夹打开 会有两个文件,将这两个文件上传至nginx/conf/cert文件夹下(cert需要手…...
解决戴尔电脑No bootable devices found问题
解决戴尔电脑No bootable devices found问题 一、调整BIOS设置 1、在关机状态下,打开计算机电源,在出现 Dell 徽标时按 F2 键以引导至 BIOS 设置菜单。 2、选择 Boot sequence(引导顺序 )并将选项从 Legacy(传统 &…...
FPGA基础 -- Verilog 行为级建模之条件语句
Verilog 的行为级建模(Behavioral Modeling)中的条件语句(Conditional Statements),逐步从基础到实际工程应用,适合有RTL开发基础但希望深入行为建模的人。 一、行为级建模简介 行为级建模(Beh…...
最大公约数
题目描述 输入两个正整数a,b,求a,b的最大公约数。 输入 输入正整数a和b,中间用空格隔开 输出 输出最大公约数 样例输入 144 84样例输出 12程序分析 :运用辗转相除法(欧几里得算法) 用较大数除以较小数,取余数;…...
springboot入门之路(一)
文章目录 1.Spring Boot介绍2.开发你的第一个Spring Boot应用2.1创建POM2.2yml和properties的配置区别yml配置properties配置 2.3springbootDemo代码2.4创建一个可执行jar 参考文档:SpringBoot参考指南;SpringBoot实战 1.Spring Boot介绍 Spring Boot使…...
vue | vue 插件化机制,全局注册 和 局部注册
组件插件化:提升组件的可复用性、扩展性和独立性 组件插件化实现方式 ├── 注册机制 │ ├── 全局注册(app.use)→ install, 循环注册, 配置项 │ └── 局部注册(import components) │ ├── 插件化能力…...
技术与情感交织的一生 (八)
目录 融合 东西厂公 接风宴 头痛 “巴巴罗萨” 突击 推进 助攻 96小时 寒冬 食堂 反攻 消耗 Delphi 西厂 内困 外患 “敦刻尔克” 多线作战 大撤退 资源 融合 东西厂公 初次来到纸箱厂,是主厂区,感觉很大,相对西面正在…...
基于python的web系统界面登录
#让我们的电脑可以支持服务访问 #需要一个web框架 #pip install Flask from flask import Flask, render_template,request from random import randint app Flask(__name__) app.route(/index) def index():uname request.args.get("uname")return f"主页&am…...
利用Java进行验证码的实现——算数验证码
我主要使用使用 Java Swing 库创建一个 GUI 窗口,然后在窗口中显示生成的算术验证码图片,并提供一个文本框和一个按钮,输入验证码并验证显示结果。 代码如下: package calculate; import javax.swing.*; import java.awt.*; imp…...