轻松上手,快乐学习!

SQL 数据类型


列的数据类型定义列可以容纳的值:整数,字符,浮点,日期和时间,二进制等。


SQL数据类型

数据库表中的每一列都需要具有名称和数据类型。

SQL开发人员必须确定在创建表时将在每列中存储的数据类型。数据类型是SQL的指南,用于了解每列内部预期的数据类型,并且还标识SQL将如何与存储的数据进行交互。

注意:数据类型在不同的数据库中可能有不同的名称。即使名称相同,大小和其他细节也可能不同!请务必查看文档!


MySQL数据类型(8.0版)

在MySQL中有三种主要的数据类型:字符串,数字,日期和时间。

字符串类型:

数据类型 描述
CHAR(size) 一个固定长度字符串(可以包含字母,数字和特殊字符)。 size参数以字符为单位指定列长度 - 可以是0到255.默认值为1
VARCHAR(size) 保存可变长度的字符串(可以包含字母,数字和特殊字符)。 size参数指定字符的最大列长度 - 可以是0到65535
BINARY(size) 等于CHAR(),但存储二进制字节字符串。 size参数指定列长度(以字节为单位)。 默认值为1
VARBINARY(size) 等于VARCHAR(),但存储二进制字节字符串。 size参数指定最大列长度(以字节为单位)。
TINYBLOB 对于BLOB(二进制大对象)。 最大长度:255个字节
TINYTEXT 包含最大长度为255个字符的字符串
TEXT(size) 保存最大长度为65,535字节的字符串
BLOB(size) 对于BLOB(二进制大对象)。 最多可容纳65,535个字节的数据
MEDIUMTEXT 保存最大长度为16,777,215个字符的字符串
MEDIUMBLOB 对于BLOB(二进制大对象)。 最多可容纳16,777,215字节的数据
LONGTEXT 保存最大长度为4,294,967,295个字符的字符串
LONGBLOB 对于BLOB(二进制大对象)。 最多可容纳4,294,967,295字节的数据
ENUM(val1, val2, val3, ...) 一个字符串对象,只能有一个值,从可能值列表中选择。 您可以在ENUM列表中列出最多65535个值。 如果插入的值不在列表中,则将插入空值。 值按您输入的顺序排序
SET(val1, val2, val3, ...) 一个字符串对象,可以包含0个或更多值,从可能值列表中选择。 您可以在SET列表中列出最多64个值数字数据类型:

数字类型:

数据类型 描述
BIT(size) 位值类型。 每个值的位数以大小指定。 size参数可以包含1到64之间的值.size的默认值为1。
TINYINT(size) 一个非常小的整数。 有符号范围是-128到127.无符号范围是0到255. size参数指定最大显示宽度(255)
BOOL 零被视为假,非零值被视为真。
BOOLEAN 等同 BOOL
SMALLINT(size) 一个小整数。 有符号范围是-32768到32767.无符号范围是0到65535. size参数指定最大显示宽度(255)
MEDIUMINT(size) 中等整数。 有符号范围是-8388608到8388607.无符号范围是0到16777215. size参数指定最大显示宽度(255)
INT(size) 中等整数。 有符号范围从-2147483648到2147483647.无符号范围是0到4294967295. size参数指定最大显示宽度(255)
INTEGER(size) 等同 INT(size)
BIGINT(size) 一个大整数。 符号范围为-9223372036854775808至9223372036854775807.无符号范围为0至18446744073709551615.Thesize参数指定最大显示宽度(255)
FLOAT(sized) 浮点数。 总数位数以大小指定。 小数点后的位数在d参数中指定。 MySQL 8.0.17中不推荐使用此语法,将来的MySQL版本将删除它
FLOAT(p) 浮点数。 MySQL使用p值来确定是否对结果数据类型使用FLOAT或DOUBLE。 如果p为0到24,则数据类型变为FLOAT()。 如果p是25到53,则数据类型变为DOUBLE()
DOUBLE(sized) 正常大小的浮点数。 总数位数以大小指定。 小数点后的位数在d参数中指定
DOUBLE PRECISION(sized)
DECIMAL(sized) 一个确切的定点数。 总数位数以大小指定。 小数点后的位数在d参数中指定。 大小的最大数量为65. d的最大数量为30. size的默认值为10.d的默认值为0。
DEC(sized) 等同 DECIMAL(size,d)

注意:所有数字数据类型都可能有一个额外选项:UNSIGNED或ZEROFILL。如果添加UNSIGNED选项,MySQL将禁止该列的负值。如果添加ZEROFILL选项,MySQL会自动将UNSIGNED属性添加到列中。

日期和时间数据类型:

数据类型 描述
DATE 日期。格式:YYYY-MM-DD。支持的范围从'1000-01-01'到'9999-12-31'
DATETIME(fsp 日期和时间组合。格式:YYYY-MM-DD hh:mm:ss。支持的范围是从“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。在列定义中添加DEFAULT和ON UPDATE以自动初始化并更新到当前日期和时间
TIMESTAMP(fsp 时间戳。TIMESTAMP值存储为自Unix纪元('1970-01-01 00:00:00'UTC)以来的秒数。格式:YYYY-MM-DD hh:mm:ss。支持的范围是从'1970-01-01 00:00:01'UTC到'2038-01-09 03:14:07'UTC。可以使用列定义中的DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP来指定自动初始化和更新到当前日期和时间
TIME(fsp 时间。格式:hh:mm:ss。支持范围从'-838:59:59'到'838:59:59'
YEAR 一年四位数格式。范围是:1901到2155和0000.
8.0不支持两位数格式的年份。

 


SQL Server数据类型

字符串类型:

数据类型 描述 最大值 存储
char(n) 固定字符 8,000 字符 Defined width
varchar(n) 可变字符串 8,000 字符 2 bytes + number of chars
varchar(max) 可变字符串 1,073,741,824 字符 2 bytes + number of chars
text 可变字符串 2GB 文本数据 4 bytes + number of chars
nchar 固定长度的 Unicode 字符串 4,000 字符 Defined width x 2
nvarchar 可变长度的 Unicode 字符串 4,000 字符
nvarchar(max) 可变长度的 Unicode 字符串 536,870,912 字符
ntext 可变长度的 Unicode 字符串 2GB 文本数据
binary(n) 固定长度的二进制字符串。 8,000 字节
varbinary 可变长度的二进制字符串 8,000 字节
varbinary(max) 可变长度的二进制字符串 2GB
image 可变长度的二进制字符串 2GB

数字类型:

数据类型 描述 存储
bit 允许 0、1 或 NULL
tinyint 允许从 0 到 255 的所有数字。 1 字节
smallint 允许介于 -32,768 与 32,767 的所有数字。 2 字节
int 允许介于 -2,147,483,648 与 2,147,483,647 的所有数字。 4 字节
bigint 允许介于 -9,223,372,036,854,775,808 与 9,223,372,036,854,775,807 之间的所有数字。 8 字节
decimal(p,s) 固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。
p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。
s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
5-17 字节
numeric(p,s) 固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。
p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。
s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
5-17 字节
smallmoney 介于 -214,748.3648 与 214,748.3647 之间的货币数据。 4 字节
money 介于 -922,337,203,685,477.5808 与 922,337,203,685,477.5807 之间的货币数据。 8 字节
float(n) 从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。n 参数指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。 4 or 8 字节
real 从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。 4 字节

日期和时间数据类型:

数据类型 描述 存储
datetime 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。 8 字节
datetime2 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。 6-8 字节
smalldatetime 从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。 4 字节
date 仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。 3 字节
time 仅存储时间。精度为 100 纳秒。 3-5 字节
datetimeoffset 与 datetime2 相同,外加时区偏移。 8-10 字节
timestamp 存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 值基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。

其他数据类型:

数据类型 描述
SQL_VARIANT 存储多达8,000个字节的各种数据类型的数据,text,ntext和timestamp除外
uniqueidentifier 存储全局唯一标识符(GUID)
XML 存储XML格式的数据。最大2GB
cursor 存储对用于数据库操作的游标的引用
table 存储结果集以供以后处理

Microsoft Access数据类型

数据类型 描述 存储
Text 用于文本或文本和数字的组合。 最多255个字符
Memo 备忘录用于大量文本。 最多可存储65,536个字符。 注意:您无法对备注字段进行排序。 但是,它们是可搜索的
Byte 允许从0到255的整数 1 字
Integer 允许-32,768到32,767之间的整数 2 字节
Long 允许-2,147,483,648和2,147,483,647之间的整数 4 字节
Single 单精度浮点。 将处理大多数小数 4 字节
Double 双精度浮点。 将处理大多数小数 8 字节
Currency 用于货币。 最多可容纳15位数的全数,加上4位小数。 提示:您可以选择要使用的国家的货币 8 字节
AutoNumber 自动编号字段自动为每个记录提供自己的编号,通常从1开始 4 字节
Date/Time 用于日期和时间 8 字节
Yes/No 逻辑字段可以显示为是/否,真/假或开/关。 在代码中,使用常量True和False(相当于-1和0)。 注意:“是/否”字段中不允许空值 1 字
Ole Object 可以存储图片,音频,视频或其他BLOB(二进制大对象) 最大 1GB
Hyperlink 包含指向其他文件的链接,包括网页
Lookup Wizard 让您键入一个选项列表,然后可以从下拉列表中选择 4 字节