MySQL中的数据类型
一、整数类型
TinyInt 存储空间8位, 存储范围:-27 ~ 27-1
SmallInt 存储空间16位,存储范围:-215 ~ 215-1
MediumInt 存储空间24位,存储范围:-223 ~ 223-1
Int 存储空间32位,存储范围:-231 ~ 231-1
BigInt 存储空间64位,存储范围:-263 ~ 263-1
MySQL可以为整数类型指定宽度,例如INT(11), 对大多数应用这是没有意义:他不会限制值的合法范围,只是规定了MySQL的一些交互工具用来显示字符的个数。
对于存储和计算来说INT(1)和INT(20)是相同的
二、浮点数类型
Float
Double float和double适合近似计算,不适合精确的浮点型运算
Decimal decimal则合适的精确的浮点型运行,比如存储财务数据
当在数据量较大的时候可以使用 bigint 来代替decimal,将需要存储的货币单位根据小数的位数乘以相应的倍数即可。
三、字符串类型
Char char可以用来存储很短的字符串,或者所有值都接近同一个长度。非常适合用来存储MD5的值或者UUID。
Varchar varchar类型用于存储可变长的字符串,它比char更节省空间,因为它仅使用必要的空间。
Blob
Text blob和text都是为了存储很大的数据而设计的字符串数据类型,分别采用二进制和字符方式存储
四、时间和日期类型
Datetime 这个类型能保存大范围的值,从1001年到9999年,精度为秒。它把日期和时间封装到格式为YYYYMMDDHHMMSS的整数中,与时区无关. 使用8个字节的存储空间。
TimeStamp 这个类型保存了从1970年1月1日午夜以来的秒数,它和UNIX时间戳相同, 但是timestamp只使用了4个字节的存储空间。
TimeStamp与Datetime的主要区别:
1. 两者存储的方式不同
对于TimeStamp,它把客户端插入时间从当前时区转化成UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。
而对于Datetime, 基本上不做任何改变,原样输入原样输出。
2. 两者所能存储的时间范围不一样
Timestamp所能存储的时间范围为:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’。
Datetime所能存储的时间范围为:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。
总结:Timestamp 和 Datetime 除了存储范围和存储方式不一样,没有太大区别。
如果你的应用 是用于不同时区(就是国内和国外同时使用),这时候如果用datetime就会出现各种各样的问题,但是如果使用TimeStamp就不会出现这种时差的问题。
五、位数据类型
Bit 可以使用bit列在一列中存储一个或者多个true/false的值
Set 可以保存多个true/false的值,它在mysql内部是以一系列打包的位的集合来表示的