欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;

postgresql笔记005—初识继承
在表前面加上 only之后:

select * from only all_cities where altitude >500;

postgresql笔记005—初识继承
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