Navicat 部落格

探索 PostgreSQL 的進階資料類型 - 第 2 部分 2024 年 3 月 8 日,由 Robert Gravelle 撰寫

範圍類型

範圍(Range)類型提供了一種簡潔的方式來表示單一資料庫欄位中的數值範圍。從時態資料到數字間隔,它們在各個領域中都有應用到。在這篇文章中,我們將深入研究它們的用法(以及好處!),並使用 DML/SQL 陳述式和 Navicat for PostgreSQL 16 進行示範。

理解範圍(Range)類型

在 PostgreSQL 中,範圍類型能表示連續範圍的數值。這些範圍可以是不同的資料類型,如數字、日期或時間戳記。例如,範圍可以表示一段時間、一組溫度或一個產品價格範圍。

實際範例:追蹤租借期限

假設我們想要在免費的 dvdrental 範例資料庫 中追蹤租借期限。我們可以利用範圍類型有效地儲存租借期限。以下是建立新的「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 中,我們可以使用資料表格設計器建立資料表:

rentals_with_rental_period_in_table_designer (59K)

在建立資料表之後,我們就可以加入資料。請務必在範圍值前面加上方括號「[」並以圓括號「)」結尾,讓 Navicat 知道這些值是屬於一個範圍:

rentals_with_rental_period_table (24K)

在這個例子中,「rental_period」欄位儲存了表示每次租約的開始日期和結束日期的範圍。我們可以使用 @> 運算子輕鬆地查詢特定日期的租借資料:

range_query (40K)

擴展應用:數字間隔

範圍類型不限於時態資料,還可以用於表示數字間隔。例如,假設產品的價格可能會根據購買數量在一個特定範圍內變化。我們可以使用範圍類型來有效地表示:


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 天!

Navicat 文章
頻道記錄
分享
部落格封存檔