Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103777586
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-07 22:54:53

 




第九章


● 继承

让我们创建两个表,表capitals 包含各州的首府,同时也是cities表,自然而然,表capitals 应该从表cities 继承下来。





在本例中,一条 capitals 的记录「继承」所有父表 cities 的字段(name,population,和 altitude),字段 name 的类型是text,Postgres用于变长ASCII字符串的本机类型。字段 population 的类型是 float, Postgres 用于双精度浮点数的类型。表 capitals 多一个字段,state,表明首府所在的州。在Postgres里,一个表可以从0到多个其他表继承下来,一个查询可以检索一个表的所有记录,或是检索该表和其所有后代的记录。


※注意:继承实际上是分级的不闭合的层次关系。(The inheritance hierarchy is a actually a directed acyclic graph.)
例如,下面查询将找出所有海拔500英尺及以上的城市:





另一方面,如果要找出包括州首府在内的所有海拔超过500英尺的城市,查询应该是这样的:





在这里citics后的“*” 表明该查询应该遍历所有继承级别低于citics的表,许多我们已经讨论过的命令 -- SELECT,UPDATE 和 DELETE 等和其他象 ALTER TABLE 这样的命令都支持“*”(译注:像命令行中的通配符“*”)。



请继续参阅第十章..........




出处:南方Linux
阅读(1080) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~