Мы можем извлечь данные из более чем одной таблицы, используя оператор JOIN. SQL Server имеет 4 типа соединений:
- INNER JOIN / Простое соединение
- ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
- ПРЯМОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
- ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
Этот тип JOIN возвращает строки из всех таблиц, в которых выполняется условие соединения. Он имеет следующий синтаксис:
SELECT columns FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
Мы будем использовать следующие две таблицы, чтобы продемонстрировать это:
Стол студентов
Плата за стол:
Следующая команда демонстрирует INNER JOIN:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students INNER JOIN Fee ON Students.admission = Fee.admission
Команда возвращает следующее:
Мы можем сказать студентам, которые заплатили их плату. Мы использовали столбец с общими значениями в обеих таблицах, который является столбцом допуска.
ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
Этот тип объединения вернет все строки из левой таблицы плюс записи в правой таблице с соответствующими значениями. Например:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students LEFT OUTER JOIN Fee ON Students.admission = Fee.admission
Код возвращает следующее:
Записи без соответствующих значений заменяются на NULL в соответствующих столбцах.
ПРАВО НАРУЖНОЕ СОЕДИНЕНИЕ
Этот тип объединения возвращает все строки из правой таблицы и только те, которые соответствуют значениям в левой таблице. Например:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students RIGHT OUTER JOIN Fee ON Students.admission = Fee.admission
Оператор возвращает следующее:
Причиной вышеприведенного вывода является то, что все строки в таблице «Плата» доступны в таблице «Студенты» при сопоставлении в столбце допуска.
ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
Этот тип объединения возвращает все строки из обеих таблиц со значениями NULL, где условие JOIN не является истинным. Например:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students FULL OUTER JOIN Fee ON Students.admission = Fee.admission
Код возвращает следующий результат: