MySQL数据类型--二进制类型

               
二进制类型是在数据库中存储二进制数据的数据类型。二进制类型包括binary,varbinary,bit,tinyblob,blob,mediumblob,longblob。这篇博客这里整理一下二进制类型的特点和差异。


  • binary类型和varbinary类型

binary类型和varbinary类型都是在创建表时指定了最大长度,其基本形式如下:字符串类型(M),其中,‘字符串类型’参数指定了数据类型为binary类型还是varbinary类型,M参数指定了该二进制数的最大字节长度为M。这与char类型和varchar类型相似。举个例子,binary(10)就是指数据类型为binary类型,其最大长度为10。


binary类型的长度是固定的,在创建表时就指定了。不足最大长度的空间由‘\0’补全。举个例子,binary(50)就是指定binary类型的长度为50。

varbinary类型的长度是可变的,在创建表时指定了最大长度。指定好了varbinary类型的最大值以后,其长度可以在0到最大长度之间。举个例子,varbinary(50)的最大字节长度是50,但是,不是每条记录的字节长度都是50。在这个最大值范围内,

使用多少分配多少。varbinary类型实际占用的空间为实际长度加一。这样,可以有效的节约系统的空间。


  • bit类型

bit类型也是在创建表时指定了最大长度,其基本形式如下:bit(M),其中,‘M’指定了该二进制数的最大字节长度为M,M的最大值为64。举个例子,bit(4)就是数据类型为bit类型,长度为4。若字段的类型bit(4),存储的数据是从0~~15。因为,变成二

进制以后,15的值为1111,长度为4。如果插入的值为16,其二进制数为10000,长度为5,超过了最大长度,因此,大于等于16的数是不能插入到bit(4)类型的字段中的。在查询bit类型的数据时,要用bin(字段名+0)来将值转换为二进制显示。我们现

在来实际操作下数据库中这种类型:

建表语句如下:
CREATE TABLE `linkinframe`.`test``id` INT NOT NULL`a` BIT(4) NULL,  PRIMARY KEY (`id`));
现在我们往表中插入几条数据:
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (1,0);INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (2,1000);INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (3,1110);INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (4,10000);INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (5,0);INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (6,8);INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (7,14);INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (8,15);
执行如下查询:
SELECT * FROM linkinframe.test;

数据库显示如下:


换个查询:
SELECT BIN(a+0) FROM linkinframe.test;
数据库显示如下:




  • blob类型
blob类型是一种特殊的二进制类型。blob可以用来保存数据量很大的二进制数据,如图片等。blob类型包括tinyblob,blob,mediumblob,longblob。这几种blob类型最大的区别就是能够保存的最大长度不同。longblob的长度最大,tinyblob的长度最小。 blob类型与text类型很类似,不同点在于blob类型用于存储二进制数据,blob类型数据是根据其二进制编码进行比较和排序的,而text类型是文本模式进行比较和排序的。


  • 关于几种二进制类型的总结
1,blob类型主要用来存储图片,PDF文档等二进制文件,通常情况下,可以将图片,PDF文档都可以存储在文件系统中,然后在数据库中存储这些文件的路径,这种方式存储比直接存储在数据库中简单,但是访问速度比存储在数据库中慢。
2,实际编码中,使用二进制类型并不多,至少我从来没有使用过。这个就当了解一下好了。

           

猜你喜欢

转载自blog.csdn.net/qq_44947859/article/details/89431791