Перейти к содержанию

Команды INSERT INTO, UPDATE

Введение

После создания таблиц с помощью команд DDL (например, CREATE TABLE), следующим шагом становится работа с данными — добавление, изменение и обновление записей.

Эти операции выполняются с помощью подъязыка DML (Data Manipulation Language) — языка манипулирования данными.

В данной лекции рассматриваются две базовые команды:

  • INSERT INTO — добавление данных в таблицу;
  • UPDATE — изменение уже существующих записей.

Обе команды являются основой для наполнения базы данных и её последующего обновления.


Команда INSERT INTO

Назначение

Команда INSERT INTO используется для добавления новых строк (записей) в таблицу.

При этом можно вставлять как одну запись, так и сразу несколько.

Общий синтаксис

INSERT INTO имя_таблицы (список_столбцов)
VALUES (список_значений);
  • имя_таблицы — название таблицы, куда добавляются данные;
  • список_столбцов — перечисление полей, которые будут заполнены;
  • список_значений — значения, соответствующие каждому столбцу.

Пример вставки одной записи

INSERT INTO Students (student_id, full_name, group_id, birth_date)
VALUES (1, 'Иванов Иван', 101, '2005-02-15');

В таблицу Students добавляется новая строка с указанными значениями.

Пример вставки нескольких записей

INSERT INTO Students (student_id, full_name, group_id, birth_date)
VALUES
(2, 'Петров Пётр', 101, '2004-12-20'),
(3, 'Сидорова Анна', 102, '2005-07-10'),
(4, 'Ким Алексей', 102, '2004-11-05');

За один запрос добавляются сразу несколько студентов.

Добавление данных во все столбцы (без указания полей)

Если заполняются все поля таблицы в правильном порядке, список столбцов можно не указывать:

INSERT INTO Groups
VALUES (101, 'ИС-21', 'Информационные системы');

Важно: порядок значений должен полностью соответствовать структуре таблицы.

Добавление данных из другой таблицы

Можно вставлять данные не вручную, а результатом запроса SELECT:

INSERT INTO ArchiveStudents (student_id, full_name, group_id)
SELECT student_id, full_name, group_id
FROM Students
WHERE group_id = 102;

Такая форма используется для копирования или резервирования данных.

Ошибки при вставке данных

  1. Попытка добавить запись с уже существующим PRIMARY KEY.
  2. Нарушение ограничения NOT NULL.
  3. Несовпадение типов данных (например, попытка записать текст в числовое поле).
  4. Отсутствие внешней ссылки при FOREIGN KEY (например, ссылка на несуществующую группу).

Команда UPDATE

Назначение

Команда UPDATE используется для изменения существующих данных в таблице.

Она позволяет обновить одно или несколько полей у выбранных записей.

Общий синтаксис

UPDATE имя_таблицы
SET имя_столбца = новое_значение [, ...]
[WHERE условие];
  • SET определяет, какие поля изменяются;
  • WHERE задаёт условие отбора записей, которые нужно изменить.

Без WHERE будут изменены все записи таблицы, поэтому его необходимо указывать осторожно!

Пример обновления одной записи

UPDATE Students
SET group_id = 103
WHERE student_id = 2;

У студента с ID = 2 изменяется номер группы.

Пример обновления нескольких полей

UPDATE Students
SET full_name = 'Иванов Илья Сергеевич', group_id = 104
WHERE student_id = 1;

Можно изменять сразу несколько столбцов в одной команде.

Пример массового обновления

UPDATE Students
SET group_id = 105
WHERE group_id = 101;

Все студенты, ранее состоявшие в группе 101, теперь будут относиться к группе 105.

Использование выражений в UPDATE

SQL позволяет присваивать не только константы, но и выражения:

UPDATE Products
SET price = price * 1.10;

Увеличивает цену всех товаров на 10%.

Безопасное обновление

Чтобы избежать ошибок, можно предварительно проверить, какие записи будут изменены:

SELECT * FROM Students WHERE group_id = 101;

А затем применить UPDATE с тем же условием.

Ошибки при обновлении

  1. Отсутствие WHERE — изменяются все записи.
  2. Нарушение ограничений (UNIQUE, NOT NULL, FOREIGN KEY).
  3. Попытка изменить тип данных (например, текст вместо числа).

Сравнение INSERT и UPDATE

Команда Назначение Пример
INSERT INTO Добавляет новые записи в таблицу INSERT INTO Students (...) VALUES (...);
UPDATE Изменяет существующие данные UPDATE Students SET group_id = 103 WHERE student_id = 2;

Практические советы

  1. Всегда проверяйте условие WHERE.

    Ошибка может привести к массовому изменению всех строк.

  2. Используйте транзакции при работе с большим количеством данных:

    sql BEGIN; UPDATE Students SET group_id = 103 WHERE group_id = 101; COMMIT;

  3. Следите за ограничениями целостности — перед вставкой или обновлением убедитесь, что ссылки (внешние ключи) существуют.

  4. Проверяйте результат после изменений:

    sql SELECT * FROM Students WHERE group_id = 103;


Итоги

  • INSERT INTO добавляет новые строки в таблицу;
  • UPDATE изменяет уже существующие данные;
  • Оба оператора относятся к языку DML (Data Manipulation Language);
  • Для безопасной работы необходимо использовать условия WHERE и учитывать ограничения таблиц.

Эти команды — основа всех операций с содержимым базы данных.

Следующим шагом в изучении SQL станет команда DELETE и работа с выборками с помощью SELECT.