目录
SQL 数据类型简介
SQL 数据类型决定了表中列的类型和存储方式。不同的数据库管理系统(DBMS)会有自己的实现方式和数据类型的支持。尽管各大 DBMS 的数据类型有差异,但大多数遵循类似的分类方法,如数字类型、字符串类型、日期和时间类型等。
常见 SQL 数据类型的数据库差异
SQL 中常见的几种数据类型包括:
- 数字类型:用于存储整数、浮动点数等。
- 字符类型:用于存储文本数据。
- 日期与时间类型:用于存储日期和时间。
- 二进制类型:用于存储二进制数据。
不同的数据库系统对这些数据类型有不同的实现方式和限制。以下是主要数据库系统(MySQL、PostgreSQL、SQL Server、Oracle)中常见数据类型的比较。
MySQL 数据类型
MySQL 支持广泛的 SQL 数据类型,并且其有一些专用数据类型。以下是 MySQL 中常见数据类型:
数字类型
- INT:标准整数类型。
- TINYINT:非常小的整数(1字节)。
- SMALLINT:小的整数(2字节)。
- MEDIUMINT:中等大小的整数(3字节)。
- BIGINT:大整数类型(8字节)。
- FLOAT 和 DOUBLE:用于存储浮动点数。
- 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字节)。
- NUMERIC 或 DECIMAL:用于存储高精度的数字。
- REAL 和 DOUBLE PRECISION:用于存储浮动点数。
字符串类型
- CHAR(n):定长字符串。
- VARCHAR(n):变长字符串。
- TEXT:存储不定长文本。
- BYTEA:用于存储二进制数据。
日期和时间类型
- DATE:存储日期(
YYYY-MM-DD
)。 - TIME:存储时间(
HH:MM:SS
)。 - TIMESTAMP:存储日期和时间(
YYYY-MM-DD HH:MM:SS
)。 - INTERVAL:存储时间间隔。
二进制类型
- BYTEA:用于存储二进制数据。
特有数据类型
- JSON 和 JSONB:用于存储 JSON 格式的数据。
- UUID:用于存储通用唯一识别码。
- ARRAY:用于存储数组类型。
SQL Server 数据类型
SQL Server 支持的 SQL 数据类型与其他 DBMS 稍有不同。以下是 SQL Server 中的一些常见数据类型:
数字类型
- INT:标准整数类型。
- TINYINT:非常小的整数(1字节)。
- SMALLINT:小的整数(2字节)。
- BIGINT:大整数类型(8字节)。
- DECIMAL 和 NUMERIC:用于存储精确的小数。
- FLOAT 和 REAL:用于存储浮动点数。
字符串类型
- 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:用于存储大二进制数据。
发表回复