Слайд 2Оператор соединения
JOIN - позволяет извлекать данные более чем из одной таблицы
![Оператор соединения JOIN - позволяет извлекать данные более чем из одной таблицы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-1.jpg)
Слайд 3Варианты синтаксиса соединения
явный синтаксис соединения (ANSI SQL:1992)
неявный синтаксис соединения (старого стиля)
![Варианты синтаксиса соединения явный синтаксис соединения (ANSI SQL:1992) неявный синтаксис соединения (старого стиля)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-2.jpg)
Слайд 4Пример
Employee
empid
name
firstname
dep_no
Department
dep_no
department
![Пример Employee empid name firstname dep_no Department dep_no department](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-3.jpg)
Слайд 7Явный синтаксис
SELECT
name,
firstname,
department
FROM employee
INNER JOIN department ON employee.dep_no = department.dep_no;
![Явный синтаксис SELECT name, firstname, department FROM employee INNER JOIN department ON employee.dep_no = department.dep_no;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-6.jpg)
Слайд 8Явный синтаксис
CROSS JOIN;
[INNER] JOIN;
LEFT [OUTER] JOIN;
RIGHT [OUTER] JOIN;
FULL
![Явный синтаксис CROSS JOIN; [INNER] JOIN; LEFT [OUTER] JOIN; RIGHT [OUTER] JOIN; FULL [OUTER] JOIN.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-7.jpg)
[OUTER] JOIN.
Слайд 9Неявный синтаксис
SELECT
name,
firstname,
department
FROM employee, department
WHERE
employee.dep_no = department.dep_no;
![Неявный синтаксис SELECT name, firstname, department FROM employee, department WHERE employee.dep_no = department.dep_no;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-8.jpg)
Слайд 13Соединение таблиц
Соединяется каждый с каждым
Остаются только совпадающие
Реализуются разными стратегиями
Неявный синтаксис устарел
![Соединение таблиц Соединяется каждый с каждым Остаются только совпадающие Реализуются разными стратегиями Неявный синтаксис устарел](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-12.jpg)
Слайд 14Соединение более чем двух таблиц
Ограничение - 64 таблицы
SELECT name, firstname
FROM works_on
JOIN
![Соединение более чем двух таблиц Ограничение - 64 таблицы SELECT name, firstname](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-13.jpg)
employee ON works_on.empid=employee.empid
JOIN department ON employee.dep_no=department.dep_no
Слайд 15Виды соединений
Естественное соединение
Декартово произведение (перекрестное соединение)
Внешнее соединение
Тета-соединение, самосоединение и полусоединение
![Виды соединений Естественное соединение Декартово произведение (перекрестное соединение) Внешнее соединение Тета-соединение, самосоединение и полусоединение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-14.jpg)
Слайд 16Естественное соединение
Внутреннее соединение содержит только те строки одной таблицы, для которых имеются
![Естественное соединение Внутреннее соединение содержит только те строки одной таблицы, для которых](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-15.jpg)
соответствующие строки в другой таблице
Соединяемые таблицы
Условие соединения
Столбцы соединения
Слайд 20Декартово произведение
Ортогональное соединение, перекрестное соединение
CROSS JOIN
Декартово произведение соединяет каждую строку первой
![Декартово произведение Ортогональное соединение, перекрестное соединение CROSS JOIN Декартово произведение соединяет каждую](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-19.jpg)
таблицы с каждой строкой второй таблицы
Количество строк n × m
Слайд 23Внешнее соединение
При внешнем соединении результирующий набор содержит все строки одной таблицы и
![Внешнее соединение При внешнем соединении результирующий набор содержит все строки одной таблицы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-22.jpg)
те из второй таблицы, для которых имеются соответствующие строки в первой таблице.
Слайд 31Виды соединений
Тета-соединение
Самосоединение
Полусоединение
![Виды соединений Тета-соединение Самосоединение Полусоединение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-30.jpg)
Слайд 32Тета-соединение
Соединение, в котором используется общее условие сравнения столбцов соединения, называется тета-соединением
SELECT name,
![Тета-соединение Соединение, в котором используется общее условие сравнения столбцов соединения, называется тета-соединением](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-31.jpg)
firstname, user_location, dept_location
FROM employee JOIN department
ON user_location < dept_location;
Слайд 33Самосоединение
При самосоединении таблица соединяется сама с собой, столбец таблицы сравнивается сам с
![Самосоединение При самосоединении таблица соединяется сама с собой, столбец таблицы сравнивается сам](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-32.jpg)
собой
SELECT t1.dep_no, t1.dep_name, t1.location
FROM department t1 JOIN department t2
ON t1.location = t2.location
WHERE t1.dep_no <> t2.dep_no;
Слайд 36Полусоединение
Полусоединение возвращает набор всех строк из одной таблицы, для которой в другой
![Полусоединение Полусоединение возвращает набор всех строк из одной таблицы, для которой в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-35.jpg)
таблице есть одно или несколько совпадений
SELECT empid, name, e.dep_no
FROM employee e JOIN department d
ON e.dep_no = d.dep_no
Слайд 37Операция соединения
Коммутативность операций соединения?
![Операция соединения Коммутативность операций соединения?](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182866/slide-36.jpg)