
Раздел 4. Построение нетривиальных запросов к базе данных.
Урок №13. Соединение таблиц в запросах.
Дo сих пор во всех выполняемых вами запросах данные извлекались из единственной таблицы. На сегодняшнем занятии вы научитесь в рамках одного запроса соединять более одной таблицы, с тем чтобы иметь возможность поиска информации сразу в нескольких таблицах.
Основными темами настоящей главы являются:
Выборка данных из нескольких таблиц
Типы соединений
Соединения равенства
Естественные соединения
Использование псевдонимов таблиц
Соединения неравенства
Внешние соединения (предложения OUTER JOIN)
Выборка данных из нескольких таблиц
Выборка данных сразу из нескольких таблиц является одной из наиболее впечатляющих возможностей языка SQL. Без этого вся концепция реляционной базы данных была бы вряд ли жизнеспособной. Конечно, и запросы к единст-венной таблице порой могут оказаться весьма информативными, однако в реальной жизни наибольшую практическую ценность представляют именно те запросы, в результате выполнения которых информация извлекается из нескольких таблиц базы данных. Из урока, посвященного нормализации данных, вы узнали, что из соображений простоты управления информацией реляционная база данных часто разбивается на более управляемые таблицы меньшего размера. В процессе разделения исходных таблиц на более мелкие, связанные между собой таблицы создаются с общими столбцами — так называемыми первичными ключами. Впоследствии эти ключи используются для соединения связанных таблиц друг с другом.
-
В результате выполнения операции соединения происходит объединение двух или более таблиц с целью поиска в них необходимых данных.
Вы можете спросить, зачем вообще нужно нормализовать данные, если для поиска необходимой информации в конце концов снова приходится соединять таблицы. Дело в том, что вам редко требуются данные сразу из всех таблиц, так что наиболее эффективным оказывается метод их «подбора» в соответствии с нуждами каждого конкретного запроса. Хотя вследствие нормализации может несколько страдать производительность базы данных, ее про-граммирование и сопровождение в этом случае значительно упрощаются.
Типы соединений
Несмотря на то, что в различных реализациях существует множество способов соединения таблиц, на этом уроке мы сосредоточимся на наиболее распространенных из них. Сегодня мы изучим следующие типы соединений:
Соединения равенства (так называемые эквисоединения)
Естественные соединения
Соединения неравенства
Внешние соединения
Самосоединения (соединение таблицы с собой)
Вы уже знаете из предыдущих уроков, что предложения SELECT и FROM относятся к числу обязательных элементов запроса; когда речь заходит о соединении таблиц, предложение WHERE становится его такой же обязательной составляющей. При этом соединяемые таблицы перечислены в предложении FROM, в то время как само соединение выполняется в предложении WHERE. Для соедине-ния таблиц может быть использован любой из указанных операторов: =,<,>, о, <=, >=, !=, between, like и not. Однако наиболее распространенным из них является оператор равенства.