Лекция 6. DML: INSERT, UPDATE, DELETE

1. Что такое DML?

DML (Data Manipulation Language) — это подмножество команд языка SQL, предназначенное для манипулирования (управления) данными внутри таблиц. Если DDL создает "каркас" базы данных, то DML наполняет этот каркас "жизнью" — данными.

Основные команды DML — это `INSERT`, `UPDATE` и `DELETE`.

2. INSERT — Добавление данных

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

Базовый синтаксис

Нужно указать таблицу и значения для всех столбцов в том порядке, в котором они были определены при создании таблицы.

Обратите внимание на `DEFAULT`. Мы используем его для столбца `reader_id`, так как он имеет тип `SERIAL` и его значение генерируется автоматически.

Указание столбцов

Хорошей практикой считается явное перечисление столбцов, в которые вы вставляете данные. Это делает запрос более читаемым и устойчивым к изменениям в структуре таблицы (например, к добавлению новых столбцов).

Вставка нескольких строк

Вы можете вставить несколько строк одним запросом, перечислив их через запятую.

Если таблица связана внешними ключами с другими таблицами, порядок вставки важен. Например, строку в Loans можно добавить только после того, как в базе уже есть нужные читатель и книга.

3. UPDATE — Обновление данных

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

Синтаксис

Ключевым элементом команды `UPDATE` является условие `WHERE`. Оно определяет, какие именно строки нужно обновить.

Можно обновить и запись о выдаче: например, когда читатель вернул книгу, вместо NULL вносится фактическая дата возврата.

Внимание! Если вы пропустите условие `WHERE`, команда `UPDATE` применится ко всем строкам в таблице. Это одна из самых частых и опасных ошибок при работе с SQL.

4. DELETE — Удаление данных

Команда `DELETE` используется для удаления строк из таблицы.

Синтаксис

Как и в случае с `UPDATE`, условие `WHERE` здесь критически важно.

Удаление строк, на которые ссылаются внешние ключи, может быть запрещено. Например, читателя с записями в Loans нельзя удалить обычным DELETE, пока эти выдачи существуют.

Внимание! Если вы пропустите условие `WHERE` в команде `DELETE`, вы удалите все данные из таблицы. Восстановить их после этого будет очень сложно или невозможно.


Практическое задание

Команды `INSERT`, `UPDATE` и `DELETE` применяются в объединенной Практике 3: после создания таблиц нужно наполнить библиотечную базу данных и выполнить несколько изменений.

Перейти к Практике 3: Реляционная схема библиотеки и начальные данные.