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 字节,但需使用扩展数据类型特性)。
  • LONGLONG RAW 类型在较新版本中逐渐被弃用,建议使用 CLOBBLOB 替代。

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' 表示 TRUE0/'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 列 :可以将 VARCHAR2CLOBBLOB 列定义为存储 JSON 数据。
  • JSON 函数 :提供了丰富的 JSON 函数,如 JSON_TABLEJSON_VALUEJSON_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 版本之间的主要变化

  1. Oracle 12C
    • 引入了多租户架构(CDB 和 PDB)。
    • 增强了对 JSON 数据的支持(从 12C R2 开始)。
    • 对 LOB 类型的存储和访问性能进行了优化。
  2. 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 版本差异说明

  1. JSON 类型
    • MySQL 5.7.8+ 引入了 JSON 类型,支持 JSON 文档的存储和查询。
    • MySQL 5.6 及以下版本 不支持 JSON 类型。
  2. 日期和时间类型的微秒精度
    • MySQL 8.0 引入了 DATETIME(fsp)TIMESTAMP(fsp),支持微秒精度(fsp=0-6)。
    • MySQL 5.x 仅支持秒级精度。
  3. 其他类型
    • 数值、字符串、枚举、位等基础类型在 5.x 和 8.x 中均保持一致。
    • 空间数据类型(如 GEOMETRYPOINT)在 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
INTINTEGER 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_VALUEJSON_QUERYJSON_MODIFYOPENJSON 等,用于提取、查询和修改 JSON 数据。

版本变化

  • JSON 支持在 SQL Server 2016 中引入,并在后续版本中得到了进一步的增强和优化。

3.3.7 版本之间的主要变化

  1. SQL Server 2016
    • 引入了对 JSON 数据的支持。
    • 提供了新的日期和时间类型(如 DATETIME2DATETIMEOFFSET)的更好支持。
    • 开始弃用 TEXTNTEXTIMAGE 类型,建议使用 VARCHAR(MAX)NVARCHAR(MAX)VARBINARY(MAX) 替代。
  2. SQL Server 2017
    • 增强了 JSON 支持,提供了更多的 JSON 函数和操作。
    • 引入了对图数据(Graph Data)的支持(通过 NODEEDGE 表类型,但正式广泛支持在后续版本中增强)。
  3. SQL Server 2019
    • 继续增强 JSON 支持。
    • 对大数据和聚类列存储索引进行了优化。
    • 引入了 UTF-8 支持(对于 CHARVARCHAR 数据类型)。
  4. 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
INTEGERINT 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
任意精度数值
NUMERICDECIMAL 用户指定精度和小数位数的数值类型,精度最高可达 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 PRECISIONFLOAT8 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 ZONETIMESTAMPTZ 日期和时间(带时区),精度可到微秒 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 存储 TRUEFALSENULL 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
伪类型 用于函数声明中的特殊类型,如 ANYANYELEMENTANYARRAY 13.x/14.x/15.x/16.x/17.x

3.4.12 版本之间的主要变化

  1. PostgreSQL 13.x
    • 引入了 pg_stat_progress_create_index 视图,用于监控索引创建的进度。
    • 增强了分区表的性能和功能。
    • 数据类型方面,主要对现有类型的性能和稳定性进行了优化。
  2. PostgreSQL 14.x
    • 引入了逻辑复制的增强功能,如支持发布 SEQUENCE
    • 改进了并行查询的性能。
    • 数据类型方面,对 JSONB 类型的查询性能进行了优化。
  3. PostgreSQL 15.x
    • 引入了 MERGE 语句,支持在单个语句中执行条件插入、更新和删除。
    • 增强了 SQL/JSON 路径语言的支持。
    • 数据类型方面,对 RANGE 类型的操作进行了优化。
  4. PostgreSQL 16.x
    • 引入了并行哈希连接,提高了复杂查询的性能。
    • 增强了 pg_stat_statements 扩展,提供了更多的查询性能统计信息。
    • 数据类型方面,对 ARRAY 类型的操作进行了优化,并引入了新的 JSON 函数。
  5. 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
INTEGERINT 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
任意精度数值
NUMERICDECIMAL 用户指定精度和小数位数的数值类型,精度最高可达 38 位 DM7.x/DM8.x
浮点类型
REAL 4 字节浮点数,约 6 位十进制数字精度 DM7.x/DM8.x
DOUBLE PRECISIONFLOAT8 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 存储 TRUEFALSENULL 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 字节的有符号整数,适用于需要节省存储空间的场景。
  • TEXTCLOB :DM8.x 新增了 TEXTCLOB 类型,用于存储大量文本数据,解决了 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 对日期和时间类型的支持更加完善,如 TIMESTAMPDATETIME 类型都支持毫秒精度。
3. 移除或弃用的数据类型
  • 在 DM8.x 中,未发现明显的移除或弃用数据类型的情况,但部分功能或语法可能发生了变化,建议查阅官方文档以获取最新信息。

3.6 人大金仓-KingBase( V7、V8、V9**)**

3.6.1 数值类型

数据类型 说明 V7/V8/V9 支持
整数类型
SMALLINT 2 字节有符号整数,范围 -32,768 到 32,767 V7/V8/V9
INTEGERINT 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
任意精度数值
NUMERICDECIMAL 用户指定精度和小数位数的数值类型,精度最高可达 38 位 V7/V8/V9
浮点类型
REAL 4 字节浮点数,约 6 位十进制数字精度 V7/V8/V9
DOUBLE PRECISIONFLOAT8 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 存储 TRUEFALSENULL(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 中字符串长度限制的问题。
    • CLOBBLOB:用于存储大量文本和二进制数据,满足大对象存储需求。
    • BOOLEAN:用于存储布尔值,简化了逻辑判断的表达。
  • V9 版本新增
    • JSON:支持 JSON 格式的存储和查询,满足了现代应用对 JSON 数据的需求。
    • TIMESTAMP WITH TIME ZONE:支持带时区的日期和时间,增强了时区处理能力。
    • UUID:用于生成通用唯一标识符,适用于分布式系统。
2. 改进的数据类型
  • VARCHAR(n) 的长度限制
    • V7 版本中,VARCHAR(n) 的最大长度可能有限制(具体取决于版本和配置)。
    • V9 版本中,VARCHAR(n) 的最大长度支持到 1GB,提供了更大的灵活性。
  • 日期和时间类型的增强
    • V9 版本新增了 TIMESTAMP WITH TIME ZONE 类型,支持带时区的日期和时间处理。
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 使用 NumberIntNumberLong
数值类型 SMALLINT 支持(2 字节有符号整数) 支持 支持 不支持 使用 NumberInt(32 位整数)
数值类型 INTEGER/INT 支持(4 字节有符号整数) 支持 支持 不支持 使用 NumberIntNumberLong(64 位整数)
数值类型 BIGINT 支持(8 字节有符号整数) 支持 支持 不支持 使用 NumberLong
数值类型 FLOAT 支持(单精度浮点数) 支持 支持 不支持(时序数据用 FLOATDOUBLE 存储值) 使用 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 版本差异说明

  1. GaussDB(for MySQL)
    • 完全兼容 MySQL 数据类型,包括 TINYINTAUTO_INCREMENT 等。
    • 不支持 PostgreSQL 的高级类型(如 ARRAYGEOMETRY)。
  2. GaussDB(for PostgreSQL)
    • 支持 PostgreSQL 的所有原生类型,包括 ARRAYGEOMETRY 等。
    • 不支持 MySQL 特有的 TINYINTAUTO_INCREMENT,但提供替代方案(如 SERIAL)。
  3. GaussDB(DWS)
    • 聚焦分析型场景,支持基础数值、字符串、日期类型。
    • 部分版本支持 JSON 和数组类型,但不如关系型版本丰富。
  4. GaussDB(for Influx)
    • 专为时序数据设计,核心类型为 TIMESTAMPTAGFIELD
    • 不支持关系型数据库的复杂类型(如 JSONARRAY)。
  5. GaussDB(for Mongo)
    • 使用 MongoDB 的文档模型,支持 JSONArrayObjectId 等。
    • 不支持关系型数据库的类型(如 INTVARCHAR),但提供类似功能的替代方案。

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 版本差异说明

  1. GBase 8a
    • 专注于分析型场景,支持基础数值、字符串、日期类型。
    • 部分增强版支持 JSON 类型,但不支持数组、地理空间等高级类型。
    • 不支持序列类型,需通过应用层实现自增逻辑。
  2. GBase 8s
    • 兼容传统关系型数据库,支持完整的数值、字符串、日期类型。
    • 原生支持 JSON、序列类型,但需扩展插件支持地理空间类型。
    • 不支持数组类型,但提供其他高级功能(如触发器、存储过程)。
  3. 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 版本差异说明

  1. 空间数据类型
    • 从 v7.6 开始,TiDB 不支持空间数据类型(如 GEOMETRYPOINT)。
    • 从 v8.0 开始,TiDB 支持空间数据类型,但需通过插件(如 TiDB GIS)开启。
    • 后续版本(v8.1+)继续支持空间数据类型,且功能逐渐完善。
  2. JSON 类型
    • 所有版本均支持 JSON 类型,但 v8.0+ 对 JSON 函数的性能和功能进行了优化。
  3. 其他类型
    • 数值、字符串、日期等基础类型在所有版本中均保持一致。
    • TiDB 不支持序列类型(SEQUENCE),需通过自增主键或其他方式实现。

4 总结

时间有点紧,整理如有错误,请各位朋友指正,谢谢。

相关推荐
执 、1 小时前
SpringBoot定时监控数据库状态
java·数据库·ide·spring boot·后端
不恋水的雨1 小时前
数据库char字段做trim之后查询很慢的解决方式
数据库·sql
guygg882 小时前
Linux中的阻塞信号与信号原理
linux·mysql·apache
眠りたいです3 小时前
MySQL基础与常用数据类型浅析
linux·数据库·mysql
阑梦清川4 小时前
C#建立与数据库连接(版本问题的解决方案)踩坑总结
开发语言·数据库·c#
自由鬼4 小时前
Vitess 深度解析:一个云原生 MySQL 数据库扩展系统
数据库·mysql·云原生
码明5 小时前
4.查看、删除数据库
数据库·oracle
mit6.8245 小时前
[Data Pipeline] MinIO存储(数据湖) | 数据层 Bronze/Silver/Gold
数据库·python
TDengine (老段)5 小时前
TDengine 集群超能力:超越 InfluxDB 的水平扩展与开源优势
大数据·数据库·开源·时序数据库·iot·tdengine·涛思数据