這幾天學習了一下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