← Назад ко всем вопросам

Какие знаешь виды JOIN

1️⃣ Как кратко ответить

JOIN — это операция в SQL, которая позволяет объединять строки из двух или более таблиц на основе связанного столбца. Основные виды JOIN: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, CROSS JOIN и SELF JOIN.

2️⃣ Подробное объяснение темы

JOIN — это ключевая операция в SQL, которая используется для объединения строк из двух или более таблиц на основе связанного столбца. Это позволяет извлекать данные из нескольких таблиц в одном запросе, что особенно полезно в реляционных базах данных, где данные часто распределены по разным таблицам.

Основные виды JOIN:

  1. INNER JOIN: Возвращает только те строки, которые имеют совпадения в обеих таблицах. Это наиболее часто используемый тип JOIN, когда нужно получить только те данные, которые присутствуют в обеих таблицах.

    SELECT employees.name, departments.name
    FROM employees
    INNER JOIN departments ON employees.department_id = departments.id;
    
    • SELECT employees.name, departments.name: выбираем имена сотрудников и названия отделов.
    • FROM employees: основная таблица, из которой извлекаются данные.
    • INNER JOIN departments ON employees.department_id = departments.id: объединяем таблицы employees и departments по совпадению department_id в employees и id в departments.
  2. LEFT JOIN (или LEFT OUTER JOIN): Возвращает все строки из левой таблицы и совпадающие строки из правой таблицы. Если совпадений нет, возвращает NULL для правой таблицы.

    SELECT employees.name, departments.name
    FROM employees
    LEFT JOIN departments ON employees.department_id = departments.id;
    
    • LEFT JOIN: выбирает все строки из employees, даже если нет совпадений в departments.
  3. RIGHT JOIN (или RIGHT OUTER JOIN): Возвращает все строки из правой таблицы и совпадающие строки из левой таблицы. Если совпадений нет, возвращает NULL для левой таблицы.

    SELECT employees.name, departments.name
    FROM employees
    RIGHT JOIN departments ON employees.department_id = departments.id;
    
    • RIGHT JOIN: выбирает все строки из departments, даже если нет совпадений в employees.
  4. FULL OUTER JOIN: Возвращает все строки, когда есть совпадление в одной из таблиц. Если совпадений нет, возвращает NULL для отсутствующих данных из обеих таблиц.

    SELECT employees.name, departments.name
    FROM employees
    FULL OUTER JOIN departments ON employees.department_id = departments.id;
    
    • FULL OUTER JOIN: объединяет результаты LEFT JOIN и RIGHT JOIN.
  5. CROSS JOIN: Возвращает декартово произведение двух таблиц. Каждая строка из первой таблицы соединяется с каждой строкой из второй таблицы.

    SELECT employees.name, departments.name
    FROM employees
    CROSS JOIN departments;
    
    • CROSS JOIN: создает комбинации всех строк из employees и departments.
  6. SELF JOIN: Используется для соединения таблицы с самой собой. Это полезно, когда нужно сравнить строки в одной таблице.

    SELECT a.name AS Employee1, b.name AS Employee2
    FROM employees a, employees b
    WHERE a.manager_id = b.id;
    
    • SELF JOIN: соединяет таблицу employees с самой собой, чтобы найти сотрудников и их менеджеров.

JOIN-ы позволяют эффективно извлекать и комбинировать данные из нескольких таблиц, что делает их незаменимыми в работе с реляционными базами данных.

Тема: Базы данных и SQL
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки