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()