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(size, d) | 浮点数。 总数位数以大小指定。 小数点后的位数在d参数中指定。 MySQL 8.0.17中不推荐使用此语法,将来的MySQL版本将删除它 |
FLOAT(p) | 浮点数。 MySQL使用p值来确定是否对结果数据类型使用FLOAT或DOUBLE。 如果p为0到24,则数据类型变为FLOAT()。 如果p是25到53,则数据类型变为DOUBLE() |
DOUBLE(size, d) | 正常大小的浮点数。 总数位数以大小指定。 小数点后的位数在d参数中指定 |
DOUBLE PRECISION(size, d) | |
DECIMAL(size, d) | 一个确切的定点数。 总数位数以大小指定。 小数点后的位数在d参数中指定。 大小的最大数量为65. d的最大数量为30. size的默认值为10.d的默认值为0。 |
DEC(size, d) | 等同 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 字节 |