inherit.sgml

来自「关系型数据库 Postgresql 6.5.2」· SGML 代码 · 共 89 行

SGML
89
字号
<Chapter Id="inherit"><Title>Inheritance</Title><Para>     Let's create two classes. The capitals  class  contains     state  capitals  which  are also cities. Naturally, the     capitals class should inherit from cities.     <ProgramListing>CREATE TABLE cities (    name            text,    population      float,    altitude        int            -- (in ft));CREATE TABLE capitals (    state           char2) INHERITS (cities);</ProgramListing>     In this case, an  instance  of  capitals  <FirstTerm>inherits</FirstTerm>  all     attributes  (name,  population,  and altitude) from its     parent, cities.  The type  of  the  attribute  name  is     <Type>text</Type>,  a  native  <ProductName>Postgres</ProductName>  type  for variable length     ASCII strings.  The type of the attribute population is     <Type>float</Type>,  a  native <ProductName>Postgres</ProductName> type for double precision     floating point numbers.  State capitals have  an  extra     attribute, state, that shows their state.  In <ProductName>Postgres</ProductName>,     a  class  can inherit from zero or more other classes,     and a query can reference either  all  instances  of  a     class  or  all  instances  of  a  class plus all of its     descendants. <Note><Para>The inheritance hierarchy is a actually a directed acyclic graph.</Para></Note>For example, the  following  query  finds     all  the cities that are situated at an attitude of 500ft or higher:     <ProgramListing>SELECT name, altitude    FROM cities    WHERE altitude &gt; 500;+----------+----------+|name      | altitude |+----------+----------+|Las Vegas | 2174     |+----------+----------+|Mariposa  | 1953     |+----------+----------+</ProgramListing>         </para><Para>     On the other hand, to find the  names  of  all  cities,     including  state capitals, that are located at an altitude      over 500ft, the query is:<ProgramListing>SELECT c.name, c.altitude    FROM cities* c    WHERE c.altitude > 500;</ProgramListing>     which returns:     <ProgramListing>+----------+----------+|name      | altitude |+----------+----------+|Las Vegas | 2174     |+----------+----------+|Mariposa  | 1953     |+----------+----------+|Madison   | 845      |+----------+----------+</ProgramListing>     Here the <Quote>*</Quote> after cities indicates that the query should     be  run over cities and all classes below cities in the     inheritance hierarchy.  Many of the  commands  that  we     have  already discussed -- <Command>select</Command>, <Command>update</Command> and <Command>delete</Command> --     support this <Quote>*</Quote> notation, as do others, like <Command>alter</Command>.</Para></Chapter>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?