范围类型
范围类型提供了一种简洁的方式来表示单个数据库字段中的值范围。它们在从时间数据到数字间隔的各种领域中都有应用。在本篇博客文章中,我们将通过 DML/SQL 语句和 Navicat for PostgreSQL 16 来深入了解它们的使用(以及好处!)。
理解范围类型
在 PostgreSQL 中,范围类型允许表示连续的值范围。这些范围可以是不同的数据类型,如数值、日期或时间戳。例如,范围可能表示一段时间,一组温度或一个产品价格范围。
实例:跟踪租赁时长
假设,我们想在免费的 dvdrental sample database数据库中追踪租赁的时长。我们可以使用范围类型来有效地存储租赁持续时间。以下是创建和填充新的“rentals_with_rental_period”表的语句:
CREATE TABLE rentals_with_rental_period (
rental_id SERIAL PRIMARY KEY,
customer_id INT,
rental_duration INT,
rental_period DATERANGE
);
INSERT INTO rentals_with_rental_period (customer_id, rental_duration, rental_period)
VALUES
(1, 7, '[2024-02-01, 2024-02-08]'),
(2, 5, '[2024-01-15, 2024-01-20]');
在 Navicat,我们可以通过表设计器来创建我们的表:
创建表后,我们可以向表中添加数据。请确保范围类型的值以方括号“[”开头,并以圆括号“)”结束。这样就告诉了 Navicat,这些值属于一个范围:
在本例中,“rental_period”列存储了表示每次租赁开始和结束日期的范围。我们可以使用 @>
运算符轻松查询包含特定日期的租赁:
扩展应用:数值区间
范围类型不仅限于时间数据。他们也可以用于表示数值区间。例如,假设产品的价格可以根据购买的数量在一定范围内变化,我们可以使用范围类型来有效地构建它:
CREATE TABLE product_price (
product_id SERIAL PRIMARY KEY,
price_range NUMRANGE
);
INSERT INTO product_price (price_range)
VALUES
('[10.00, 20.00)'),
('[20.00, 30.00)'),
('[30.00, )');
在本例中,“price_range”列存储了表示每个产品的最低和最高价格范围。我们可以使用 @>
运算符来查询指定价格范围内的产品:
SELECT * FROM product_price
WHERE price_range @> 25.00;
总结
PostgreSQL 中的范围类型提供了表示和查询连续值范围的一种强大方式。无论是处理时间数据、数值区间还是其他连续值,范围类型都提供了一种简洁且高效的解决方案。通过利用范围类型,开发人员可以增强其数据库模式的表达能力和灵活性,为构建更复杂的应用程序奠定基础。
你是否正在为 PostgreSQL 数据库开发寻找一款易使用的图形化工具?Navicat 16 for PostgreSQL 正好符合你的需求。点击 此处 下载全功能应用程序,免费试用 14 天!