Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции СУБД.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
6.32 Mб
Скачать

10.Запросы с объединением таблиц

SQL позволяет получить ответы на эти запросы посредством многотабличных запросов, которые объединяют данные из нескольких таблиц.

Чтобы понять, как в SQL реализуются многотабличные запросы, лучше всего начать с рассмотрения простого запроса, который объединяет данные из двух различных таблиц.

Составить список всех сотрудников, работающих в Минском отделении.

select fname, lname, position, S.tel_no

from Branch B, Staff S

where B.bno=S.bno and city = ‘Минск’;

При отработке данного запроса, очевидно, что СУБД должна произвести ряд действий, связанных с объединением таблиц BRANCH и STAFF. Так изначально просматривается столбец city с целью фильтрации строк со значениями отличными от значения ‘Минск’, далее для отфильтрованных строк таблицы определяются значения столбца bno как идентификаторов Минских отделений. После этого просматривается таблица STAFF с целью выявления строк со значениями в столбце bno (см. приложение 1) соответствующими идентификатору первого выявленного Минского офиса. В найденных строках оставляются значения столбцов указанных после ключевого слова SELECT . Далее эта же таблица просматривается для выявления строк соответствующих “второму” Минскому офису и т. д. до последнего. В итоге формируется таблица результатов с запрошенной информацией.

Процесс обработки приведенного двухтабличного запроса проиллюстрируем рисунком 6.

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

В реляционной базе данных вся информация хранится в виде явных значений данных в столбцах, так что все возможные отношения между таблицами можно сформировать, сопоставляя содержимое соответствующих столбцов. Таким образом, объединения являются мощным (и, к тому же, единственным, ввиду отсутствия указателей) средством выявления отношений, существующих между данными.

Рисунок 6 Обработка двухтабличного запроса

Как видно из запроса в объединении по равенству используются полные имена столбцов. Здесь это – необходимость, так как при проектировании имена столбцов с идентификаторами офисов умышленно (для удобства уяснения её структуры) выбраны одинаковыми. Особенностью многотабличных запросов является также и то, что в предложении FROM часто используются псевдонимы таблиц, чтобы упростить полные имена столбцов, а также обеспечить однозначность ссылок на столбцы.

Помимо объединения двух таблиц SQL допускает также объединение трёх и более таблиц. Ограничений по количеству объединяемых таблиц ни стандарт, ни разработчики СУБД не предусматривают, однако следует иметь в виду, что при увеличении количества объединяемых таблиц в запросе снижается его “читабельность” и скорость исполнения в силу значительного увеличения затрат ресурсов и машинного времени при его обработке.