如何在现有的SQL表中添加一个布尔数据类型的列?
如何在现有的SQL表中添加一个布尔数据类型的列?
我在我的数据库中有一个名为person的表。我想在同一表中添加另一列,它是一个布尔数据类型列。我尝试了以下查询,但是它显示语法错误,错误在于default关键字。我知道这是一个常见的问题,并且有很多答案。我尝试了很多方法,但是无法弄清楚如何使其工作。所以请帮帮我。
我尝试过的查询
ALTER TABLE person ADD COLUMN "AdminApproved" BOOLEAN DEFAULT FALSE; ALTER TABLE person ALTER COLUMN "AdminApproved" SET DEFAULT FALSE;
我也尝试过不使用SET关键字。
如何在现有的SQL表中添加一个布尔数据类型列?
在SQL SERVER中,布尔数据类型是BIT,尽管它允许存储NULL。
解决方法:
ALTER TABLE person ADD [AdminApproved] BIT DEFAULT 'FALSE';
此外,你的查询中还有其他错误:
1. 当你修改一个表以添加列时,不需要在ALTER语句中提及column关键字。
2. 添加默认约束时,不需要使用SET关键字。
3. BIT列的默认值可以是('TRUE'或'1')/('FALSE'或0)。TRUE或FALSE需要作为字符串而不是标识符来指定。
需要注意的是,BIT不是真正的布尔类型。它允许三种状态,0、1和NULL。这是微妙但非常重要的理解。此外,你不能像布尔类型一样编写代码。
下面的代码创建了一个可为空的布尔类型列,这是正确的:
ALTER TABLE [person] ADD [AdminApproved] BIT DEFAULT 0 NOT NULL;
问题的原因是需要向现有表中添加一个布尔类型的列。解决方法是使用SQL的ALTER TABLE语句,并指定新列的名称、数据类型和属性。在这种情况下,我们需要添加一个布尔类型的列,并将其默认值设置为false。
具体的解决方法如下:
1. 使用ALTER TABLE语句来修改现有表。例如,我们可以使用以下语句来修改名为person的表:
ALTER TABLE person
2. 使用ADD关键字来指定我们要添加的新列的名称和数据类型。在这种情况下,我们要添加一个名为AdminApproved的布尔类型的列。我们可以使用BIT数据类型来表示布尔值。
ADD AdminApproved BIT
3. 使用DEFAULT关键字来设置新列的默认值。在这种情况下,我们将默认值设置为0,表示false。
DEFAULT 0
4. 使用NOT NULL关键字来指定新列不允许为空值。
NOT NULL
我们可以使用以下代码将布尔类型的列添加到现有表中:
ALTER TABLE person ADD AdminApproved BIT DEFAULT 0 NOT NULL;