MySQL数据类型--⼆进制类型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 * st;
数据库显⽰如下:
换个查询:
SELECT BIN(a+0) st;
数据库显⽰如下:
blob类型
blob类型是⼀种特殊的⼆进制类型。blob可以⽤来保存数据量很⼤的⼆进制数据,如图⽚等。blob类型
包括
tinyblob,blob,mediumblob,longblob。这⼏种blob类型最⼤的区别就是能够保存的最⼤长度不同。longblob的长度最⼤,tinyblob 的长度最⼩。 blob类型与text类型很类似,不同点在于blob类型⽤于存储⼆进制数据,blob类型数据是根据其⼆进制编码进⾏⽐较和排序的,⽽text类型是⽂本模式进⾏⽐较和排序的。
关于⼏种⼆进制类型的总结
1,blob类型主要⽤来存储图⽚,PDF⽂档等⼆进制⽂件,通常情况下,可以将图⽚,PDF⽂档都可以存储在⽂件系统中,然后在数据库中存储这些⽂件的路径,这种⽅式存储⽐直接存储在数据库中简单,但是访问速度⽐存储在数据库中慢。
2,实际编码中,使⽤⼆进制类型并不多,⾄少我从来没有使⽤过。这个就当了解⼀下好了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论