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

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

Ответ

Да, есть опыт написания SQL-запросов INSERT для добавления данных. Основные варианты использования и best practices:

1. Добавление одной строки:

INSERT INTO users (name, email, created_at)
VALUES ('Иван', 'ivan@example.com', NOW());

2. Множественная вставка (более эффективна):

INSERT INTO products (title, price, category_id)
VALUES 
    ('Ноутбук', 999.99, 1),
    ('Телефон', 499.99, 1),
    ('Наушники', 199.99, 2);

3. Вставка данных из результата SELECT (копирование/миграция):

INSERT INTO archived_orders (order_id, customer_id, total_amount)
SELECT id, customer_id, amount 
FROM orders 
WHERE created_at < '2023-01-01'
  AND status = 'completed';

Ключевые проверки при написании INSERT-запросов:

  • Соответствие типов данных между столбцами и значениями
  • Ограничения (constraints) таблицы: NOT NULL, UNIQUE, FOREIGN KEY
  • Автоинкрементные поля — не включать в список столбцов, если не требуется явное значение
  • Валидация бизнес-логики перед вставкой

Пример с обработкой ошибок (PostgreSQL):

INSERT INTO users (email, username) 
VALUES ('test@example.com', 'test_user')
ON CONFLICT (email) DO NOTHING;

При тестировании проверяю не только успешность выполнения запроса, но и фактическое наличие данных в таблице с ожидаемыми значениями.