Какие базовые SQL-запросы вы использовали на практике?

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

Ответ

В работе с реляционными БД (например, PostgreSQL, MySQL) регулярно применял следующие типы запросов:

  1. SELECT (Выборка данных)

    SELECT id, name, email FROM users WHERE active = TRUE ORDER BY created_at DESC;
  2. INSERT (Добавление записей)

    INSERT INTO orders (user_id, total_amount) VALUES (123, 99.99);
  3. UPDATE (Обновление данных)

    UPDATE products SET price = price * 0.9 WHERE category_id = 5;
  4. DELETE (Удаление записей)

    DELETE FROM session_logs WHERE created_at < NOW() - INTERVAL '30 days';
  5. JOIN (Соединение таблиц)

    SELECT u.name, o.id, o.total 
    FROM users u 
    INNER JOIN orders o ON u.id = o.user_id 
    WHERE o.status = 'completed';
  6. GROUP BY с агрегатными функциями (Группировка и агрегация)

    SELECT department_id, COUNT(*) as emp_count, AVG(salary) as avg_salary 
    FROM employees 
    GROUP BY department_id 
    HAVING COUNT(*) > 5;
  7. CREATE TABLE (Создание таблицы)

    CREATE TABLE products (
        id BIGSERIAL PRIMARY KEY,
        name VARCHAR(255) NOT NULL,
        sku VARCHAR(50) UNIQUE,
        price DECIMAL(12,2) CHECK (price >= 0),
        category_id INT REFERENCES categories(id)
    );

В Java-приложениях эти запросы обычно выполняются не напрямую, а через ORM (Hibernate JPA), JDBC-шаблоны Spring (JdbcTemplate) или Query Builders (JOOQ, QueryDSL).