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 

只表示时间

 

原文地址:https://www.cnblogs.com/Prozhu/p/5540343.html