Ответ
Для создания записи в SQL используется оператор INSERT. Рассмотрим различные подходы.
1. Базовый SQL-запрос:
-- Вставка одной записи
INSERT INTO users (name, email, age, created_at)
VALUES ('Иван Иванов', 'ivan@example.com', 30, CURRENT_TIMESTAMP);
-- Вставка нескольких записей за один запрос
INSERT INTO users (name, email, age)
VALUES
('Мария Петрова', 'maria@example.com', 25),
('Алексей Сидоров', 'alex@example.com', 35);
2. Использование ORM (на примере Django):
# Способ 1: create()
User.objects.create(
name='Иван Иванов',
email='ivan@example.com',
age=30
)
# Способ 2: save() экземпляра
user = User(name='Мария Петрова', email='maria@example.com', age=25)
user.save()
# Способ 3: bulk_create() для массовой вставки
users = [
User(name='User1', email='user1@example.com', age=20),
User(name='User2', email='user2@example.com', age=22)
]
User.objects.bulk_create(users)
3. Важные аспекты и проверки:
-- Проверка ограничений перед вставкой
-- NOT NULL: все указанные поля должны иметь значения
-- UNIQUE: значения должны быть уникальными
-- FOREIGN KEY: значение должно существовать в связанной таблице
-- CHECK: значение должно удовлетворять условию
-- Пример с обработкой конфликтов (PostgreSQL)
INSERT INTO users (id, name, email)
VALUES (1, 'Иван', 'ivan@example.com')
ON CONFLICT (id) DO UPDATE
SET name = EXCLUDED.name, email = EXCLUDED.email;
Best practices:
- Всегда явно указывайте имена колонок
- Используйте параметризованные запросы для предотвращения SQL-инъекций
- Проверяйте возвращаемые значения (количество затронутых строк)
- Обрабатывайте возможные исключения (дубликаты, нарушение ограничений)