mysql数据库数据类型汇总
整数类型
整数类型
类型名称 | 说明 | 范围 | 存储需求 |
TINYINT | 很小的整数 | -128〜127 | 1个字节 |
SMALLINT | 小的整数 | -32768〜32767 | 2个字节 |
MEDIUMINT | 中等大小的整数 | -8388608〜8388607 | 3个字节 |
INT (INTEGHR) | 普通大小的整数 | -2147483648〜2147483647 | 4个字节 |
BIGINT | 大整数 | -9223372036854775808〜9223372036854775807 | 8个字节 |
小数类型
小数类型
类型名称 | 说明 | 范围 | 存储需求 |
FLOAT | 单精度浮点数 |
| 4 个字节 |
DOUBLE | 双精度浮点数 |
| 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 |