mirror of
https://github.com/postgres/postgres.git
synced 2025-05-18 17:41:14 +03:00
This is a follow-on patch to 92c12e46d5. In that patch, we renamed "altitude" to "elevation" in the docs, based on these details: https://mapscaping.com/blogs/geo-candy/what-is-the-difference-between-elevation-relief-and-altitude This renames the tutorial SQL files to match the documentation. Reported-by: max1@inbox.ru Discussion: https://postgr.es/m/161512392887.1046.3137472627109459518@wrigleys.postgresql.org Backpatch-through: 9.6
61 lines
1.5 KiB
Plaintext
61 lines
1.5 KiB
Plaintext
---------------------------------------------------------------------------
|
|
--
|
|
-- advanced.sql-
|
|
-- Tutorial on advanced PostgreSQL features
|
|
--
|
|
--
|
|
-- Copyright (c) 1994, Regents of the University of California
|
|
--
|
|
-- src/tutorial/advanced.source
|
|
--
|
|
---------------------------------------------------------------------------
|
|
|
|
-----------------------------
|
|
-- Inheritance:
|
|
-- A table can inherit from zero or more tables. A query can reference
|
|
-- either all rows of a table or all rows of a table plus all of its
|
|
-- descendants.
|
|
-----------------------------
|
|
|
|
-- For example, the capitals table inherits from cities table. (It inherits
|
|
-- all data fields from cities.)
|
|
|
|
CREATE TABLE cities (
|
|
name text,
|
|
population float8,
|
|
elevation int -- (in ft)
|
|
);
|
|
|
|
CREATE TABLE capitals (
|
|
state char(2)
|
|
) INHERITS (cities);
|
|
|
|
-- Now, let's populate the tables.
|
|
INSERT INTO cities VALUES ('San Francisco', 7.24E+5, 63);
|
|
INSERT INTO cities VALUES ('Las Vegas', 2.583E+5, 2174);
|
|
INSERT INTO cities VALUES ('Mariposa', 1200, 1953);
|
|
|
|
INSERT INTO capitals VALUES ('Sacramento', 3.694E+5, 30, 'CA');
|
|
INSERT INTO capitals VALUES ('Madison', 1.913E+5, 845, 'WI');
|
|
|
|
SELECT * FROM cities;
|
|
SELECT * FROM capitals;
|
|
|
|
-- You can find all cities, including capitals, that
|
|
-- are located at an elevation of 500 ft or higher by:
|
|
|
|
SELECT c.name, c.elevation
|
|
FROM cities c
|
|
WHERE c.elevation > 500;
|
|
|
|
-- To scan rows of the parent table only, use ONLY:
|
|
|
|
SELECT name, elevation
|
|
FROM ONLY cities
|
|
WHERE elevation > 500;
|
|
|
|
|
|
-- clean up (you must remove the children first)
|
|
DROP TABLE capitals;
|
|
DROP TABLE cities;
|