Сможешь ли написать JOIN-запрос в SQL?

«Сможешь ли написать JOIN-запрос в SQL?» — вопрос из категории Базы данных, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, конечно. В Node.js-проектах я часто работаю с реляционными БД через драйверы (например, pg для PostgreSQL) или ORM. Вот пример JOIN-запроса, который я мог бы выполнить из Node.js-приложения, используя параметризованные запросы для безопасности:

// Пример с использованием библиотеки 'pg' (PostgreSQL)
const queryText = `
  SELECT u.id, u.name, u.email, o.id AS order_id, o.total_amount, o.created_at
  FROM users u
  INNER JOIN orders o ON u.id = o.user_id
  WHERE u.is_active = $1
  ORDER BY o.created_at DESC
  LIMIT $2;
`;
const values = [true, 10];

const result = await pool.query(queryText, values); // pool - пул соединений

Ключевые типы JOIN и их применение:

  • INNER JOIN: Возвращает только записи, для которых есть совпадение в обеих таблицах. Используется чаще всего.
  • LEFT (OUTER) JOIN: Возвращает все записи из левой таблицы и совпадающие из правой. Если совпадения нет, поля из правой таблицы будут NULL. Полезно, например, для получения списка всех пользователей и их заказов, даже если заказов нет.
  • RIGHT JOIN и FULL JOIN используются реже, но я с ними знаком.

Важно для производительности: Поля, по которым происходит соединение (ON u.id = o.user_id), должны быть проиндексированы.