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 字节 |