Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vse_otvety_1.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
847.36 Кб
Скачать

61 Sql: Команда select. Вложенные запросы к таблицам.

В SQL предусмотрена возможность объединять запросы в один путем превращения одного из них в подзапрос (вложенный запрос). То есть, после ключевого слова WHERE, в условие мы записываем еще один запрос. MySQL сначала обрабатывает подзапрос, возвращает id_author=2, и это значение передается в предложение WHERE внешнего запроса. В одном запросе может быть несколько подзапросов, синтаксис у такого запроса следующий:

(SELECT имя_столбца FROM имя_таблицы WHERE условие)

Обратите внимание, что подзапросы могут выбирать только один столбец, значения которого они будут возвращать внешнему запросу. Попытка выбрать несколько столбцов приведет к ошибке.

Наиболее полно преимущества ключевого слова IN проявляются во вложенных запросах, также называемых подзапросами. Предположим, нам нужно найти все издания, выпущенные компанией "Oracle Press". Наименования издательских компаний содержатся в таблице publishers, названия книг в таблице titles. Ключевое слово NOT IN позволяет объединить обе таблицы (без получения общего отношения) и извлечь при этом нужную информацию:

SELECT title FROM titles WHERE pub_id IN

(SELECT pub_id FROM publishers WHERE publisher='Oracle Press');

При выполнении этой команды СУБД вначале обрабатывает вложенный запрос по таблице publishers, а затем его результат передает на вход основного запроса по таблице titles.

62 Sql: Объединение таблиц (команда join). Общая структура команды.

Операция соединения используется в языке SQL для вывода связанной информации, хранящейся в нескольких таблицах, в одном запросе. В этом проявляется одна из наиболее важных особенностей запросов SQL - способность определять связи между многочисленными таблицами и выводить информацию из них в рамках этих связей.

В языке SQL возможность выборки данных из разных источников с использованием

всех их полей формально называется объединением (join) и производится по

критериям, задаваемым в специальной секции JOIN оператора SELECT.

Существуют три разновидности объединений.

1.Перекрестные объединения (CROSS JOIN) - декартово произведение двух

наборов данных. Произведение не определяет отношений между наборами,

а лишь содержит все возможные комбинации записей объединяемых

наборов.

2.Внутренние объединения (INNER JOIN) - подмножество декартова про-

изведения двух наборов с критерием, используемым для объединения

записей ( критерий - выражение, возвращающее логическую величину

- признак вхождения записи в объединенный набор.

3.Внешние объединения (OUTER JOIN) - как и внутренние объединения,

содержат критерий объединения записей, но обязательно возвращают минимум

один экземпляр каждой записи заданного набора. Это может быть левый

набор (источник данных слева от ключевого слова JOIN), правый набор

(источник данных справа от ключевого слова JOIN) или оба набора в

зависимости от конкретной разновидности внешнего объединения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]