postgresql笔记005—初识继承

初识继承

继承是面向对象的数据库的概念。它开启了数据库设计的有趣新的特性。
案例:

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;

注意:虽然继承经常是可用的,但是他还诶呦继承唯一约束,或者外键,因此制约了其实用性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值