Учебники

14) SQL-сервер присоединяется

Мы можем извлечь данные из более чем одной таблицы, используя оператор 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

Код возвращает следующий результат: