Базы данных и SQL: достаточный минимум

Базы данных и SQL для новичка: таблицы, связи, запросы SELECT и JOIN, индексы. Достаточный минимум с примерами, чтобы пройти собеседование и решать рабочие задачи.

Автор — Дмитрий Тыльный, Senior DevOps · 31 мая 2026 · 11 мин
Базы данных и SQL: достаточный минимум

Коротко. SQL — язык запросов к реляционным базам. Джуну (и разработчику, и QA, и аналитику) нужен уверенный минимум: SELECT, WHERE, JOIN, GROUP BY и понимание индексов. Это самый частый технический вопрос на собеседованиях начального уровня.

Таблицы и связи

Данные хранятся в таблицах (строки и столбцы). Таблицы связаны ключами: первичный ключ (PRIMARY KEY) уникально идентифицирует строку, внешний ключ (FOREIGN KEY) ссылается на строку другой таблицы. Пример: users и orders, где orders.user_id ссылается на users.id.

SELECT: выборка данных

SELECT name, email
FROM users
WHERE city = 'Москва'
ORDER BY name
LIMIT 10;

Читается как: «выбрать столбцы name и email из users, где город Москва, отсортировать по имени, взять первые 10».

JOIN: связываем таблицы

JOIN объединяет строки из разных таблиц по условию. Заказы вместе с именами пользователей:

SELECT users.name, orders.total
FROM orders
JOIN users ON users.id = orders.user_id;
  • INNER JOIN — только совпавшие строки.
  • LEFT JOIN — все из левой таблицы + совпавшие из правой (иначе NULL).

Агрегация и группировка

SELECT city, COUNT(*) AS users_count
FROM users
GROUP BY city
HAVING COUNT(*) > 100;

Агрегатные функции: COUNT, SUM, AVG, MIN, MAX. GROUP BY группирует строки, HAVING фильтрует уже сгруппированные (в отличие от WHERE).

Индексы: зачем

Индекс ускоряет поиск по столбцу (как оглавление в книге). Плюс — быстрые SELECT по индексированному полю; минус — замедление вставок и лишнее место. Индексируйте то, по чему часто ищете и джойните (например, внешние ключи).

Частые вопросы

Какой SQL нужен джуну?
SELECT, WHERE, ORDER BY, JOIN, GROUP BY, агрегаты. Этого хватает для собеседования и большинства задач.

Чем WHERE отличается от HAVING?
WHERE фильтрует строки до группировки, HAVING — после, по результатам агрегатов.

Какую БД учить?
PostgreSQL — популярный и востребованный выбор. Синтаксис SQL во многом переносим между базами.

Полезно? Подпишитесь на Telegram

Вступить в канал