社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

MySQL的数据类型(4):二进制类型

纤指弄 • 3 年前 • 188 次点击  

3.2.5 二进制数据类型

MySQL支持的二进制数据类型主要有:BIT(M)、BINARY(M)、VARBINARY(M)、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB等7种,它们主要用来存储由“0”、“1”组成的字符串,跟字符串类型数据一样,不同的二进制数据类型允许的最多字符个数不一样、占用存储空间也不一样,详见下表:


字符串类型取值范围占用字节数说明

BIT(n) 0-64最多8字节n为二进制位

BINARY(M) 0-255MM为最多允许的字节数,取值范围为0-255之间的整数

VARBINARY(M) 0-65535(216-1)L+1M为最多允许的字节数;

L为实际保存数据中字节的个数;

BLOB

TINYBLOB0-255

MEDIUMBLOB16777215(224-1)

LONGBLOB4294967295(232-1)

说明:

1、上面几种二进制数据类型中,BIT(n)类型以二进制位为存储单位,其余均以二进制字节为存储单位,这跟前面的字符串类型数据以字符为单位是有明显不同的。

2、BINARY(M)跟CHAR(M)类似,为定长类型,VARBINARY(M)与VARCHAR(M)、BLOB与TEXT、、TINYBLOB与TINYTEXT、MEDIUMBLOB与MEDIUMTEXT、LONGBLOB与LONGTEXT也对应类似,为变长类型。定长 类型二进制数据 和变长类型二进制数据的区别主要也有以下两点:

1). 定长 类型二进制数据 不管其中字节数有没有达到它允许的M个字节都要占用M个字节的空间;变长类型二进制数据,其所需存储空间主要取决于该串中实际包含的字节数(此字节数在上表中用L来表示),再附加一个额外的结束字节。

2). 定长 类型二进制数据 中保存字节超过其允许的M个时会对所保存的数据进行截短处理,而不足M个时会用“\0”进行补足;变长类型二进制数据保存字节超过其允许的M个时同样会对所保存的字符串进行截短处理,而不足M个时则不会用“\0”进行补足。

2、从上表中我们也可看出:BINARY(M)允许的字节数少于VARBINARY(M)允许的字节数,TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB允许的字 数也是逐渐增多的,并且BINARY(M)和TINYBLOB允许的字节数、VARBINARY(M)和BLOB允许的字节数对应相等。

二进制数据类型可用来表示长的字符串(二进制形式表示)、图片、音频、视频等,跟字符串类型一样,在必须使用时,二进制数据也应在满足使用要求(允许的最多字节数)的前提下尽量使用“短”的数据类型,以减少存储空间的占用、提高查询运算的效率。在实际中,更多的对二进制数据的使用是将图片、音频、视频等存入文件中,而不是将其存入数据表中,毕竟处理二进制数据不是数据库系统的强项。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/105685
 
188 次点击