二、几种数据类型mysql
1)整数类型sql
可使用的整数类型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT,分别使用8,16,24,32,64位存储空间,存储值的范围为-2(N-1)到 2(N-1)-1。对于整数能够选择unsigned属性,表示不容许为负数这可让正数上限提升一倍。缓存
对于INT类型若是不指定宽度,Mysql会默认指定11位,可是实际上是不会限制值的合法范围,只是规定了Mysql的一些交互工具用来显示字符的个数,对于存储来讲INT(1)和 INT(20) 是相同的。工具
以下图例子中,对于int(1), int(10), int(32)设置的数据表字段宽度并不影响int值的存入。性能
2)实数类型ui
FLOAT和DOUBLE类型支持使用标准的浮点运算进行近似计算。DECIMAL类型用于存储精确的小数,在Mysql5.0和更高的版本中,DECIMAL类型支持精确计算。spa
浮点类型在存储一样范围的值时,一般比DECIMAL使用更少的空间。FLOAT使用4个字节存储,DOUBLE占用8个字节,和int类型同样数据类型才能以为存储数据上限,字段位数决定不了。设计
对于DECIMAL通常只有在存储财务数据才会使用,在数据量比较大的状况下也能够考虑使用BIGINT代替DECIMAL,将须要存储的货币单位根据小数位数乘以相应的倍数便可。指针
3)字符串类型blog
VARCHAR:用于存储可变长字符串,比定长类型更节省空间,仅须要必要的空间,可是须要一个或者两个额外字节记录字符串长度,若是最大长度小于或者等于255字节,则使用1个字节表示,不然用2个字节。对于字符串列的最大长度比平均长度大不少;列更新不多;使用了UTF-8复杂的字符集,VARCHAR会比较合适
CHAR:定长的类型,Mysql根据定义的字符串长度分配足够的空间,比较适合存储很短的字符串,或者全部值都接近同一长度的存储要求。
BLOB和TEXT类型:两种都是为了存储很大的数据而设计的字符串数据类型,分别采用二进制和字符方式存储。当BLOB和TEXT值太大时,InnoDB会使用专门的“外部”存储区域来进行存储,这时在数据表中存储的实际时一个指针指向外部的实际存储区域。
4)时间类型
DATETIME:可以保存1001年到9999年,精度为秒,把日期和时间封装到格式为YYYYMMDDHHMMSS的整数中,与时区无关。使用8个字节的存储空间。
TIMESTAMP:保存从1970到2038年,使用4个字节存储,与时区有关。因此若是在多个时区存储访问数据,DATETIME和TIMESTAMP的行为会很不同。一般尽可能使用TIMESTAMP,由于比DATETIME空间效率更高
5)位数据类型
BIT:在Mysql5.0之前,BIT是TINYINT的同义词,但在后续的版本中是彻底不一样的数据类型。Mysql把BIT看成字符串类型而不是数字类型,当检索BIT(1)值时结果时一个包含二进制0或1的字符串,而不是ASCII码的0和1。
SET:若是须要保存不少true/false值,能够考虑合并这些列到一个SET数据类型,它在Mysql内部是以一系列打包的位集合来表示。