Как создать запись (строку) в базе данных SQL?

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

Ответ

Для создания записи в 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-инъекций
  • Проверяйте возвращаемые значения (количество затронутых строк)
  • Обрабатывайте возможные исключения (дубликаты, нарушение ограничений)