mysql常见字段数据类型速查
1.串型:可变长串和不可变长串
对于变长串来说,输入什么数据就在数据库里存储什么数据(前提是输入的数据不能大于定义时规定的长度),而对于定长串来说,不足的部分会补上空格。我们可以用trim()去掉这些空格。定长串就像是提前分配好了内存,而不定长串则是动态的分配,定长串的效率要高一些,变长串的要计算串的长度和其他的中间过程,效率会低一些。
char | 1~255个字符的定长串。它的长度必须在创建时指定,如char(50), 否则 MySQL假定为CHAR(1) |
varchar | 最多不超过255字节。如果在创建时指定为 VARCHAR(n),则 可存储0到n个字符 |
text | 最大长度为64KB的变长文本 |
tinytext | 最大长度为255B的变长文本 |
longtext | 与text相同,但最大长度为4GB |
mediumtext | 与text相同,但最大长度为 16 K |
数值型:
你可能会认为电话号码和邮政编码应该存储在数值型字段中, 但是, 这样做却是不可取的。 如果在数值字段中存储邮政编码 01234, 则保存的将是数值1234, 实际上丢失了一位数字。 需要遵守的基本规则是: 如果数值是计算( 求和、 平均 等) 中使用的数值, 则应该使用数值型。 否则应该使用串型。
bit | 1 ~ 64 位。 在 MySQL 5 之前, BIT 在 功能上 等价 于 TINYINT |
bigint | BIGINT 整 数值, 支持 − 9223372036854775808 ~ 9223372036854775807( 如果 是 UNSIGNED, 为 0 ~ 18446744073709551615) 的 数 |
int | INT( 或 INTEGER) 整数值, 支持 − 2147483648 ~ 2147483647( 如果 是 UNSIGNED, 为 0 ~ 4294967295)的数 |
tinyint | TINYINT 整数值, 支持 − 128 ~ 127( 如果 为 UNSIGNED, 为 0 ~ 255) 的 数 |
smallint | SMALLINT 整 数值, 支持 − 32768 ~ 32767( 如果 是 UNSIGNED, 为 0 ~ 65535) 的 数 |
mediumint | MEDIUMINT 整 数值, 支持 − 8388608 ~ 8388607( 如果 是 UNSIGNED, 为 0 ~ 16777215) 的 数 |
boolean | BOOLEAN( 或 BOOL) 布尔 标志, 或者 为 0 或者 为 1, 主要 用于 开/ 关( on/ off) 标志 |
decimal | DECIMAL( 或 DEC)精度可变的浮点 值,decimal(8,2) |
double | DOUBLE双精度浮点值 |
float | 单 精度 浮点 值 |
real | REAL 4 字节 的 浮点 值 |
时间:
date | 日期,表示 1000- 01- 01 ~ 9999- 12- 31 的 日期, 格式 为 YYYY- MM- DD, 实际上是这种类型的字符串 |
time | 时间,格式为h:m:s |
datetime | date和time的组合, "2019-2-1 3:3:1" |
timestamp | 功能和DATETIME 相同( 但 范围 较小) |
year |
用 2 位数字表示, 范围是70( 1970 年) ~ 69( 2069 年), 用 4 位数字表示,范围是 1901 年 ~ 2155 年
|
二进制:
一些音频图片都是二进制的数据流,可以保存在数据库中, 一般是将其保存在磁盘中,数据库中保存文件名称。
blob | 最大长度为64KB |
mediumblob | 最大长度为16MB |
longblob | 最大长度4GB |
tinyblob | 最大长度为255字节 |