PostgreSQL 的一個重要特性之一是能夠對數據實施各種約束,以確保數據完整性和可靠性。今天的文章中,我們將概述 PostgreSQL 的各種約束類型并結合免費的?"dvdrental" 示例數據庫?中的例子探索他們的使用方法。
1. 檢查約束:
檢查約束允許你在插入或更新數據時指定列必須滿足的條件,從而確保數據庫里僅存儲有效數據。例如,如果你有一個“customers”表,并希望確保用戶的年齡至少為 18,那么你可以添加一個檢查約束來實現,如下所示:
ALTER TABLE customers
ADD CONSTRAINT check_age CHECK (age >= 18);
2. 非空約束:
非空約束確保某列不能包含空值。例如,在“customer”表中,如果你希望確保每個客戶都有一個有效的電子郵件地址,你可以在電子郵件列中強制執行非空約束,如下所示:
ALTER TABLE customers
ALTER COLUMN email SET NOT NULL;
3. 唯一約束:
唯一約束確保一列或一組列中的值在表的所有行中是唯一的,這通常會用在避免出現重復的字段中,如用戶名稱或電子郵件地址字段。例如,在“customer”表中,如果你希望確保每個客戶都有一個唯一的電子郵件地址,你可以添加一個唯一約束,如下所示:
ALTER TABLE customers
ADD CONSTRAINT unique_email UNIQUE (email);
4. 主鍵:
主鍵是一個唯一約束和非空約束的組合,它唯一標識表中的每條記錄,并確保數據的完整性。在“customer”表中,你可能有一個列名稱為“customer_id”,該列作為主鍵:
ALTER TABLE customers
ADD CONSTRAINT pk_customer_id PRIMARY KEY (customer_id);
5. 外鍵:
外鍵通過強制引用完整性來建立兩個表之間的關系。他們確保一個表中的列值與另一個表中的列值相匹配。例如,在“rental”表,如果你希望確保每個租賃記錄都引用一個有效的客戶,你可以添加一個外鍵約束,如下所示:
ALTER TABLE rental
ADD CONSTRAINT fk_customer_id
FOREIGN KEY (customer_id)
REFERENCES customers(customer_id);
6. 排他約束:
排他約束確保表中沒有兩行滿足指定的謂詞,這使得你可以定義除簡單唯一約束或檢查約束之外的自定義約束。例如,你可能有一個“bookings”表,你希望確保同一個房間的兩個預訂在時間上不會重疊:
ALTER TABLE bookings
ADD CONSTRAINT exclude_overlapping_bookings
EXCLUDE USING GIST (room_id WITH =, booking_range WITH &&);
Navicat 中的約束
Navicat for PostgreSQL 16?提供了一個易于使用的圖形化表設計器,用于創建和管理 PostgreSQL 約束:
在“鍵”列單擊,你就可以在一個或多個字段中添加鍵圖標,主鍵約束也被創建了。其他約束可在他們關聯的選項卡上查看到。
結語
PostgreSQL 提供多種不同類型的約束,用于維護數據完整性和實施業務規則。理解這些約束以及如何有效的使用它們對于設計健壯和可靠的數據庫模式非常重要。
正在尋找易于使用的 PostgreSQL 數據庫開發的圖形化工具嗎?Navicat 16 for PostgreSQL 能滿足你的需求。點擊?此處?下載全功能的應用程序,免費試用 14 天!
PostgreSQL 相關技術內容
PostgreSQL 與 Navicat:數據庫行業的中堅力量
掌握 PostgreSQL 規則語法
在?PostgreSQL 中存儲三元數據
PostgreSQL 的實體化視圖介紹
PostgreSQL 實體化視圖的使用
為什么在下一個 IT 項目中選擇使用 PostgreSQL
PostgreSQL 中的多版本并發控制
使用 Navicat Monitor 3.0 監控 PostgreSQL
Navicat Monitor 3 中查看 PostgreSQL 實例詳細信息
使用 Navicat Monitor 3 跟蹤 PostgreSQL 實例查詢
在 PostgreSQL 中設置查詢超時
了解 PostgreSQL 規則