postgresql笔记005—初识继承
程序员文章站
2024-02-10 13:03:28
...
初识继承
继承是面向对象的数据库的概念。它开启了数据库设计的有趣新的特性。
案例:
drop table all_cities;
create table all_cities (
name text,
population real,
altitude int
);
create table all_capitals(
state char(2)
) inherits (all_cities);
创建两个表 all_cities 和表all_capitals表,其中all_cities表为父表,all_capitals表从all_cities表中继承了多个列属性,并拥有父类表没有的特有列属性 state。
一个表中的列属性可以从零个或者多个其他表中继承过来。
insert into all_cities values( 'aaa',200000,2000);
insert into all_cities values('bbb', 300000,600);
insert into all_capitals(state,name,population,altitude) values ('aa','cap',500000,788);
select * from all_cities;
当向子表中插入一条数据时,会自动的向父表中也插入一条;
如下在查询父表 all_cities时,from后面是否加only得的结果也可能会不同;
select * from all_cities where altitude >500;
在表前面加上 only之后:
select * from only all_cities where altitude >500;
all_cities 前面的only表示系统只对all_cities表进行查询,而不包括继承级别低于all_cities的表,许多我们已经讨论过的命令如select,update,和delete,都支持only表示法。
insert into all_cities values('cap',500000,788);
update all_cities set name='ccc' where name='cap';
delete from all_cities;
注意:虽然继承经常是可用的,但是他还诶呦继承唯一约束,或者外键,因此制约了其实用性。
上一篇: postgre 创建分区表
下一篇: Oracle的游标学习
推荐阅读