На этом шаге мы рассмотрим создание и использование таких запросов.
Результаты выполнения инструкции SELECT можно использовать в других инструкциях, создавая вложенные запросы. Для создания таблицы с помощью вложенного запроса служит следующий формат:
CREATE [TEMP | TEMPORARY] TABLE [IF NOT EXISTS] [<Название базы данных>.] <Haзвание таблицы> AS <Запрос SELECT>;
Для примера создадим временную копию таблицы rubr и выведем ее содержимое:
Рис.1. Пример вложенного запроса
В результате выполнения вложенного запроса создается таблица с полями, указанными после ключевого слова SELECT, и сразу заполняется данными.
Использовать вложенные запросы можно и в инструкции INSERT. Для этого предназначен следующий формат:
INSERT [OR <Алгоритм>] INTO [<Название базы данных>.]<Название таблицы> [ (<Поле1>, <Поле2>, ...)] <Запрос SELECT>;
Очистим временную таблицу tmprubr, а затем опять заполним ее с помощью вложенного запроса:
Рис.2. Использование вложенного запроса в инструкции INSERT
Если производится попытка вставить повторяющееся значение, и не указан <Алгоритм>, то это приведет к ошибке. С помощью алгоритмов ROLLBACK, ABORT, FAIL, IGNORE или REPLACE можно указать, как следует обрабатывать записи с дублированными значениями. При использовании алгоритма IGNORE повторяющиеся записи отбрасываются, а при использовании REPLACE новые записи заменяют существующие.
Использовать вложенные запросы можно также в инструкции WHERE. В этом случае вложенный запрос размещается в операторе IN. Для примера выведем сайты, зарегистрированные в рубрике с названием Программирование:
Рис.3. Использование вложенного запроса в инструкции WHERE
На следующем шаге мы рассмотрим транзакции.