mysql 的数据类型

分类

类型

M 

UNSIGNED 

ZEROFILL 

范围

说明

 

 

 

 

 

整

型

bit 

yes 

no 

no 

1~64b 

bit(2)表示2个二进制位,取值范围0~3

tinyint 

yes 

yes 

yes 

1B 

标记UNSIGNED时,范围为0~255。当标记ZEROFILL时,同时表示标记了UNSIGNED。当位数不足M时,添加前导0。例如tinyint(5),当值为123时,那么会添加2个前导零,即00123。

smallint 

yes 

yes 

yes 

2B 

同上

mediumint 

yes

yes 

yes 

3B 

同上

int 

yes 

yes 

yes 

4B 

同上

integer 

yes 

yes 

yes 

4B 

与int完全相同

bigint 

yes 

yes 

yes 

8B 

同上

 

 

 

 

 

字

符

串

char 

yes 

no 

no 

255B 

固定长度字符串类型。char(4),当数据长度为2时,会在后面添加2个空格补位。

varchar 

yes 

no 

no 

65535B 

可变长度字符串。varchar(4),当数据长度为2时,不会添加空格补位。占3个字节,其中一个字节用来记录长度。当数据长度大于255时,记录长度就需要2个字节了。

tinytext 

yes 

no 

no 

28--1B

可变长度字符串。

text 

no 

no 

no 

216-1B

同上。

mediumtext 

no 

no 

no 

224-1B

同上。

longtext 

no 

no 

no 

232-1B

同上。

 

 

 

 

二

进

制

binary 

yes 

no 

no 

255B 

固定长度二进制类型。binary(10),当数据为5B时,会添加5B来补位。即长度为10B。

varbinary 

yes  

no 

no 

255B 

可变长度二进制类型。varbinary(10),当数据为5B时,不会补位,长度为6B,其中1B用来记录长度。

tinyblob 

no 

no 

no 

28--1B(256B)

可变长度二进制类型。

blob 

no 

no 

no 

216-1B(64K)

同上

mediumblob 

no 

no 

no 

224-1B(16M)

同上

longblob 

no 

no 

no 

232-1B(4G)

同上

 

 

 

 

浮

点

数

float 

yes 

yes 

yes 

±3.4E38

float(5,2)表示长度为5,其中2位小数。与Java中float精度相同!

double 

yes 

yes 

yes 

±1.79E308

同上。

numeric 

yes  

yes  

yes 

小数点前后有效位之和不大于65位。

使用与float、double相同,但存储方式不同,把9位十进制数压缩成4个字节来存储。相当与把浮点数当成字符来保存,但进行了压缩。比float、double更安全可靠。不会出现精度缺失的问题。

decimal 

yes 

yes 

yes 

65位

在MySQL中decimal与numeric是完全相同的。二者在表示钱时,很有用。

布

尔

类

型

bool 

no 

no 

no 

no 

表示布尔值,但真实上是使用tinyint(1)表示的。当值为0时表示假,当值为非0时表示真。-128也是真。

boolean 

no 

no 

no 

no 

与bool完全相同。

 

日

期
时

间

date 

no 

no 

no 

no 

yyyy-mm-dd 

datetime 

no 

no 

no 

no 

yyyy-mm-dd hh:mm:ss 

timestamp 

yes 

no 

no 

no 

时间戳,用在记录插入与更新自动记录时间。

year 

yes 

no 

no 

no 

year(2),表示两位的年

time 

no 

no 

no 

no 

只表示时间

 

posted @ 2016-05-29 20:43  runningto  阅读(271)  评论(0)    收藏  举报