Слайд 2Оператор соединения
JOIN - позволяет извлекать данные более чем из одной таблицы
Слайд 3Варианты синтаксиса соединения
явный синтаксис соединения (ANSI SQL:1992)
неявный синтаксис соединения (старого стиля)
Слайд 4Пример
Employee
empid
name
firstname
dep_no
Department
dep_no
department
Слайд 7Явный синтаксис
SELECT
name,
firstname,
department
FROM employee
INNER JOIN department ON employee.dep_no = department.dep_no;
Слайд 8Явный синтаксис
CROSS JOIN;
[INNER] JOIN;
LEFT [OUTER] JOIN;
RIGHT [OUTER] JOIN;
FULL
[OUTER] JOIN.
Слайд 9Неявный синтаксис
SELECT
name,
firstname,
department
FROM employee, department
WHERE
employee.dep_no = department.dep_no;
Слайд 13Соединение таблиц
Соединяется каждый с каждым
Остаются только совпадающие
Реализуются разными стратегиями
Неявный синтаксис устарел
Слайд 14Соединение более чем двух таблиц
Ограничение - 64 таблицы
SELECT name, firstname
FROM works_on
JOIN
employee ON works_on.empid=employee.empid
JOIN department ON employee.dep_no=department.dep_no
Слайд 15Виды соединений
Естественное соединение
Декартово произведение (перекрестное соединение)
Внешнее соединение
Тета-соединение, самосоединение и полусоединение
Слайд 16Естественное соединение
Внутреннее соединение содержит только те строки одной таблицы, для которых имеются
соответствующие строки в другой таблице
Соединяемые таблицы
Условие соединения
Столбцы соединения
Слайд 20Декартово произведение
Ортогональное соединение, перекрестное соединение
CROSS JOIN
Декартово произведение соединяет каждую строку первой
таблицы с каждой строкой второй таблицы
Количество строк n × m
Слайд 23Внешнее соединение
При внешнем соединении результирующий набор содержит все строки одной таблицы и
те из второй таблицы, для которых имеются соответствующие строки в первой таблице.
Слайд 31Виды соединений
Тета-соединение
Самосоединение
Полусоединение
Слайд 32Тета-соединение
Соединение, в котором используется общее условие сравнения столбцов соединения, называется тета-соединением
SELECT name,
firstname, user_location, dept_location
FROM employee JOIN department
ON user_location < dept_location;
Слайд 33Самосоединение
При самосоединении таблица соединяется сама с собой, столбец таблицы сравнивается сам с
собой
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Полусоединение
Полусоединение возвращает набор всех строк из одной таблицы, для которой в другой
таблице есть одно или несколько совпадений
SELECT empid, name, e.dep_no
FROM employee e JOIN department d
ON e.dep_no = d.dep_no
Слайд 37Операция соединения
Коммутативность операций соединения?