PostgreSQL ---- 表的繼承

這幾天學習了一下PostgreSQL數據庫,從安裝到簡單的使用都平平淡淡,可是下面的這個功能仍是給了我一點小驚喜。數據庫

表的繼承
簡單來講就是能夠用繼承的方法把一張表的列和數據傳遞給另外一張表,子表能夠比父表列多的一種結構。學習

下面用一個小例子來了解一下。code

--建立父表並插入兩條數據
mydb=# create table father_table(c1 integer,c2 varchar(10));
CREATE TABLE
mydb=# insert into father_table values(1,'101');
INSERT 0 1
mydb=# insert into father_table values(2,'201');
INSERT 0 1繼承

--建立子表並插入兩條數據
mydb=# create table child_table(c3 varchar(10)) inherits (father_table);
CREATE TABLE
mydb=# insert into child_table values(3,'301','302');
INSERT 0 1
mydb=# insert into child_table values(4,'401','402');
INSERT 0 1it

--查看父表結構
mydb=# \d father_tableio

Table "public.father_table"
Column Type Collation Nullable Default
c1 integer
c2 character varying(10)

Number of child tables: 1 (Use \d+ to list them.)table

--查看子表結構
mydb=# \d child_tableselect

Table "public.child_table"
Column Type Collation Nullable Default
c1 integer
c2 character varying(10)
c3 character varying(10)

Inherits: father_table方法

--檢索父表全部記錄
mydb=# select * from father_table;數據

c1 c2
1 101
2 201
3 301
4 401

(4 rows)

--檢索父表全部記錄
mydb=# select * from child_table;

c1 c2 c3
3 301 302
4 401 402

(2 rows)

--檢索只屬於父表的記錄
mydb=# select * from only father_table;

c1 c2
1 101
2 201

(2 rows)

--檢索只屬於子表的記錄
mydb=# select * from only child_table;

c1 c2 c3
3 301 302
4 401 402

(2 rows)

例子很簡單,一看就明白了繼承表的使用方法,我就不贅述了。

如今你們想一下ORACLE數據庫怎麼來實現上面的應用呢?
我在下一篇裏分享給你們。

2021/06/17 @ Dalian

相關文章
相關標籤/搜索