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: сохранённые запросы
  • Функции, процедуры, триггеры
  • Пользователи, права и резервные копии
Учёба/Соединение таблиц

INNER JOIN

119 мин

JOIN соединяет две таблицы по ключам. Это одна из самых мощных и самых используемых возможностей SQL.

Шаблон

SELECT …
FROM таблица_a
JOIN таблица_b ON таблица_a.ключ = таблица_b.ключ;

После ON — условие, какие строки подходят друг другу. Обычно это «внешний ключ = первичный ключ».

Первый JOIN

Название группы рядом с названием факультета:

university· Попробуйте изменить
SELECT study_groups.name, faculties.name
FROM study_groups
JOIN faculties ON study_groups.faculty_id = faculties.id;

Столбец name есть в обеих таблицах, поэтому обязательно указываем, чей он: study_groups.name.

Псевдонимы — короче запись

university· Попробуйте изменить
SELECT g.name AS group_name, f.name AS faculty
FROM study_groups g
JOIN faculties f ON g.faculty_id = f.id
ORDER BY f.name, g.name;

study_groups g — даём таблице короткое имя g. В запросах с несколькими таблицами это очень удобно.

JOIN + WHERE + GROUP BY

После JOIN всё работает как обычно: фильтр, группировка, сортировка.

university· Попробуйте изменить
SELECT f.name AS faculty, COUNT(*) AS teachers
FROM teachers t
JOIN faculties f ON f.id = t.faculty_id
GROUP BY f.name
ORDER BY teachers DESC;

Что будет, если забыть ON?

Без условия каждая строка соединится с каждой строкой второй таблицы. 32 группы × 6 факультетов = 192 бессмысленные строки. Это называется декартово произведение, и на больших таблицах оно может «повесить» базу. Получилось подозрительно много строк — первым делом проверьте ON.

Что такое INNER JOIN на самом деле?

JOIN = INNER JOIN. Он возвращает только строки, у которых есть пара в обеих таблицах. Например, группа без куратора при соединении с teachers в результат не попадёт. Нужны и строки без пары — нужен LEFT JOIN (следующий урок).

1Упражнение

Выведите first_name каждого студента и название его группы (study_groups.name).


2Упражнение

Выведите название каждого товара и название его категории (products.name, categories.name).


3Упражнение

Сколько товаров в каждой категории? Название категории и количество.


Запомните

  • JOIN … ON a.fk = b.id соединяет две таблицы по ключу.
  • Для одноимённых столбцов указывайте имя таблицы или псевдоним.
  • Слишком много строк — не хватает условия ON.
Предыдущий урокКлючи и связиСледующий урокLEFT JOIN и строки без пары

Содержание

  • Шаблон
  • Первый JOIN
  • Псевдонимы — короче запись
  • JOIN + WHERE + GROUP BY
  • Что будет, если забыть ON?
  • Что такое INNER JOIN на самом деле?
  • Запомните
УчёбаПрактикаЗадачиАренаРейтинг

SQLab