-----------------------------
-- Наследование:
-- Таблица может наследоваться от нескольких таблиц. Запрос может получить как записи из таблицы
-- так дополнительно и записи из всех её наследников.
-----------------------------
-- Для примера, таблица capitals (столицы) наследуется от таблицы cities (города), будут унаследованы все поля
CREATE TABLE cities (
name text,
population float8,
altitude int -- (in ft)
);
CREATE TABLE capitals (
state char(2)
) INHERITS (cities);
-- Теперь заполним таблицы.
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;
-- Можно найти все города включая столицы которые расположены на высоте 500 футов и выше
SELECT c.name, c.altitude
FROM cities c
WHERE c.altitude > 500;
-- Для того что бы в запросе участвовала только родительская таблица используйте ключевое слово ONLY:
SELECT name, altitude
FROM ONLY cities
WHERE altitude > 500;
-- Очистка таблиц (сначала надо удалить дочерние таблицы)
DROP TABLE capitals;
DROP TABLE cities;