SQL 数据类型

在 SQL 中,每个列(在表中)都有一个数据类型。这限制了可以存储在该列中的数据类型。

示例

CREATE TABLE Employees (
  id INTEGER PRIMARY KEY,
  name TEXT,
  age INTEGER,
  salary REAL
);

在上面的示例中,我们创建了一个名为 Employees 的表,其中包含四个列:idnameagesalaryidage 列使用 INTEGER 数据类型,name 列使用 TEXTsalary 列使用 REAL


SQL 数据类型语法

SQL 数据类型的语法是

CREATE TABLE table_name (
   column1_name datatype1,
   column2_name datatype2,
   column3_name datatype3,
   ...
);

这里,

  • column1_namecolumn2_namecolumn3_name... 是列的名称
  • datatype1datatype2datatype3... 是要存储在相应列中的数据类型,例如 INTEGERTEXT

注意:支持的数据类型可能因不同的数据库系统而异,这意味着并非所有系统都支持相同类型的数据。


SQL Server 数据类型

SQL Server 支持的数据类型是:

数值数据类型

数据类型 描述
BIT 可以存储单个位(01)或 NULL
TINYINT 可以存储从 0255 的数字
SMALLINT 可以存储从 -32,76832,767 的数字
INT 可以存储从 -2,147,483,6482,147,483,647 的数字
BIGINT 可以存储从 -9,223,372,036,854,775,8089,223,372,036,854,775,807 的数字

字符串数据类型

数据类型 描述
CHAR(x) 可以存储固定长度的字符(最多 8000 个字符)
VARCHAR(x) 可以存储给定长度的字符(最多 8000 个字符)
TEXT 可以存储最大 2 GB 大小的字符
IMAGE 可以存储最大 2 GB 大小的二进制字符串

日期和时间数据类型

数据类型 描述
DATETIME 可以存储从 1753 年 1 月 1 日9999 年 12 月 31 日 的日期和时间
DATETIME2 可以存储从 0001 年 1 月 1 日9999 年 12 月 31 日 的日期和时间
DATE 只能存储从 0001 年 1 月 1 日9999 年 12 月 31 日 的日期
TIME 只能存储时间

注意: SQL Server 支持许多其他数据类型。要了解更多信息,请访问 SQL Server 文档


MySQL 数据类型

MySQL 支持的数据类型是:

数值数据类型

数据类型 描述
BIT(x) 可以存储 x 位 值。x 的范围可以是 164
TINYINT 可以存储从 -128127 的数字
SMALLINT 可以存储从 -3276832767 的数字
MEDIUMINT 可以存储从 -8,388,6088,388,607 的数字
INT 可以存储从 -2,147,483,6482,147,483,647 的数字
BIGINT 可以存储从 -9,223,372,036,854,775,8089,223,372,036,854,775,807 的数字
DECIMAL(x, y) 可以存储总共 x 位(最多 65 位)的十进制数,其中 y 位(最多 30 位)分配在小数点后

字符串数据类型

数据类型 描述
CHAR(x) 可以存储固定长度的字符(最多 8000 个字符)
VARCHAR(x) 可以存储给定长度的字符(最多 8000 个字符)
BINARY(x) 可以存储固定长度的二进制字符串
VARBINARY(x) 可以存储给定长度的二进制字符串
TINYTEXT 可以存储最多 255 个字符
TEXT(x) 可以存储在给定限制内的字符(最多 65,535 字节)
MEDIUMTEXT 可以存储最多 16,777,215 个字符
LONGTEXT 可以存储最多 4,294,967,295 个字符
BLOB(x) 可以存储最多 65,535 字节的二进制大对象
MEDIUMBLOB 可以存储最多 16,777,215 字节的二进制大对象
LONGBLOB 可以存储最多 4,294,967,295 字节的二进制大对象

日期和时间数据类型

数据类型 描述
DATE 可以存储格式为 YYYY-MM-DD 的日期,范围从 1000-01-019999-12-31
DATETIME 可以存储格式为 YYYY-MM-DD hh:mm:ss 的日期和时间
TIME
只能存储格式为 hh:mm:ss 的时间,范围从 -838:59:59838:59:59
YEAR 可以存储 4 位数字格式的年份,范围从 19012155
TIMESTAMP 可以存储从当前时区到 UTC 的时间戳

注意: MySQL 支持更多数据类型。要了解更多信息,请访问 MySQL 文档


PostgreSQL 数据类型

PostgreSQL 支持的数据类型是:

数值数据类型

数据类型 描述
SMALLINT 可以存储从 -32,76832,767 的数字
INTEGER 可以存储从 -2,147,483,6482,147,483,647 的数字
BIGINT 可以存储从 -9,223,372,036,854,775,8089,223,372,036,854,775,807 的数字
DECIMAL 可以存储小数点前最多 131072 位数字;小数点后最多 16383 位数字
SMALLSERIAL 可以存储从 132767 的小型自增数字
SERIAL 可以存储从 12147483647 的自增数字
BIGSERIAL 可以存储从 19223372036854775807 的大型自增数字

字符串数据类型

数据类型 描述
CHAR(x) 可以存储固定长度的字符
VARCHAR(x) 可以存储给定长度的字符
TEXT 可以无限制地存储字符

日期和时间数据类型

数据类型 描述
TIMESTAMP 可以存储日期和时间
DATE 只能存储日期
TIME 只能存储时间

注意: PostgreSQL 支持更多数据类型。要了解更多信息,请访问 PostgreSQL 文档


Oracle 数据类型

Oracle 支持的数据类型是:

数值数据类型

数据类型 描述
NUMBER 可以存储数字

字符串数据类型

数据类型 描述
CHAR(x) 可以存储固定长度的字符,最多 2000 字节或字符
VARCHAR(x) 可以存储给定长度的字符(最大 4000 字节或字符)
LONG 可以存储最多 2 GB 的字符

日期和时间数据类型

数据类型 描述
TIMESTAMP 可以存储日期和时间
DATE 只能存储从 公元前 4712 年 1 月 1 日公元 9999 年 12 月 31 日 的日期
TIME 只能存储时间

注意: Oracle 支持更多数据类型。要了解更多信息,请访问 Oracle 文档


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战