Какие самые часто используемые функции и операторы в SQL?

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

Ответ

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

1. CRUD-операции:

-- SELECT (часто с WHERE для фильтрации)
SELECT id, name, email FROM users WHERE active = TRUE ORDER BY created_at DESC;

-- INSERT (с RETURNING для получения вставленных данных в pg)
INSERT INTO users (name, email) VALUES ($1, $2) RETURNING id;
-- Параметры $1, $2 подставляются из Node.js для безопасности от SQL-инъекций

-- UPDATE
UPDATE orders SET status = 'shipped' WHERE id = $1;

-- DELETE
DELETE FROM sessions WHERE expires_at < NOW();

2. JOIN для связывания таблиц:

-- Получение заказов с информацией о пользователях
SELECT o.id, o.total, u.name, u.email
FROM orders o
INNER JOIN users u ON o.user_id = u.id;

3. Агрегирующие функции с GROUP BY:

-- Аналитика: сумма продаж по категориям
SELECT category, SUM(price) as total_sales
FROM products
GROUP BY category
HAVING SUM(price) > 1000; -- Фильтрация результатов агрегации

4. Работа с транзакциями (критично для целостности данных):

BEGIN;
UPDATE accounts SET balance = balance - $1 WHERE id = $2;
UPDATE accounts SET balance = balance + $1 WHERE id = $3;
COMMIT;
-- В Node.js это оборачивается в client.query('BEGIN') ... client.query('COMMIT')

В Node.js-приложениях крайне важно использовать параметризованные запросы (как в примерах выше $1, $2), чтобы избежать SQL-инъекций. Для сложных запросов часто используют ORM, такие как Sequelize или Prisma, которые генерируют подобный SQL.