Создание таблиц при помощи команды select

Таблицы, создание которых рассматривалось выше, после исполнения соответствующих команд CREATE TABLE не содержат, естественно, строк с данными. Другим вариантом использования этой команды является создание таблиц из данных, взятых из других таблиц. Для этого необходимо при определении таблицы указать SELECT-запрос, который будет вычислен, и его значение – множество строк – образует строки новой таблицы. При этом структура новой таблицы – имена полей и их типы – будет создана в соответствии со структурой выборки запроса. Определения полей в таких командах CREATE TABLE, могут быть опущены, однако, если эти определения присутствуют, они должны соответствовать структуре фактической выборки SELECT-запроса. Ограничения на данные исходных таблиц в новую таблицу не переносятся.

Ниже приведен пример создания таблицы при помощи запроса:

CREATE TABLE "Все заказы(таб)" AS

SELECT "Имя", "Фамилия", "Клиент",

"Дата регистр", "Название", "Количество", "Мера изм", "Дата выполн"

FROM "Клиент", "Товар", "Заказ", "СоставЗак"

WHERE "Клиент"."Код Клиента" = "Заказ"."Клиент"

AND "Заказ"."Код заказа"="СоставЗак"."Код заказа"

AND "Товар"."Код товара"="СоставЗак"."Код товара"

Следует иметь в виду, что данные таблицы "Все заказы(таб)" после ее создания никакой связи с данными исходных таблиц не поддерживают, и могут быть изменены любым способом.

Можно так же создавать временные таблицы, которые, как следует из названия, не хранятся в базе данных постоянно, а существует ограниченное время. Структура и данные временных таблиц так же формируются как значение запроса, извлекающего данные из других таблиц. Ниже приведен пример создания временной таблицы:

CREATE GLOBAL TEMPORARY TABLE "Все заказы(вр)"

ON COMMIT PRESERVE ROWS

AS SELECT "Имя", "Фамилия", "Клиент",

"Дата регистр", "Название", "Количество", "Мера изм", "Дата выполн"

FROM "Клиент", "Товар", "Заказ", "СоставЗак"

WHERE "Клиент"."Код Клиента"="Заказ"."Клиент"

AND "Заказ"."Код заказа"="СоставЗак"."Код заказа"

AND "Товар"."Код товара"="СоставЗак"."Код товара"

Эта таблица по структуре и данным совершенно аналогично рассмотренной выше «постоянной» таблице "Все заказы(таб)", однако эта таблица будет существовать до окончания текущей сессии. Дальнейшие подробности работы с временными таблицами можно найти в системной документации.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: