MySql数据类型
1. Number
整形
常用类型:INT、SMALLINT、MEDIUMINT、BIGINT
Type | Storage | Minimum Value | Maximum Value |
---|---|---|---|
Bytes | (Signed/Unsigned) | (Signed/Unsigned) | |
TINYINT | 1 | -128 | 127 |
0 | 255 | ||
SMALLINT | 2 | -32768 | 32767 |
0 | 65535 | ||
MEDIUMINT | 3 | -8388608 | 8388607 |
0 | 16777215 | ||
INT | 4 | -2147483648 | 2147483647 |
0 | 4294967295 | ||
BIGINT | 8 | -9223372036854775808 | 9223372036854775807 |
0 | 18446744073709551615 |
问题:int(10)和int(20)的区别
- 在存储空间和存储范围是没有任何的区别。
- 只设置zerofill属性后,补足0的情况下才有区别。
浮点型
常用类型:FLOAT( M , D )、DOUBLE( M , D )
属性 | 存储空间 | 精度 | 精确性 |
---|---|---|---|
Float | 4字节 | 单精度 | 非精确 |
Double | 8字节 | 双精度 | 比Float精度高 |
定点数
DECIMAL — 更精确的数字类型
1. 高精度的数据类型,常用来存储交易相关数据。
2. DECIMAL( M , N ) ,M代表总精度,N代表小数点右侧的位数(标度)。
3. 1 < M < 254 , 0 < N < 60。
4. 存储空间变长。
经验:
1. 存储性别、省份、类型等分类信息时选择用Tinyint或者Enum。
2. Bigint存储空间更大,Int和Bigint通常之间选用Bigint。
3. 交易等高精度数据时选择使用Decimal。
2. char 、varchar 、text
char 与 varchar
- char与varchar的存储单位都是字符
字符与字节的区别
编码\输入字符串 字符 varchar gbk(双字节) varchar(2)/4字节 varchar(7)/7字节 utf8(三字节) varchar(2)/6字节 varchar(7)/7字节 utf8mb4(四字节) varchar(2)/8字节 varchar(7)/7字节 char存储定长,容易造成空间浪费
- varchar存储变长,节省存储空间
text与char、varchar的区别
- char与varchar存储单位为字符
- text存储单位为字节,总大小为65535字节,约为64KB
- char数据类型最大为255字符
- varchar数据类型为变长存储,可以存储超过255字符
- text在数据库内部大多存储格式为溢出页,效率不如char
3. 二进制文件
- BLOG
BINARY
存储格式也是为溢出页,通常非常不推荐用数据库存储二进制文件
4. 日期
- DATE
- TIME
- DATETIME
- TIMESTAMP
- BIGINT
存储空间上的区别
- DATE :3字节 如: 2015-05-01
- TIME :3字节 如:11:12:00
- TIMESTAMP:4字节 如:2015-05-01 11:12:00
- DATETIME:8字节 如:2015-05=01 11:12:00
存储精度的区别
- DATE精确到年月日
- TIME精确到时分秒
- TIMESTAMP、DATETIME包含上述两者
存储范围
- TIMESTAMP : 1970-01-01 00:00:01 to 2038-01-19 03:14:07
- DATETIME : 1000-01-01 00:00:01 to 9999-12-31 23:59:59
MySql5.6.4版本之后,TIMESTAMP、DATETIME支持到微秒
字段类型与时区的关联关系
- TIMESTAMP会根据系统时区进行转换,DATETIME不会
BIGINT存储时间类型
存储时间戳
时间 —>时间戳:unix_timestamp()
时间戳 —> 时间 : from_unixtime()