Команды 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;
Такая форма используется для копирования или резервирования данных.
Ошибки при вставке данных
- Попытка добавить запись с уже существующим PRIMARY KEY.
- Нарушение ограничения NOT NULL.
- Несовпадение типов данных (например, попытка записать текст в числовое поле).
- Отсутствие внешней ссылки при 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 с тем же условием.
Ошибки при обновлении
- Отсутствие
WHERE— изменяются все записи. - Нарушение ограничений (
UNIQUE,NOT NULL,FOREIGN KEY). - Попытка изменить тип данных (например, текст вместо числа).
Сравнение INSERT и UPDATE
| Команда | Назначение | Пример |
|---|---|---|
| INSERT INTO | Добавляет новые записи в таблицу | INSERT INTO Students (...) VALUES (...); |
| UPDATE | Изменяет существующие данные | UPDATE Students SET group_id = 103 WHERE student_id = 2; |
Практические советы
-
Всегда проверяйте условие
WHERE.Ошибка может привести к массовому изменению всех строк.
-
Используйте транзакции при работе с большим количеством данных:
sql BEGIN; UPDATE Students SET group_id = 103 WHERE group_id = 101; COMMIT; -
Следите за ограничениями целостности — перед вставкой или обновлением убедитесь, что ссылки (внешние ключи) существуют.
-
Проверяйте результат после изменений:
sql SELECT * FROM Students WHERE group_id = 103;
Итоги
INSERT INTOдобавляет новые строки в таблицу;UPDATEизменяет уже существующие данные;- Оба оператора относятся к языку DML (Data Manipulation Language);
- Для безопасной работы необходимо использовать условия
WHEREи учитывать ограничения таблиц.
Эти команды — основа всех операций с содержимым базы данных.
Следующим шагом в изучении SQL станет команда DELETE и работа с выборками с помощью SELECT.