MySQL数据类型bit:使用技巧.(mysql数据类型bit)
MySQL数据类型bit,是MySQL提供的特殊数据类型之一。它可以存储只有2种状态值的一个二进制值:0和1,也可以表示True和False的布尔值,bit数据类型的长度可变,长度介于1到64位之间,一个位(bit)代表一个数据字节,也就是8位。这种数据类型十分适合在mysql数据库的表中标记某一项的值,经常被用于关系型数据库中的ORM类库。
由于bit数据类型能存储为只有2种状态值,因此它在存储Boolean值得时候将占用极少的空间,只占用一位。而使用TINYINT类型则会占据1个字节的空间,尽管这个字节能存储几个bit,但是最小占用的空间还是1个字节,由此可以看出bit数据类型相对于TINYINT类型来说,而言空间节省了一倍。
此外,使用bit类型还可以做一些有趣的操作,比如允许许多bit表示一个值,也就是可以给多个bit设置不同的状态值。
例如,下面的代码可以提取一个字段中所有的None位:
Query Select * from Table where bit_field & power(2, none_bit_index) Unknown
除了上面的提取多个位之外,bit类型还可以用于组合多个值,而不必设置多个字段,以节省空间。
有如此多的使用技巧,bit类型的应用正在快速发展,此类型可以替代传统的多字段命名规范方式,即:is_XXX,组合成一个字段命名。比如,可以用一个字段来表示执行的权限:
CREATE TABLE t_permission(user_id int, permission bit(8));
在permission字段里可以代表每一位的权限:
permission(7) — 总的开关
permission(6) — 读取权限
permission(5) — 写入权限
permission(4) — 更新权限
…
通过这样的组合,将会节约位置,并且也可以避免出错。
总而言之,MySQL数据类型bit数据类型非常适合上面提到的这些场景,它会节省大量的空间,降低数据库中字段数量,这也是MySQL数据类型bit非常受欢迎的原因。