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

Для выборки данных из таблицы users, где поле isactive равно true и role равно 'admin':

Короткий ответ

Что ответить на собеседовании

Для выборки данных из таблицы users, где поле isactive равно true и role равно 'admin':

Подробный разбор

Ответ с пояснениями

Для выборки данных из таблицы users, где поле is_active равно true и role равно 'admin':

SELECT id, username, email
FROM users
WHERE is_active = TRUE AND role = 'admin';

Для вставки новой записи в таблицу products:

INSERT INTO products (name, price, category_id)
VALUES ('New Product', 19.99, 10);

Для обновления записи в таблице orders, устанавливая статус 'shipped' для заказа с id = 100:

UPDATE orders
SET status = 'shipped'
WHERE id = 100;

Для удаления записи из таблицы comments по id:

DELETE FROM comments
WHERE id = 500;

Для базового объединения таблиц users и orders по user_id:

SELECT u.username, o.order_date, o.total_amount
FROM users AS u
JOIN orders AS o ON u.id = o.user_id;

При проектировании важно учитывать:

  • Безопасность: Использовать параметризованные запросы для предотвращения SQL-инъекций.
  • Производительность: Оптимизировать запросы, используя индексы, избегая SELECT * и проверяя планы выполнения.
  • Читаемость: Форматировать запросы, использовать псевдонимы таблиц и полей.
  • Тестирование: Проверять запросы в разных сценариях и объемах данных.

Пример параметризованного запроса (концептуально, реализация зависит от языка и драйвера):

// Пример для выборки пользователя по ID
SELECT id, username FROM users WHERE id = ?;

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее