SQL MySQL、SQL Server 和 MS Access 的数据类型
这 数据类型 列定义了该列可以保存什么值:整数、字符、货币、日期和时间、二进制等等。
SQL 数据类型
数据库表中的每一列都需要有一个名称和数据类型。
SQL 开发人员在创建表时必须决定每列中存储的数据类型。数据类型是 SQL 了解每列中应存储什么类型的数据的指南,它还确定了 SQL 将如何与存储的数据进行交互。
笔记: 数据类型在不同的数据库中可能有不同的名称。即使名称相同,大小和其他细节也可能不同!请务必检查文档!
MySQL 数据类型(版本 8.0)
MySQL 中有三种主要数据类型:字符串,数字以及日期和时间。
字符串数据类型
数据类型 | 描述 |
---|---|
CHAR(大小) | 固定长度的字符串(可以包含字母、数字和特殊字符)。 尺寸 参数指定列长度(以字符为单位)——可以是 0 到 255。默认值为 1 |
VARCHAR(大小) | 可变长度的字符串(可以包含字母、数字和特殊字符)。 尺寸 参数指定字符串的最大长度(以字符为单位)——范围是 0 到 65535 |
BINARY(大小) | 相当于 CHAR(),但存储的是二进制字节字符串。 尺寸 参数指定列长度(以字节为单位)。默认值为 1 |
VARBINARY(大小) | 相当于 VARCHAR(),但存储二进制字节字符串。 尺寸 参数指定最大列长度(以字节为单位)。 |
微小的斑点 | 适用于 BLOB(二进制大对象)。最大长度:255 字节 |
微小文本 | 保存最大长度为 255 个字符的字符串 |
字体大小) | 保存最大长度为 65,535 字节的字符串 |
BLOB(大小) | 适用于 BLOB(二进制大对象)。最多可容纳 65,535 字节数据 |
媒体文本 | 保存最大长度为 16,777,215 个字符的字符串 |
中等斑点 | 适用于 BLOB(二进制大对象)。最多可容纳 16,777,215 字节数据 |
长文 | 保存最大长度为 4,294,967,295 个字符的字符串 |
长斑点 | 适用于 BLOB(二进制大对象)。最多可容纳 4,294,967,295 字节数据 |
枚举(val1,val2,val3,...) | 一个字符串对象,只能有一个值,从可能值列表中选择。您可以在 ENUM 列表中列出最多 65535 个值。如果插入的值不在列表中,则会插入一个空白值。值按您输入的顺序排序 |
设置(值1,值2,值3,...) | 一个字符串对象,可以有 0 个或多个值,从可能值列表中选择。您可以在 SET 列表中列出最多 64 个值 |
数字数据类型
数据类型 | 描述 |
---|---|
少量(尺寸) | 位值类型。每个值的位数在 尺寸。 这 尺寸 参数可以保存从 1 到 64 的值。默认值为尺寸 为 1。 |
TINYINT(尺寸) | 非常小的整数。有符号范围是 -128 到 127。无符号范围是 0 到 255。 尺寸 参数指定最大显示宽度(为 255) |
布尔值 | 零被视为假,非零值被视为真。 |
布尔值 | 等于 BOOL |
SMALLINT(尺寸) | 一个小整数。有符号范围是 -32768 到 32767。无符号范围是 0 到 65535。 尺寸 参数指定最大显示宽度(为 255) |
中号薄荷(尺寸) | 中等整数。有符号范围为 -8388608 至 8388607。无符号范围为 0 至 16777215。 尺寸 参数指定最大显示宽度(为 255) |
INT(尺寸) | 中等整数。有符号范围为 -2147483648 至 2147483647。无符号范围为 0 至 4294967295。 尺寸 参数指定最大显示宽度(为 255) |
整数(尺寸) | 等于 INT(size) |
BIGINT(尺寸) | 大整数。有符号范围为 -9223372036854775808 至 9223372036854775807。无符号范围为 0 至 18446744073709551615。 尺寸 参数指定最大显示宽度(为 255) |
漂浮(尺寸, d) | 浮点数。数字总数在 尺寸。小数点后的位数在 d 参数。此语法在 MySQL 8.0.17 中已弃用,并将在未来的 MySQL 版本中删除 |
漂浮(页) | 浮点数。MySQL 使用 页 值来确定是否使用 FLOAT 或 DOUBLE 作为结果数据类型。如果页 介于 0 至 24 之间,数据类型变为 FLOAT()。如果页 从 25 到 53,数据类型变为 DOUBLE() |
双倍的(尺寸, d) | 正常大小的浮点数。数字总数在 尺寸。小数点后的位数在 d 范围 |
双精度(尺寸, d) | |
十进制(尺寸, d) | 精确的定点数。数字总数在 尺寸。小数点后的位数在 d 参数。尺寸 为 65。d 为 30。默认值为尺寸 为 10。默认值为d 为 0。 |
十二月(尺寸, d) | 等于 DECIMAL(size,d) |
笔记: 所有数字数据类型可能都有一个额外的选项:UNSIGNED 或 ZEROFILL。如果添加 UNSIGNED 选项,MySQL 不允许列使用负值。如果添加 ZEROFILL 选项,MySQL 还会自动将 UNSIGNED 属性添加到列中。
日期和时间数据类型
数据类型 | 描述 |
---|---|
日期 | 日期。格式:YYYY-MM-DD。支持的范围是从“1000-01-01”到“9999-12-31” |
约会时间(纤维蛋白原) | 日期和时间组合。格式:YYYY-MM-DD hh:mm:ss。支持的范围是从“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。在列定义中添加 DEFAULT 和 ON UPDATE 可自动初始化并更新为当前日期和时间 |
时间戳(纤维蛋白原) | 时间戳。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 指定自动初始化和更新到当前日期和时间 |
时间(纤维蛋白原) | 时间。格式:hh:mm:ss。支持的范围是从“-838:59:59”到“838:59:59” |
年 | 四位数字格式的年份。四位数字格式允许的值:1901 至 2155,以及 0000。 MySQL 8.0 不支持两位数格式的年份。 |
SQL Server 数据类型
字符串数据类型
数据类型 | 描述 | 最大尺寸 | 贮存 |
---|---|---|---|
字符(n) | 固定宽度字符串 | 8,000 个字符 | 定义宽度 |
varchar(n) | 可变宽度字符串 | 8,000 个字符 | 2 个字节 + 字符数 |
varchar(最大) | 可变宽度字符串 | 1,073,741,824 个字符 | 2 个字节 + 字符数 |
文本 | 可变宽度字符串 | 2GB 文本数据 | 4 个字节 + 字符数 |
纳查尔 | 固定宽度 Unicode 字符串 | 4,000 个字符 | 定义宽度 x 2 |
字符型 | 可变宽度 Unicode 字符串 | 4,000 个字符 | |
nvarchar(最大) | 可变宽度 Unicode 字符串 | 536,870,912 个字符 | |
ntext | 可变宽度 Unicode 字符串 | 2GB 文本数据 | |
二进制(n) | 固定宽度二进制字符串 | 8,000 字节 | |
二进制 | 可变宽度二进制字符串 | 8,000 字节 | |
varbinary(最大) | 可变宽度二进制字符串 | 2GB | |
图像 | 可变宽度二进制字符串 | 2GB |
数字数据类型
数据类型 | 描述 | 贮存 |
---|---|---|
少量 | 整数,可以为 0、1 或 NULL | |
tinyint | 允许 0 至 255 之间的整数 | 1 字节 |
smallint | 允许 -32,768 至 32,767 之间的整数 | 2 个字节 |
整数 | 允许 -2,147,483,648 和 2,147,483,647 之间的整数 | 4字节 |
大整型 | 允许 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的整数 | 8 个字节 |
小数(p,s) | 固定精度和小数位数。 允许从 -10^38 +1 到 10^38 –1 的数字。 p 参数表示可以存储的最大总位数(小数点左边和右边的位数)。p 必须是 1 到 38 之间的值。默认值为 18。 s 参数表示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认值为 0 |
5-17 字节 |
数字(p,s) | 固定精度和小数位数。 允许从 -10^38 +1 到 10^38 –1 的数字。 p 参数表示可以存储的最大总位数(小数点左边和右边的位数)。p 必须是 1 到 38 之间的值。默认值为 18。 s 参数表示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认值为 0 |
5-17 字节 |
小钱 | 货币数据从 -214,748.3648 到 214,748.3647 | 4字节 |
钱 | 货币数据从 -922,337,203,685,477.5808 到 922,337,203,685,477.5807 | 8 个字节 |
浮点数(n) | 浮点精度数字数据从 -1.79E + 308 到 1.79E + 308。 n 参数表示字段应包含 4 个字节还是 8 个字节。float(24) 包含 4 个字节字段,float(53) 包含 8 个字节字段。n 的默认值为 53。 |
4 或 8 个字节 |
真实的 | 浮点精度数字数据从 -3.40E + 38 到 3.40E + 38 | 4字节 |
日期和时间数据类型
数据类型 | 描述 | 贮存 |
---|---|---|
约会时间 | 从 1753 年 1 月 1 日到 9999 年 12 月 31 日,精度为 3.33 毫秒 | 8 个字节 |
datetime2 | 从 0001 年 1 月 1 日到 9999 年 12 月 31 日,精度为 100 纳秒 | 6-8字节 |
小日期时间 | 从 1900 年 1 月 1 日到 2079 年 6 月 6 日,精度为 1 分钟 | 4字节 |
日期 | 仅存储日期。从 0001 年 1 月 1 日到 9999 年 12 月 31 日 | 3 个字节 |
时间 | 仅存储精确到 100 纳秒的时间 | 3-5字节 |
日期时间偏移 | 与 datetime2 相同,但增加了时区偏移量 | 8-10字节 |
时间戳 | 存储一个唯一编号,该编号在每次创建或修改行时都会更新。时间戳值基于内部时钟,与实际时间不符。每个表只能有一个时间戳变量 |
其他数据类型
数据类型 | 描述 |
---|---|
sql_variant | 存储最多 8,000 字节的各种数据类型的数据(text、ntext 和 timestamp 除外) |
唯一标识符 | 存储全局唯一标识符 (GUID) |
xml | 存储 XML 格式的数据。最大 2GB |
光标 | 存储对用于数据库操作的游标的引用 |
桌子 | 存储结果集以供稍后处理 |
MS Access 数据类型
数据类型 | 描述 | 贮存 |
---|---|---|
文本 | 用于文本或文本和数字的组合。最多 255 个字符 | |
备忘录 | 备忘录用于存储大量文本。最多可存储 65,536 个字符。 笔记: 您无法对备忘录字段进行排序。但是,它们可以进行搜索 | |
字节 | 允许 0 至 255 之间的整数 | 1 字节 |
整数 | 允许 -32,768 至 32,767 之间的整数 | 2 个字节 |
长的 | 允许 -2,147,483,648 和 2,147,483,647 之间的整数 | 4字节 |
单身的 | 单精度浮点。可处理大多数小数 | 4字节 |
双倍的 | 双精度浮点。可处理大多数小数 | 8 个字节 |
货币 | 用于货币。最多可保存 15 位整数美元,外加 4 位小数。 提示: 您可以选择使用哪个国家的货币 | 8 个字节 |
自动编号 | 自动编号字段会自动为每条记录分配自己的编号,通常从 1 开始 | 4字节 |
约会时间 | 用于日期和时间 | 8 个字节 |
是/否 | 逻辑字段可以显示为是/否、真/假或开/关。在代码中,使用常量 True 和 False(相当于 -1 和 0)。 笔记: 是/否字段不允许为空值 | 1 位 |
Ole 对象 | 可以存储图片、音频、视频或其他 BLOB(二进制大对象) | 最高 1GB |
超级链接 | 包含指向其他文件(包括网页)的链接 | |
查找向导 | 让您键入选项列表,然后可以从下拉列表中选择 | 4字节 |