← К оглавлению занятия

Занятие 27. Практикум 7

📁 Блок: SQL / MySQL / Подзапросы и CTE ⏱️ Время изучения: ~90 мин 🎯 Сложность: Практикум
#join #where #null #in #select #as #create

⚡ Кратко: команды

  • LEFT JOIN ... ON ... WHERE ... IS NULL — поиск отсутствующих связей.
  • WHERE id NOT IN (SELECT ...) — фильтрация через подзапрос.
  • WITH имя AS (...) SELECT ... — табличное выражение.
  • CREATE TEMPORARY TABLE имя AS SELECT ... — временная таблица.

🔖 Справочник операторов

Поиск строк без связи через LEFT JOIN

SELECT e.first_name, e.last_name
FROM employees AS e
LEFT JOIN employee_privileges AS ep ON e.id = ep.employee_id
WHERE ep.employee_id IS NULL;

Тот же поиск через подзапрос с NOT IN

SELECT first_name, last_name
FROM employees
WHERE id NOT IN (
    SELECT employee_id FROM employee_privileges
);

Тот же поиск через CTE

WITH privileged AS (
    SELECT employee_id FROM employee_privileges
)
SELECT first_name, last_name
FROM employees
WHERE id NOT IN (SELECT employee_id FROM privileged);

Фильтрация строк по условию с LIKE

SELECT *
FROM employees
WHERE first_name LIKE '%e%'
   OR job_title = 'Sales Representative';

Временная таблица

CREATE TEMPORARY TABLE temp_customers AS
SELECT id, company
FROM customers
WHERE company IN ('A', 'B', 'C', 'D', 'F');

SELECT *
FROM temp_customers;

DROP TEMPORARY TABLE IF EXISTS temp_customers;

🔗 Полный справочник

Более полный каталог SQL-операторов курса — в справочнике SQL.