mysql数据库数据类型汇总

mysql数据库数据类型汇总

整数类型

整数类型
类型名称 说明 范围 存储需求
TINYINT 很小的整数 -128〜127 1个字节
SMALLINT 小的整数 -32768〜32767 2个字节
MEDIUMINT 中等大小的整数 -8388608〜8388607 3个字节
INT (INTEGHR) 普通大小的整数 -2147483648〜2147483647 4个字节
BIGINT 大整数 -9223372036854775808〜9223372036854775807 8个字节

 

 

 

 

 

 

 

 

 

 

小数类型

小数类型
类型名称 说明 范围 存储需求
FLOAT 单精度浮点数
  • 有符号的取值范围:-3.402823466E+38~-1.175494351E-38。
  • 无符号的取值范围:0 和 -1.175494351E-38~-3.402823466E+38。
4 个字节
DOUBLE 双精度浮点数
  • 有符号的取值范围:-1.7976931348623157E+308~-2.2250738585072014E-308。
  • 无符号的取值范围:0 和 -2.2250738585072014E-308~-1.7976931348623157E+308。
8 个字节
DECIMAL (M, D),DEC 压缩的“严格”定点数 DECIMAL 如果不指定精度,默认为(10,0)。 M+2 个字节

 

 

 

 

 

 

 

 

 

 

 

 

 

 

浮点数在长度一定时可以比定点数表示更大的范围,但有可能引起精度的问题

日期和时间类型

日期类型
类型名称 日期格式 日期范围 存储需求
YEAR YYYY 1901 ~ 2155 1 个字节
TIME HH:MM:SS -838:59:59 ~ 838:59:59 3 个字节
DATE YYYY-MM-DD 1000-01-01 ~ 9999-12-3 3 个字节
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 8 个字节
TIMESTAMP YYYY-MM-DD HH:MM:SS 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC 4 个字节

 

 

 

 

 

 

 

 

 

 

YEAR类型

是一个单字节类型,用于表示年,在存储时只需要一个字节。

TIME类型

用于只需要时间信息的值,在存储时需要3个字节。格式为HH:MM:SS。HH表示小时,MM表示分钟,SS表示秒。

 

TIME 类型的取值范围为 -838:59:59~838:59:59,小时部分如此大的原因是 TIME 类型不仅可以用于表示一天的时间(必须小于 24 小时),还可能是某个事件过去的时间或两个事件之间的时间间隔(可大于 24 小时,或者甚至为负)。

可以使用各种格式指定 TIME 值,如下所示。

  • 'D HH:MM:SS' 格式的字符串。还可以使用这些“非严格”的语法:'HH:MM:SS'、'HH:MM'、'D HH' 或 'SS'。这里的 D 表示日,可以取 0~34 之间的值。在插入数据库时,D 被转换为小时保存,格式为 “D*24+HH”。
  • 'HHMMSS' 格式、没有间隔符的字符串或者 HHMMSS 格式的数值,假定是有意义的时间。例如,'101112' 被理解为'10:11:12',但是 '106112' 是不合法的(它有一个没有意义的分钟部分),在存储时将变为 00:00:00。
  • 转自C语言中文网

DATE类型

用于仅需要日期值时,没有时间部分,在存储时需要3个字节。日期格式为 'YYYY-MM-DD',其中 YYYY 表示年,MM 表示月,DD 表示日。

提示:MySQL 允许“不严格”语法:任何标点符号都可以用作日期部分之间的间隔符。例如,'98-11-31'、'98.11.31'、'98/11/31'和'98@11@31' 是等价的,这些值也可以正确地插入数据库。

DATETIME类型

用于需要同时包含日期和时间信息的值,在存储需要8个字节,日期格式为 'YYYY-MM-DD HH:MM:SS',其中 YYYY 表示年,MM 表示月,DD 表示日,HH 表示小时,MM 表示分钟,SS 表示秒。

TIMESTAMP类型

显示格式与DATETIME相同,显示宽度固定在 19 个字符,日期格式为 YYYY-MM-DD HH:MM:SS,在存储时需要 4 个字节。

与DATETIME的区别

DATETIME的取值范围更大,存储所需字节更小,但是TIMESTAMP可以根据地区不同自动转换时区。

字符串类型

类型名称
类型名称 说明 存储需求
CHAR(M) 固定长度非二进制字符串 M 字节,1<=M<=255
VARCHAR(M) 变长非二进制字符串 L+1字节,在此,L< = M和 1<=M<=255
TINYTEXT 非常小的非二进制字符串 L+1字节,在此,L<2^8
TEXT 小的非二进制字符串 L+2字节,在此,L<2^16
MEDIUMTEXT 中等大小的非二进制字符串 L+3字节,在此,L<2^24
LONGTEXT 大的非二进制字符串 L+4字节,在此,L<2^32
ENUM 枚举类型,只能有一个枚举字符串值 1或2个字节,取决于枚举值的数目 (最大值为65535)
SET 一个设置,字符串对象可以有零个或 多个SET成员 1、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员

 

 

 

 

 

 

 

 

 

 

 

 

varchar或text是变长字段,在存储时会在存储需要的字符后添加一个字节记录字符长度

ENUM和SET的区别:ENUM只能从定义的列值中选择一个值,而set可以选择多个组合插入数据表

二进制类型

-

二进制数据
类型名称 说明 存储需求
BIT(M) 位字段类型 大约 (M+7)/8 字节
BINARY(M) 固定长度二进制字符串 M 字节
VARBINARY (M) 可变长度二进制字符串 M+1 字节
TINYBLOB (M) 非常小的BLOB L+1 字节,在此,L<2^8
BLOB (M) 小 BLOB L+2 字节,在此,L<2^16
MEDIUMBLOB (M) 中等大小的BLOB L+3 字节,在此,L<2^24
LONGBLOB (M) 非常大的BLOB L+4 字节,在此,L<2^32

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(mysql,后端,数据库,mysql)