PostgreSQL表繼承
阿新 • • 發佈:2018-12-10
PostgreSQL支援表繼承,這是它特有的功能。
1.建表
例:建立person表作為父表,student表是繼承它的子表。
CREATE TABLE person (
id int,
name varchar(20)
);
CREATE TABLE student (
classId int
)INHERITS(person);
執行結果:
person表
student表
我們可以看到,student表繼承了person表的列id和name,還擁有自己的列classid。
2.查詢資料
先說結論:查詢父表時,會將子表中的資料也顯示出來;查詢子表時,不會顯示父表中的資料。
首先,分別向父表person和子表student中插入資料。
insert into person values(0,'Dava');
insert into student values(1,'April',100);
insert into student values(2,'Harris',101);
然後,查詢兩張表,觀察它們的特點。
select * from person;
執行結果:
select * from student;
執行結果:
上述結果證明了:查詢父表時,會將子表中的資料也顯示出來;查詢子表時,不會顯示父表中的資料。
注:1.父表的檢查約束和非空約束會被字表繼承。其他約束(如唯一約束,主鍵,外來鍵)則不會被繼承。
2.一個子表可以從多個父表繼承,當同名欄位出現在多個父表中,或者父表和子表中,這些欄位會被融合(此時欄位型別必須相同,否則會丟擲一個錯誤)。