目录

  1. SQL 数据类型简介
  2. 常见 SQL 数据类型的数据库差异
  3. MySQL 数据类型
  4. PostgreSQL 数据类型
  5. SQL Server 数据类型
  6. Oracle 数据类型
  7. 参考资料

SQL 数据类型简介

SQL 数据类型决定了表中列的类型和存储方式。不同的数据库管理系统(DBMS)会有自己的实现方式和数据类型的支持。尽管各大 DBMS 的数据类型有差异,但大多数遵循类似的分类方法,如数字类型、字符串类型、日期和时间类型等。


常见 SQL 数据类型的数据库差异

SQL 中常见的几种数据类型包括:

  1. 数字类型:用于存储整数、浮动点数等。
  2. 字符类型:用于存储文本数据。
  3. 日期与时间类型:用于存储日期和时间。
  4. 二进制类型:用于存储二进制数据。

不同的数据库系统对这些数据类型有不同的实现方式和限制。以下是主要数据库系统(MySQL、PostgreSQL、SQL Server、Oracle)中常见数据类型的比较。


MySQL 数据类型

MySQL 支持广泛的 SQL 数据类型,并且其有一些专用数据类型。以下是 MySQL 中常见数据类型:

数字类型

  • INT:标准整数类型。
  • TINYINT:非常小的整数(1字节)。
  • SMALLINT:小的整数(2字节)。
  • MEDIUMINT:中等大小的整数(3字节)。
  • BIGINT:大整数类型(8字节)。
  • FLOATDOUBLE:用于存储浮动点数。
  • DECIMAL:用于存储高精度的小数。

字符串类型

  • CHAR:定长字符串。
  • VARCHAR:变长字符串。
  • TEXT:存储大文本数据。
  • ENUM:用于存储一组预定义的值(非常适用于有限的选择)。

日期和时间类型

  • DATE:存储日期(YYYY-MM-DD)。
  • TIME:存储时间(HH:MM:SS)。
  • DATETIME:存储日期和时间(YYYY-MM-DD HH:MM:SS)。
  • TIMESTAMP:与 DATETIME 类似,用于存储时间戳,自动更新。

二进制类型

  • BINARY:定长二进制数据。
  • VARBINARY:变长二进制数据。
  • BLOB:用于存储大量二进制数据。

PostgreSQL 数据类型

PostgreSQL 是一个支持扩展的高级关系数据库,支持许多 SQL 标准数据类型以及其他扩展类型。

数字类型

  • INTEGER:标准整数类型。
  • SMALLINT:小整数类型(2字节)。
  • BIGINT:大整数类型(8字节)。
  • NUMERICDECIMAL:用于存储高精度的数字。
  • REALDOUBLE PRECISION:用于存储浮动点数。

字符串类型

  • CHAR(n):定长字符串。
  • VARCHAR(n):变长字符串。
  • TEXT:存储不定长文本。
  • BYTEA:用于存储二进制数据。

日期和时间类型

  • DATE:存储日期(YYYY-MM-DD)。
  • TIME:存储时间(HH:MM:SS)。
  • TIMESTAMP:存储日期和时间(YYYY-MM-DD HH:MM:SS)。
  • INTERVAL:存储时间间隔。

二进制类型

  • BYTEA:用于存储二进制数据。

特有数据类型

  • JSONJSONB:用于存储 JSON 格式的数据。
  • UUID:用于存储通用唯一识别码。
  • ARRAY:用于存储数组类型。

SQL Server 数据类型

SQL Server 支持的 SQL 数据类型与其他 DBMS 稍有不同。以下是 SQL Server 中的一些常见数据类型:

数字类型

  • INT:标准整数类型。
  • TINYINT:非常小的整数(1字节)。
  • SMALLINT:小的整数(2字节)。
  • BIGINT:大整数类型(8字节)。
  • DECIMALNUMERIC:用于存储精确的小数。
  • FLOATREAL:用于存储浮动点数。

字符串类型

  • CHAR(n):定长字符串。
  • VARCHAR(n):变长字符串。
  • TEXT:存储长文本数据(已被 VARCHAR(MAX) 取代)。
  • NCHAR(n):定长 Unicode 字符串。
  • NVARCHAR(n):变长 Unicode 字符串。

日期和时间类型

  • DATE:存储日期(YYYY-MM-DD)。
  • TIME:存储时间(HH:MM:SS)。
  • DATETIME:存储日期和时间(YYYY-MM-DD HH:MM:SS)。
  • DATETIME2:比 DATETIME 精确度更高。
  • SMALLDATETIME:较低精度的日期和时间类型。

二进制类型

  • BINARY(n):定长二进制数据。
  • VARBINARY(n):变长二进制数据。
  • IMAGE:存储大二进制数据(已被 VARBINARY(MAX) 取代)。

Oracle 数据类型

Oracle 数据库也支持广泛的 SQL 数据类型,并提供了一些特有的类型。

数字类型

  • NUMBER:标准数值类型,允许定义精度和范围。
  • INTEGER:一个整数类型,等同于 NUMBER
  • FLOAT:浮动点数类型。

字符串类型

  • CHAR(n):定长字符串。
  • VARCHAR2(n):变长字符串。
  • CLOB:存储字符数据的大对象(文本)。

日期和时间类型

  • DATE:存储日期和时间(YYYY-MM-DD HH:MM:SS)。
  • TIMESTAMP:存储日期和时间,并包含毫秒。
  • INTERVAL:存储时间间隔。

二进制类型

  • RAW:用于存储定长二进制数据。
  • LONG RAW:存储大规模二进制数据(已被 BLOB 取代)。
  • BLOB:用于存储大二进制数据。

参考资料