SQL INSERT INTO
INSERT INTO в SQL: добавление одной и нескольких строк в таблицу, вставка без указания столбцов, частые ошибки.
INSERT INTO — оператор SQL для добавления новых строк в таблицу базы данных. Без него таблица остаётся пустой.
Синтаксис
Базовая форма: перечислить столбцы и соответствующие им значения.
INSERT INTO имя_таблицы (столбец1, столбец2, ...) VALUES (значение1, значение2, ...);
Правило. Строки и даты заключают в одинарные кавычки (
'значение'). Числа пишут без кавычек. Порядок значений должен точно совпадать с порядком столбцов.
Пример 1: вставка одной строки
Демо-таблица persons уже существует в песочнице. Добавим ещё одну запись и сразу выберем всё, чтобы убедиться:
INSERT INTO persons (name, birth_date, phone)
VALUES ('Anna Schmidt', '2000-03-20', '0300-112233');
SELECT * FROM persons;
Результат:
+----+------------------+------------+-------------+ | id | name | birth_date | phone | +----+------------------+------------+-------------+ | 1 | Peter Wilson | 1990-07-15 | 0711-020361 | | 2 | Carrie Simpson | 1995-05-01 | 0251-031259 | | 3 | Victoria Ashworth| 1996-10-17 | 0695-346721 | | 4 | George Bailey | 1993-03-05 | 0897-034214 | | 5 | Norman Bates | 1999-08-25 | 0522-556721 | | 6 | Anna Schmidt | 2000-03-20 | 0300-112233 | +----+------------------+------------+-------------+
Пример 2: вставка нескольких строк за один запрос
Вместо нескольких отдельных INSERT можно перечислить строки через запятую — это быстрее и удобнее:
-- Создаём изолированную таблицу для демонстрации
CREATE TABLE contacts_demo (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
city TEXT
);
INSERT INTO contacts_demo (id, name, city) VALUES
(1, 'Alice', 'Москва'),
(2, 'Bob', 'Берлин'),
(3, 'Carlos', 'Мадрид');
SELECT * FROM contacts_demo;
Результат:
+----+--------+--------+ | id | name | city | +----+--------+--------+ | 1 | Alice | Москва | | 2 | Bob | Берлин | | 3 | Carlos | Мадрид | +----+--------+--------+
Пример 3: вставка без явного списка столбцов
Если вы перечислите значения для всех столбцов подряд, список столбцов можно опустить. Но порядок должен точно совпадать с определением таблицы:
-- Только иллюстрация — не запускать как самодостаточный блок
-- INSERT INTO persons VALUES (7, 'Ivan Petrov', '1988-11-05', '0900-445566');
-- Значения: id, name, birth_date, phone — точно в порядке столбцов таблицы
Рекомендация. Всегда указывайте список столбцов явно — это защищает запрос от поломки при изменении структуры таблицы.
Частые ошибки
Ошибка | Причина |
Число столбцов ≠ числу значений | Несоответствие количества — ошибка синтаксиса |
Дата без кавычек |
|
Нарушение NOT NULL | Попытка вставить |
Дублирование первичного ключа | Два ряда с одинаковым |
Коротко
INSERT INTO таблица (столбцы) VALUES (значения);— базовая форма.- Несколько строк вставляют одним запросом, перечисляя кортежи значений через запятую.
- Строки и даты — в одинарных кавычках, числа — без.
- Всегда указывайте список столбцов явно — это сделает код устойчивым к изменениям схемы.