PostgreSQL是一个开源的基于面向对象的数据库系统。它是一个强大的数据库系统,同时支持关系型和非关系型数据类型。布尔数据类型是一种常用的数据类型,可以接受三种类型的值。真,假,和NULL。这种数据类型的简称是bool,用一个字节来存储布尔数据。布尔数据的真值也可以用 'yes'、'y'、'true'和1表示,布尔数据的假值也可以用 'no'、'n'、'false'和0表示 。
前提条件
在执行本教程中的SQL语句之前,你必须在Linux操作系统上安装最新版本的PostgreSQL包。运行下面的命令来安装和启动PostgreSQL。
$sudo apt-get \-y installpostgresql postgresql-contrib
$sudosystemctl start postgresql.service
运行下面的命令,以root权限登录到PostgreSQL。
$ sudo\-upostgres psql
在PostgreSQL的表中使用布尔数据类型。
在创建任何具有布尔数据类型的表之前,你必须先创建一个PostgreSQL数据库。因此,运行下面的命令来创建一个名为 "testdb"的数据库。
#CREATE DATABASEtestdb;
创建数据库后会出现以下输出。

示例-1:使用布尔数据类型创建一个表
在当前数据库中创建一个名为'technology'的表,有三个字段。第一个字段名是tech_id,数据类型是整数,它是表的主键。第二个字段名是name,数据类型是字符。第三个字段名是available,数据类型是布尔型。
#CREATE TABLEtechnicians(
tech\_idINT NOT NULL PRIMARY KEY,
nameCHARACTER(10) NOT NULL,
availableBOOLEAN NOT NULL
) ;
如果表被成功创建,将出现以下输出。

运行下面的命令,向技术人员表中插入一条记录,其中布尔值使用的是'true'。
#INSERT INTOtechniciansVALUES (1, 'Zafar Ali', 'true');
执行上述插入查询后,将出现以下输出。

运行下面的INSERT命令,在技术人员表中插入一条记录,其中布尔值使用的是0。在PostgreSQL中,0是不可以作为布尔值的。因此,会出现一个错误信息。
#INSERT INTOtechniciansVALUES (2, 'Kabir Hossain', 0);
执行上述插入查询后,将出现以下输出。输出显示了一条错误信息,表明 0的类型 是整数,而不是布尔值。

运行下面的INSERT命令,在技术人员表中插入一条记录,其中布尔值使用的是'false'。
#INSERT INTOtechniciansVALUES (3, 'Abir Hasan', 'false')。
执行上述插入查询后,将出现以下输出。

运行下面的INSERT命令,在技术人员表中插入一条记录,其中 't'是用来表示布尔值的。
#INSERT INTOtechniciansVALUES (5, 'Rebeka Ali', 't');
执行上述插入查询后,将出现以下输出。

例子-2:使用Bool数据类型创建一个表
在当前数据库中创建一个名为'products'的表,有三个字段。第一个字段名是id,数据类型是整数,它是表的主键。第二个字段名是name,数据类型是字符。第三个字段名是physical_product,数据类型是BOOL,该字段的默认值是'true'。
#CREATE TABLEproducts(
idINT NOT NULL PRIMARY KEY,
nameCHARACTER(10) NOT NULL,
physical\_product BOOLNOT NULL DEFAULT 'true'
) ;
如果表被成功创建,将出现以下输出。

运行下面的命令,向产品表中插入一条记录,其中'f'被用于BOOL值。
#INSERT INTOproductsVALUES (1, 'Antivirus', 'f')
运行下面的INSERT命令,向产品表中插入一条记录,其中没有提供BOOL数据的值。这里,将插入该字段的默认值。
#INSERT INTOproductsVALUES (2, 'Monitor');
执行上述两个插入查询后,将出现以下输出。

检查各表的内容
运行下面的SELECT选择查询,从技术人员表中检索出所有记录。
#SELECT \* FROMtechnicians;
运行下面的SELECT选择查询,从技术人员表中检索出所有可用字段值为'false'的记录。
#SELECT \* FROMtechniciansWHEREavailable\= 'false';
运行下面的SELECT选择查询,从技术人员表中检索出所有可用字段的值为 't'或'true'的记录。
#SELECT \* FROMtechniciansWHEREavailable\= 't' ORavailable\= 'true';
执行上述三个 "选择"查询后,将出现以下输出。第一个查询的输出显示了该表的所有记录。第二个查询的输出显示了表中那些可用字段的值为"f "的记录。第三个查询的输出显示的是表中可用字段的值为't'的记录。

运行下面的选择查询来检索产品表中的所有记录。
#SELECT * FROMproducts;
运行下面的选择查询来检索表中physical_product字段的值为'True'的所有记录。
#SELECT * FROMproductsWHEREphysical_product= 'True';
执行上述两个 "选择"查询后,将出现以下输出。第一个查询的输出显示了表的所有记录。第二个查询的输出显示了表中那些可用字段的值为't'的记录。

总结
在本教程中,通过使用多个例子说明了布尔或BOOL数据类型在PostgreSQL表中的不同用途,以阐明在PostgreSQL数据库表中使用布尔数据类型的目的。