一、数值类型

 

 

类型

说明

例子

tinyint

存储范围:-128至127或0至255

tinyint(1)

smallint

存储范围:-32768至32767或0至65535

smallint(3)

mediumint

存储范围:- 8388608至8388607或0至16777215

mediumint(5)

int

存储范围:- 2147483648至2147483647或0至4294967295

int(10)

bigint

存储范围:- 9223372036854775808至9223372036854775807或0至18446744073709551615

bigint(10)

(M,D)

最小非零值:±1.175494351E – 38,同double一样适用于精度要求高的场合

float(3,1)

(M,D)

最小非零值:±2.2250738585072014E - 308

double(10,5)

(M,D)

取值范围可变,以来括号内的显示尺寸和小数点位数而定,适用于对精度要求不高但准确度要求非常高的场合

decimal(10,2)

 


二、字符串(文本)类型



类型

说明

例子

char

支持固定长度的字符串, 最大长度是 255 个字符

char(100)

varchar

支持可变长度的字符串, 最大长度是 65535 个字符

varchar(1000)

tinytext

支持可变长度的字符串,最大长度是 255 个字符

tinytext

text

blob

支持可变长度的字符串,最大长度是 65535 个字符

text

mediumtext

mediumblob

支持可变长度的字符串,最大长度是 16777215 个字符

mediumtext

longtext

longblob

支持可变长度的字符串,最大长度是 4294967295 个字符

longtext

enum

枚举类型,可存储最多65535 个成员,常用于取值是有限而且固定的场合

enmu("男","女")

set

集合类型,可存储最多64个成员

set("value1","value2", ...)


 

三、时间日期类型


 

类型

说明

例子

date

YYYY-MM-DD 格式表示的日期值

date

time

hh:mm:ss 格式表示的时间值

time

datetime

YYYY-MM-DD hh:mm:ss 格式表示的日期和时间值

datetime

timestamp

YYYYMMDDhhmmss 格式表示的时间戳值

timestamp

year

YYYY 格式表示的年份值

year


1、DATE、TIME、DATATIME数据列类型

(1)、DATE、TIME和DATATIME类型分别存放日期值、时间值、日期和时间值的组合。它们的格式分别是“CCYY-MM-DD”、“hh:mm:ss”、“CCYY-MM-DD hh:mm:ss”。

(2)、DATATIME里的时间值和TIME值是有区别的,DATATIME里的时间值代表的是几点几分,TIME值代表的是所花费的时间。当向TIME数据列插值时,需用时间的完整写法,如12分30秒要写成“00:12:30”。


2、TIMESTAMP数据列类型

(1)、TIMESTAMP数据列的格式是CCYYMMDDhhmmss,取值范围从19700101000000开始,即1970年1月1号,最大到2037年。它的特点是能把数据行的创建或修改时间记录下来:

(2)、如果把一个NULL值插入TIMESTAMP列,这个数据列就将自动取值为当前的日期和时间。

(3)、在创建和修改数据行时,如果没有明确对TIMESTAMP数据列进行赋值,则它就会自动取值为当前的日期和时间。如果行中有多个TIMESTAMP列,只有第一个会自动取值。

(4)、如果对TIMESTAMP设置一个确定的日期和时间值,则会使TIMESTAMP的自动取值功能失效。

(5)、TIMESTAMP默认的列宽是14,可指定列宽,以改变显示效果。但不论你指定的列宽如何,MySQL都是以4字节来存储TIMESTAMP值,也总是以14位精度来计算。

(6)、如果需要把创建时间和最近一次修改时间同时记录下来,可以用两个时间戳来记录,一个记录创建时间,一个记录修改时间。不过需记住两件事,一是要把记录修改时间的TIMESTAMP数据列放在最前面,这样才会自动取值;二是创建一条新记录时,要用now()函数来初始化创建时间TIMESTAMP数据列,这样,该TIMESTAMP数据列就不会再变化。