SQLab
УчёбаПрактикаЗадачиАренаРейтинг
© 2026 SQLab · Ташкент
SQLab

Учите SQL прямо в браузере — ничего не нужно устанавливать.

Платформа

  • Учёба
  • Практика
  • Задачи
  • Арена
  • Рейтинг

Для кого

  • Студентам
  • Преподавателям
  • Университетам
© 2026 SQLab. Все права защищены.Сделано в Узбекистане для студентов.
УчёбаПрактикаЗадачиАренаРейтинг
0/26

Основы

  • Что такое база данных?
  • Первый SELECT
  • WHERE: отбор нужных строк
  • IN, BETWEEN, LIKE и NULL
  • Сортировка, LIMIT и DISTINCT

Вычисления

  • Выражения, функции и CASE
  • Работа с датами
  • COUNT, SUM, AVG, MIN, MAX
  • GROUP BY и HAVING

Соединение таблиц

  • Ключи и связи
  • INNER JOIN
  • LEFT JOIN и строки без пары
  • Несколько таблиц и self join

Сложные запросы

  • Подзапросы
  • UNION, INTERSECT, EXCEPT
  • WITH: именованные запросы
  • Оконные функции

Создание и изменение таблиц

  • CREATE TABLE: типы и ограничения
  • INSERT, UPDATE, DELETE
  • ALTER, DROP, TRUNCATE
  • Как правильно спроектировать базу

Профессиональный уровень

  • Индексы и EXPLAIN
  • Транзакции и ACID
  • VIEW: сохранённые запросы
  • Функции, процедуры, триггеры
  • Пользователи, права и резервные копии
Учёба/Соединение таблиц

LEFT JOIN и строки без пары

128 мин

INNER JOIN молча выбрасывает строки без пары. Но часто интересны именно они: «покупатели, которые ни разу не заказывали», «группы без куратора», «студенты, ещё не получившие оценок».

LEFT JOIN

Остаются все строки левой таблицы. Если пары в правой таблице нет — её столбцы будут NULL.

university· Попробуйте изменить
SELECT g.name, t.last_name AS curator
FROM study_groups g
LEFT JOIN teachers t ON t.id = g.curator_id
ORDER BY t.last_name NULLS FIRST, g.name;

У групп без куратора curator — NULL.

Поиск строк без пары

Самый полезный приём: LEFT JOIN + WHERE правая.id IS NULL.

shop· Попробуйте изменить
SELECT c.first_name, c.last_name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.id IS NULL;

Это покупатели, которые ни разу ничего не заказали.

RIGHT JOIN и FULL JOIN

  • RIGHT JOIN — зеркальное отражение LEFT JOIN: полностью остаётся правая таблица. Обычно понятнее поменять таблицы местами и написать LEFT JOIN.
  • FULL JOIN — остаются строки без пары с обеих сторон.

PostgreSQL поддерживает FULL OUTER JOIN.

Осторожно: условие в WHERE или в ON?

Если в LEFT JOIN условие для правой таблицы написать в WHERE, строки без пары (NULL) условие не пройдут — и LEFT JOIN превратится в обычный JOIN. Условие на правую таблицу должно стоять в ON:

shop· Попробуйте изменить
SELECT c.first_name, COUNT(o.id) AS cancelled
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id AND o.status = 'cancelled'
GROUP BY c.id, c.first_name
ORDER BY cancelled DESC
LIMIT 5;

COUNT(o.id) не считает NULL, поэтому у покупателя без отменённых заказов будет 0.

1Упражнение

Выведите названия товаров, на которые не написано ни одного отзыва (reviews).


2Упражнение

Выведите название каждого факультета и число преподавателей на нём. Если преподавателей нет, должно быть 0.


Запомните

  • LEFT JOIN — левая таблица остаётся полностью, у строк без пары правая сторона NULL.
  • Строки без пары: LEFT JOIN … WHERE правая.id IS NULL.
  • Условие на правую таблицу — в ON, иначе LEFT JOIN перестанет работать.
Предыдущий урокINNER JOINСледующий урокНесколько таблиц и self join

Содержание

  • LEFT JOIN
  • Поиск строк без пары
  • RIGHT JOIN и FULL JOIN
  • Осторожно: условие в WHERE или в ON?
  • Запомните
УчёбаПрактикаЗадачиАренаРейтинг

SQLab