3.5. PostgreSQL继承
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了3.5. PostgreSQL继承,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1996字,纯文字阅读大概需要3分钟。
内容图文
![3.5. PostgreSQL继承](/upload/InfoBanner/zyjiaocheng/465/c2b3ee88f3d94f2aa731229c385eebad.jpg)
继承是面向对象的数据库的概念。它开启了数据库设计新的有趣的可能性大门。
让我们创建两个表:一个 cities
表和一个 capitals
表。自然,首府(capital)也是城市(cities),因此在列出所有城市时你想要某种方法隐含地显示首府。如果你已经很高明了,那么你可能会创造类似下面这样的模式:
CREATE TABLE capitals ( name text, population real, altitude int, -- (单位是英尺) state char(2) ); CREATE TABLE non_capitals ( name text, population real, altitude int -- (单位是英尺) ); CREATE VIEW cities AS SELECT name, population, altitude FROM capitals UNION SELECT name, population, altitude FROM non_capitals;
如果只是查询,那么这个方法运转得很好,但是如果你需要更新某几行,那这个方法就很难看了。
一种更好的方法是:
CREATE TABLE cities ( name text, population real, altitude int -- (单位是英尺) ); CREATE TABLE capitals ( state char(2) ) INHERITS (cities);
在这个例子里,子表(capitals
)继承其父表(cities
)的所有字段(name, population, altitude)。字段 name 的类型 text 是 PostgreSQL 用于变长字符串的固有类型。州首府有一个额外的字段 state 显示其所处的州。在 PostgreSQL 里,一个表可以从零个或者更多其它表中继承过来。
比如,下面的查询找出所有海拔超过 500 英尺的城市的名字,包括州首府:
SELECT name, altitude FROM cities WHERE altitude > 500;
它返回:
name | altitude -----------+---------- Las Vegas | 2174 Mariposa | 1953 Madison | 845 (3 rows)
另一方面,下面的查询找出所有不是州首府并且位于海拔大于或等于 500 英尺的城市:
SELECT name, altitude FROM ONLY cities WHERE altitude > 500;
name | altitude -----------+---------- Las Vegas | 2174 Mariposa | 1953 (2 rows)
cities 前面的 ONLY 指示系统只对 cities
表运行查询,而不包括继承级别中低于 cities
的表。许多我们已经讨论过的命令 SELECT, UPDATE, DELETE 都支持这个 ONLY 表示法。
【注意】尽管继承经常是有用的,但是它还没有集成唯一约束或者外键,因此制约了其实用性。
更多信息参考http://www.infocool.net/PostgreSQL/index.htm
3.5. PostgreSQL继承
标签:
本文系统来源:http://www.cnblogs.com/wolaiye320/p/5572316.html
内容总结
以上是互联网集市为您收集整理的3.5. PostgreSQL继承全部内容,希望文章能够帮你解决3.5. PostgreSQL继承所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。