八月 23, 2023
摘要:在本教程中,您将了解 PostgreSQL 布尔数据类型以及如何在设计数据库表时使用它。
目录
PostgreSQL 布尔类型简介
PostgreSQL 支持单一的布尔数据类型:BOOLEAN
,它可以具有三个值:true
、false
和NULL
。
PostgreSQL 使用一个字节在数据库中存储布尔值。BOOLEAN
可以简写为BOOL
。
在标准 SQL 中,布尔值可以是TRUE
、FALSE
或NULL
。然而,PostgreSQL 在处理TRUE
和FALSE
值时相当灵活。
下表显示了 PostgreSQL 中TRUE
和FALSE
的有效文字值。
True | False |
---|---|
true | false |
‘t’ | ‘f ‘ |
‘true’ | ‘false’ |
‘y’ | ‘n’ |
‘yes’ | ‘no’ |
‘1’ | ‘0’ |
请注意,前导或尾随空格并不重要,并且除true
和false
之外的所有常量值都必须用单引号引起来。
PostgreSQL 布尔型示例
让我们看一下使用 PostgreSQL 布尔数据类型的一些示例。
首先,创建一个新表stock_availability
来记录哪些产品可用。
CREATE TABLE stock_availability (
product_id INT PRIMARY KEY,
available BOOLEAN NOT NULL
);
其次,插入一些示例数据到stock_availability
表中。我们使用各种文字值作为布尔值。
INSERT INTO stock_availability (product_id, available)
VALUES
(100, TRUE),
(200, FALSE),
(300, 't'),
(400, '1'),
(500, 'y'),
(600, 'yes'),
(700, 'no'),
(800, '0');
第三步,使用以下语句检查产品的可用性:
SELECT *
FROM stock_availability
WHERE available = 'yes';
product_id | available
------------+-----------
100 | t
300 | t
400 | t
500 | t
600 | t
(5 rows)
您可以使用布尔列而不使用任何运算符来暗示真值。例如,以下查询返回所有可用的产品:
SELECT *
FROM stock_availability
WHERE available;
同样,如果要查找false
值,可以将布尔列的值与任何有效的布尔常量进行比较。
以下查询返回不可用的产品。
SELECT *
FROM stock_availability
WHERE available = 'no';
product_id | available
------------+-----------
200 | f
700 | f
800 | f
(3 rows)
或者您可以使用NOT
运算符检查布尔列中的值是否为 false,如下所示:
SELECT *
FROM stock_availability
WHERE NOT available;
设置布尔列的默认值
要为现有的布尔列设置默认值,请使用 ALTER TABLE 语句中的SET DEFAULT
子句。
例如,以下ALTER TABLE
语句设置stock_availability
表中available
列的默认值:
ALTER TABLE stock_availability
ALTER COLUMN available
SET DEFAULT FALSE;
如果插入行而不指定available
列的值,PostgreSQL 将使用FALSE
:
INSERT INTO stock_availability (product_id)
VALUES (900);
SELECT *
FROM stock_availability
WHERE product_id = 900;
product_id | available
------------+-----------
900 | f
(1 row)
同样,如果您想在创建表时为布尔列设置默认值,则可以在列定义中使用DEFAULT
约束,如下所示:
CREATE TABLE boolean_demo(
...
is_ok BOOL DEFAULT 't'
);
在本教程中,您了解了 PostgreSQL 的BOOLEAN
数据类型,以及如何使用它来存储布尔数据。
了解更多
PostgreSQL 教程:数据类型
PostgreSQL 文档:布尔类型