Слайд 2
![Как правило, информация в базе данных хранится в нескольких взаимосвязанных](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-1.jpg)
Как правило, информация в базе данных хранится в нескольких взаимосвязанных таблицах.
Для выборки данных из взаимосвязанных таблиц используется операция соединения нескольких таблиц.
Слайд 3
![Способы соединения Соединение равенства Внешние соединения](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-2.jpg)
Способы соединения
Соединение равенства
Внешние соединения
Слайд 4
![Соединение равенства обычно производится по первичному ключу связи SELECT Клиенты.Фамилия,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-3.jpg)
Соединение равенства
обычно производится по первичному ключу связи
SELECT Клиенты.Фамилия, Клиенты.Имя,
Клиенты.Отчество, Продажи.Продано
FROM Клиенты,
Продажи
WHERE Клиенты.[Код клиента]=Продажи.[Код клиента]
Слайд 5
![Использование псевдонимов полей SELECT A.Фамилия, A.Имя, A.Отчество, B.Продано FROM Клиенты A, B WHERE A.[Код клиента]=B.[Код клиента]](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-4.jpg)
Использование псевдонимов полей
SELECT A.Фамилия, A.Имя,
A.Отчество, B.Продано
FROM Клиенты A, B
WHERE A.[Код клиента]=B.[Код
клиента]
Слайд 6
![Соединение равенства SELECT Клиенты.Фамилия. Клиенты.Имя, Клиенты.Отчество, Продажи.Продано FROM Клиенты INNER JOIN Продажи ON Клиенты.[Код клиента]=Продажи.[Код клиента]](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-5.jpg)
Соединение равенства
SELECT Клиенты.Фамилия. Клиенты.Имя,
Клиенты.Отчество, Продажи.Продано
FROM Клиенты INNER JOIN Продажи
ON Клиенты.[Код клиента]=Продажи.[Код
клиента]
Слайд 7
![Пример](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-6.jpg)
Слайд 8
![Внешние соединения Существует два типа внешнего объединения OUTER JOIN -](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-7.jpg)
Внешние соединения
Существует два типа внешнего объединения OUTER JOIN - LEFT
OUTER JOIN и RIGHT OUTER JOIN.
SELECT tabiel.fieldl, table2.field2, {.....tableN.fieldN}
FROM tablel LEFT | RIGHT | FULL {OUTER} JOIN table2
Ключевое слово OUTER можно опустить. Запись LEFT JOIN идентична LEFT OUTER JOIN.
Слайд 9
![Внешние соединения □ LEFT OUTER JOIN — левое внешнее соединение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-8.jpg)
Внешние соединения
□ LEFT OUTER JOIN — левое внешнее соединение (в
выборку включаются все записи таблицы, имя которой указано слева от оператора OUTER JOIN);
□ RIGHT OUTER JOIN — правое внешнее соединение (в выборку включаются все записи таблицы, имя которой указано справа от оператора OUTER JOIN);.
Слайд 10
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-9.jpg)
Слайд 11
![Дополнительно можно отфильтровать данные, проверяя их на NULL](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-10.jpg)
Дополнительно можно отфильтровать данные, проверяя их на NULL
Слайд 12
![Объединение запросов Язык SQL позволяет объединять несколько запросов с помощью](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-11.jpg)
Объединение запросов
Язык SQL позволяет объединять несколько запросов с помощью специальных операторов.
Запросы, включающие в себя несколько операторов SELECT, принято называть составными.
Составные запросы формируют один набор данных на основе результатов, полученных при выполнении каждого запроса, входящего в объединение.
Для объединения запросов наиболее часто используются операторы UNION и UNION ALL (предусмотренные стандартом ANSI).
Слайд 13
![Оператор UNION SELECT * FROM Товары WHERE Цена>100 UNION SELECT * FROM Товары WHERE Цена](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-12.jpg)
Оператор UNION
SELECT * FROM Товары WHERE Цена>100
UNION
SELECT * FROM
Товары WHERE Цена<1000
Слайд 14
![Правила объединения □ каждый из запросов, входящих в объединение, должен](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-13.jpg)
Правила объединения
□ каждый из запросов, входящих в объединение, должен возвращать одинаковое
количество полей (в том числе вычисляемых);
□ типы полей, возвращаемых в результате выполнения каждого запроса, должны совпадать.
Слайд 15
![Оператор UNION ALL Оператор UNION ALL аналогичен оператору UNION, за](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-14.jpg)
Оператор UNION ALL
Оператор UNION ALL аналогичен оператору UNION, за исключением того,
что в результирующую выборку включаются дублирующие записи.
SELECT * FROM Товары WHERE Цена>100
UNION ALL
SELECT * FROM Товары WHERE Цена<1000
Слайд 16
![Full outer join Некоторые СУБД не поддерживают такую функциональность (например,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/143612/slide-15.jpg)
Full outer join
Некоторые СУБД не поддерживают такую функциональность (например, MySQL), в
таких случаях обычно используют объединение двух запросов