Ответ
Да, есть опыт написания 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;
При тестировании проверяю не только успешность выполнения запроса, но и фактическое наличие данных в таблице с ожидаемыми значениями.