MySQL列部类

MySQL列类型

MySQL Column Type

概述

mysql列类型共三大类:数值类型、字符类型、日期和时间类型。为优化存储一般都采用最精确的类型,varchar虽方便但仍推荐设计时考虑该列的范围,为其选择最佳的类型。

 

 数值类型

       java中数值类型有byte、shot、int、long、float、double。于此即为相似MySQL也提供了一系列严格数值类型,近似数值类型(所谓近似就是带小数的数值,计算机二进制不能严格表示)。TINYINT范围与byte一样,大家可以类比下java数据类型。于此同时FLOATREALDOUBLE PRECISION DECIMAL等,其实最常用的就是int和DECIMAL,他们基本满足日常应用,DECIMAL提供了确切的精度,DECIMAL(3,2) 分别表示小数点前几位、后面几位。

 

 

类型 字节数 最小值 最大值 (Bytes) (有符号/无符号) 有符号/无符号)
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


字符类型

字符类型共有八种:char、varchar、binary char、binary varchar、blob、text、enum、set 。其中最常用的有:varchar、char。下面比较下最常用的他们之间有何不同。

 

char表示定长字符串,最大长度为255。char(8)占用8个字符,如果我们插入'niumd',数据库存储:'niumd   '占用8个字符,插入'niumaodong',则会被截断为'niumaodo'。

 

varchar表示变长字符串,最大长度65535。varchar(8)如果插入'niumd',数据库存储'niumd'占用五个字符,同样如果超长插入'niumaodong',则会被截断为'niumaodo'。

 

       blob表示二进制字符串,例如我们将图片保存到数据库,选择此类型,读取程序读取图片二进制字节,存入数据库,text可以视为很长的varchar,enmu则表示在固定的该列必须选择列表值,例如性别列,enmu列值选择:‘女’、‘男’。

 

 

日期和时间类型

       所谓日志无非就是年月日时分秒而已,MySQL支持year、date、time、datetime、timestamp类型。

 

year类型:

4位字符、数字年范围1901——2155 ;

2为字符、数字年范围0——99、1——99;

注意:二位字符或者数字以69为临界点,yy<=69,表示20yy,例如1代表2001,而yy>70表示1970.

 

date类型:

表示YYYY-MM-DD格式时间,例如:2011-06-01(儿童节快乐)。

 

time类型:

格式非严格,即HH MM SS代表时分秒,HH MM SS之间间隔可以为- 、:等分割符。建议采用:HH:MM :SS,比较符合习惯。


datetime类型:

格式非严格,任何标点均可表示年月日时分秒之间的分割,例如:yyyy-mm-dd hh:mm:ss,yyyy.mm.dd hh+mm+ss,……。


timestamp类型:

同datetime,格式非严格,但其属性不固定,取决于服务器版本和运行模式。

 

备注:时间不合法,例如:2011-06-01 23:61:24,将视为无效转为0000-00-00 00:00:00.