Расширенный SQL

-----------------------------
-- Наследование:
--	Таблица может наследоваться от нескольких таблиц. Запрос может получить как записи из таблицы
--	так дополнительно и записи из всех ее наследников.
-----------------------------

-- Для примера, таблица capitals (столицы) наследуется от таблицы  cities (города), при этом будут унаследованы все поля.

CREATE TABLE cities (
	name		text,
	population	float8,
	altitude	int		-- (в футах)
);

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;