Bit的数据类型
SQL Server中保存数据的一种类型,只能存储true/false,程序读取数据库出来之后的表现形式是true或者false,但是保存在数据库中的结构类型是0或者1,1表示true,0表示false。
SQL Server BIT类型由于只有0和1或者说false和true,这种情况只需要一个Bit位就可以表示了。SQL Server BIT类型占用的空间与BIT类型的列所在表的位置有关,有些情况下BIT占用了一个字节,有些情况下BIT实际占用了几个位(几个BIT类型的列共用一个字节)。
单独的BIT类型的列将占用一个字节。
所谓单独就是指一个BIT类型的列的左边定长列和右边定长列都不是BIT类型的列。例如这样一个表:
CREATE TABLE tt
(
c1 INT PRIMARY KEY,
c2 BIT NOT NULL,
c3 CHAR(2)
NOT NULL
)
SQL Server在存储表中的数据时先是将表中的列按照原有顺序分为定长和变长(变长就是长度不固定的数据类型,如varchar,nvarchar,varbinary等)两组。在数据页中存储数据时先存储所有定长的数据,然后再存储变长的数据。这里由于c2列的左边是int类型,右边是char类型,都是定长的,而且不是SQL Server BIT类型,所以c1和c3之间必须留出一个字节来存储c2,虽然c2只用到了其中的一个位。
多个BIT类型的列之间使用变长数据类型列分开,则去掉变长列,然后看连续的SQL Server BIT类型列的个数,每列占用一个位,如果多余了8列那就再占用更多的字节。
2019-06-26 广告