在 SQL 中,每个列(在表中)都有一个数据类型。这限制了可以存储在该列中的数据类型。
示例
CREATE TABLE Employees (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER,
salary REAL
);
在上面的示例中,我们创建了一个名为 Employees
的表,其中包含四个列:id
、name
、age
和 salary
。id
和 age
列使用 INTEGER
数据类型,name
列使用 TEXT
,salary
列使用 REAL
。
SQL 数据类型语法
SQL 数据类型的语法是
CREATE TABLE table_name (
column1_name datatype1,
column2_name datatype2,
column3_name datatype3,
...
);
这里,
column1_name
、column2_name
、column3_name
、...
是列的名称datatype1
、datatype2
、datatype3
、...
是要存储在相应列中的数据类型,例如INTEGER
、TEXT
等
注意:支持的数据类型可能因不同的数据库系统而异,这意味着并非所有系统都支持相同类型的数据。
SQL Server 数据类型
SQL Server 支持的数据类型是:
数值数据类型
数据类型 | 描述 |
---|---|
BIT |
可以存储单个位(0 或 1)或 NULL |
TINYINT |
可以存储从 0 到 255 的数字 |
SMALLINT |
可以存储从 -32,768 到 32,767 的数字 |
INT |
可以存储从 -2,147,483,648 到 2,147,483,647 的数字 |
BIGINT |
可以存储从 -9,223,372,036,854,775,808 到 9,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 的范围可以是 1 到 64 |
TINYINT |
可以存储从 -128 到 127 的数字 |
SMALLINT |
可以存储从 -32768 到 32767 的数字 |
MEDIUMINT |
可以存储从 -8,388,608 到 8,388,607 的数字 |
INT |
可以存储从 -2,147,483,648 到 2,147,483,647 的数字 |
BIGINT |
可以存储从 -9,223,372,036,854,775,808 到 9,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-01 到 9999-12-31 |
DATETIME |
可以存储格式为 YYYY-MM-DD hh:mm:ss 的日期和时间 |
TIME |
只能存储格式为 hh:mm:ss 的时间,范围从 -838:59:59 到 838:59:59 |
YEAR |
可以存储 4 位数字格式的年份,范围从 1901 到 2155 |
TIMESTAMP |
可以存储从当前时区到 UTC 的时间戳 |
注意: MySQL 支持更多数据类型。要了解更多信息,请访问 MySQL 文档。
PostgreSQL 数据类型
PostgreSQL 支持的数据类型是:
数值数据类型
数据类型 | 描述 |
---|---|
SMALLINT |
可以存储从 -32,768 到 32,767 的数字 |
INTEGER |
可以存储从 -2,147,483,648 到 2,147,483,647 的数字 |
BIGINT |
可以存储从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 的数字 |
DECIMAL |
可以存储小数点前最多 131072 位数字;小数点后最多 16383 位数字 |
SMALLSERIAL |
可以存储从 1 到 32767 的小型自增数字 |
SERIAL |
可以存储从 1 到 2147483647 的自增数字 |
BIGSERIAL |
可以存储从 1 到 9223372036854775807 的大型自增数字 |
字符串数据类型
数据类型 | 描述 |
---|---|
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 文档。
另请阅读