SQL 通用数据类型
SQL 通用数据类型
Section titled “SQL 通用数据类型”数据类型(data type)定义了列(column)可以存储的值的种类,例如整数(integer)、字符串(character string)、日期/时间(date/time)或布尔值(boolean)。它还决定了可以对该数据执行的操作。
SQL 通用数据类型概述
Section titled “SQL 通用数据类型概述”数据库表(database table)中的每一列(column)都必须有一个名称和一个数据类型(data type)。在创建表时,SQL 开发者决定每列将存储什么类型的数据。
数据类型是 SQL 理解每列中数据性质、存储方式以及如何与数据交互(例如,用于比较、计算或排序)的指导原则。
下表列出了一些 SQL 通用数据类型类别和常见的标准类型。请注意,具体的实现和名称可能因数据库系统而异。
| 通用数据类型类别 / ANSI SQL 类型 | 描述 |
|---|---|
| CHAR(n) | 固定长度的字符串,长度为 n。 |
| VARCHAR(n) | 可变长度的字符串,最大长度为 n。 |
| TEXT / CLOB | 用于存储大型文本数据的可变长度字符串。(名称各异:TEXT, CLOB, VARCHAR(MAX)) |
| NCHAR(n), NVARCHAR(n), NTEXT | 用于存储 Unicode 字符串的本地字符版本(名称和可用性各异)。 |
| BINARY(n) | 固定长度的二进制字符串,长度为 n。 |
| VARBINARY(n) | 可变长度的二进制字符串,最大长度为 n。 |
| BLOB / BYTEA | 用于存储大型对象(如图像或文件)的可变长度二进制数据。(名称各异:BLOB, BYTEA, VARBINARY(MAX), IMAGE (已弃用)) |
| BOOLEAN | 存储 TRUE 或 FALSE 值。(实现各异:BIT, TINYINT(1), 原生 BOOLEAN) |
| INTEGER / INT | 整数数值数据(整数)。精度各异(例如:SMALLINT, INTEGER, BIGINT)。 |
| DECIMAL(p,s) / NUMERIC(p,s) | 精确的数值数据,具有精度 p(总位数)和标度 s(小数点后的位数)。例如,DECIMAL(10,2) 可以存储 12345678.90 这样的数字。 |
| FLOAT(p) / REAL / DOUBLE PRECISION | 近似数值数据(浮点数)。精度各异。 |
| DATE | 存储日期值(年、月、日)。 |
| TIME | 存储时间值(时、分、秒、毫秒)。可能包含时区。 |
| TIMESTAMP / DATETIME | 存储日期和时间值。可能包含时区和毫秒。(DATETIME, DATETIME2, TIMESTAMP WITH/WITHOUT TIME ZONE) |
| INTERVAL | 表示一段时间间隔。 |
| XML | 存储 XML 数据。 |
| JSON | 存储 JSON 数据(在现代数据库中越来越常见)。 |
| ARRAY | 同类型元素的有序集合(并非所有数据库都支持)。 |
| UUID / GUID | 通用唯一标识符(Universally Unique Identifier,在许多系统中受支持)。 |
跨平台 SQL 数据类型快速参考
Section titled “跨平台 SQL 数据类型快速参考”不同的数据库系统(database system)通常对数据类型有自己的名称和特定特性,即使是概念上相似的类型也是如此。下表显示了一些常用数据类型的常见映射。这是一份通用指南;请务必查阅您特定 RDBMS 的官方文档以获取准确和最新的信息。
常用数据类型映射(示例):
| 类别 | MS Access | SQL Server | Oracle | MySQL | PostgreSQL |
|---|---|---|---|---|---|
| 布尔值 | Yes/No | BIT | (使用 NUMBER(1) 或 CHAR(1)) | BOOL, BOOLEAN (TINYINT(1) 的别名) | BOOLEAN |
| 整数 | Number (Integer, Long Int) | INT, BIGINT, SMALLINT, TINYINT | NUMBER(p,0), INTEGER | INT, BIGINT, SMALLINT, TINYINT | INTEGER, BIGINT, SMALLINT |
| 精确小数 | Number (Decimal) | DECIMAL(p,s), NUMERIC(p,s) | NUMBER(p,s) | DECIMAL(p,s), NUMERIC(p,s) | NUMERIC(p,s), DECIMAL(p,s) |
| 近似浮点数 | Number (Single, Double) | FLOAT, REAL | BINARY_FLOAT, BINARY_DOUBLE | FLOAT, DOUBLE | REAL, DOUBLE PRECISION |
| 货币 | Currency | MONEY, SMALLMONEY | (使用 NUMBER(p,s)) | (使用 DECIMAL(p,s)) | MONEY (固定精度) |
| 固定长度字符串 | (使用 Short Text) | CHAR(n), NCHAR(n) | CHAR(n), NCHAR(n) | CHAR(n) | CHARACTER(n), CHAR(n) |
| 可变长度字符串 | Short Text (<256), Long Text | VARCHAR(n), NVARCHAR(n), VARCHAR(MAX), NVARCHAR(MAX) | VARCHAR2(n), NVARCHAR2(n), CLOB, NCLOB | VARCHAR(n), TEXT (及变体) | VARCHAR(n), TEXT, CHARACTER VARYING(n) |
| 仅日期 | Date/Time (格式为 Date) | DATE | DATE (包含时间,或使用 TRUNC) | DATE | DATE |
| 日期和时间 | Date/Time | DATETIME2, DATETIME, SMALLDATETIME, DATETIMEOFFSET | DATE (总是包含时间), TIMESTAMP (变体) | DATETIME, TIMESTAMP | TIMESTAMP (变体), TIMESTAMPTZ |
| 二进制大型对象 | OLE Object (old), Attachment | VARBINARY(MAX), IMAGE (deprecated) | BLOB, BFILE | BLOB (及变体,如 LONGBLOB) | BYTEA |
| 重要说明:数据类型名称、支持的大小、精度和行为在不同的数据库系统之间可能存在显著差异。请务必查阅您使用的特定 RDBMS 的官方文档,以获取准确和最新的信息。 |
|---|