PostgreSQL中的約束
阿新 • • 發佈:2018-12-09
在PostgreSQL中,約束的種類有:
- 檢查約束
- 非空約束
- 唯一約束
- 主鍵
- 外來鍵
檢查約束
檢查約束是最常見的約束型別,使用該約束後,欄位的值就必須使這個約束的表示式為真。使用“CHECK(表示式)”。
CREATE TABLE books (
id int CHECK(id>0),
name varchar(20),
price int
);
可以給約束起一個獨立的名字,方便列印或修改約束資訊,使用“CONSTRAINT 約束名 CHECK(表示式)”。
CREATE TABLE books ( id int CONSTRAINT valid_id CHECK(id>0), name varchar(20), price int );
檢查約束可以引用多個欄位,此時使用“表約束”(單個欄位的檢查約束,也可以使用表約束)。
CREATE TABLE books (
id int,
name varchar(20),
price int,
CHECK(id>0 and price>0)
);
非空約束
宣告一個欄位必須不能為NULL,非空約束總是被寫成欄位約束。
CREATE TABLE books (
id int NOT NULL,
name varchar(20),
price int
);
唯一約束
保證欄位裡的資料是唯一的。
CREATE TABLE books ( id int UNIQUE, name varchar(20), price int );
唯一約束 也可以寫成表約束的形式。
CREATE TABLE books(
id int ,
name varchar(20),
price int,
UNIQUE(id)
);
主鍵
CREATE TABLE books (
id int PRIMARY KEY,
name varchar(20),
price int
);
外來鍵
外來鍵是表之間的約束,使得表的欄位必須出現在另一個表的欄位中,又稱參照完整性約束。外來鍵約束的形式為:REFERENCES 表名(列名)。
CREATE TABLE student ( name varchar(20), bookId int REFERENCES books(id) );
總結
一個欄位可以有多個約束,一個接一個寫就好,它們的順序無所謂。
CREATE TABLE books (
id int PRIMARY KEY,
name varchar(20),
price int NOT NULL CHECK(price>0)
);