如何在 SQL 中向现有表添加布尔数据类型列?
在 SQL Server 中,可以通过保留 BIT 数据类型来创建布尔数据类型。尽管它是数字数据类型,但它只能接受 0 或 1 或 NULL 值。因此,我们可以轻松地将 FALSE 值指定为 0,将 TRUE 值指定为 1。这将为数据类型提供布尔性质。
关于存储,如果表中的位数据少于9列,则以1个字节存储。对于 9 到 16 BIT 列,它们的消耗是 2 个字节,依此类推。在本文中,让我们介绍如何向 SQL SERVER 中的现有表添加布尔值,即 BIT 数据类型。
让我们假设有一个数据库“GEEKSFORGEEKS”可用,并且有一个名为“Authors”的表可用,其中包含以下数据。
询问:
USE GEEKSFORGEEKS
SELECT * FROM Authors;
输出:
让我们将 BIT 数据类型添加到“Authors”表中。 Bit 数据类型有助于表示 True(1) 或 False(0) 的布尔性质,它们是 BIT 数据类型唯一允许的值。
-- Add a column named "isActiveAuthor"
with BIT datatype for "Authors" table
ALTER TABLE Authors ADD isActiveAuthor BIT;
由于表中已经有几行可用,我们只能添加一个新列“isActiveAuthor”作为 NULL 模式。之后,我们可以更新数据。添加列后,
询问:
SELECT * FROM Authors;
输出:
因此,当将 BIT 数据类型列添加到现有表时,其值将填充为“NULL”值。
现在让我们尝试更新列,如果“NumberOfPosts”> 5,则将“isActiveAuthor”设置为值 1 或 0。
-- Let us assume that if "NumberOfPosts"
is more than 5, author is active enough to write articles
-- Hence for this condition , set "isActiveAuthor"
column to have value 1
UPDATE Authors SET isActiveAuthor = 1 WHERE NumberOfPosts > 5;
-- On the ohter hand, if "NumberOfPosts"
is less than and equal to 5,
-- author is not active in the recent days
and hence set "isActiveAuthor" column to have value 0
UPDATE Authors SET isActiveAuthor = 0 WHERE NumberOfPosts <= 5;
SELECT * FROM Authors;
输出:
由于 BIT 列仅支持 0 或 1 作为值,因此我们已按上述方式填充。
让我们尝试更新 0 或 1 以外的值
-- Trying to update the "isActiveAuthor"
with value 2, though errors are not
produced, output is different
UPDATE Authors SET isActiveAuthor =
2 WHERE NumberOfPosts = 5;
SELECT * FROM Authors;
输出:
第 3 行中更新值为 1 的原因:
尽管进行了更新以获得值 2,但由于“isActiveAuthor”列的“BIT”数据类型,它的值仅转换为 1,因为“BIT”数据类型仅支持 0 或 1。即 0 以外的值转换为 1 并在表中更新。
我们可以用不同的例子在这里检查相同的
DECLARE @isValid BIT
-- Initially it will have "NULL" value
SELECT @isValid AS BitType
--Assigning any nonzero value converts it to 1
-- i.e. other than 0, if any
value is provided , it is converted to 1
SET @isValid=9
SELECT @isValid AS BitType
--Assigning any nonzero value converts it to 1
SET @isValid=-100
SELECT @isValid AS BitType
输出:
这证明“BIT”数据类型只接受“Boolean”值,即仅 0 或 1。如果给出了一个非零值,它只会被转换为 1。
好处 :
- 总是如果预期值是 0 或 1 加 NULL,当代码变得合乎逻辑时,将列保持为“BIT”数据类型是一种很好的方法
- 关于存储,使用起来很经济,因为与其他数据类型相比,它需要一点空间。
综合考虑优点,BIT 数据类型是存储布尔数据的正确方法