До сих пор ты только читал данные. Перейдём к записи. INSERT INTO добавляет строку: ты перечисляешь столбцы в скобках, а затем соответствующие значения после VALUES, в том же порядке. Явно называть столбцы - хорошая привычка: запрос остаётся корректным, даже если структура таблицы изменится.
SQL
INSERT INTO books (id, title, author, genre, year, price)
VALUES (8, 'Ravage', 'Barjavel', 'sf', 1943, 7.5);
SELECT * FROM books WHERE id = 8;
Добавляем 8-ю книгу, затем проверяем
UPDATE изменяет существующие строки: после SET ты указываешь столбец и его новое значение; после WHERE - какие строки затронуты. Этот WHERE критически важен: именно он нацеливает изменение.
SQL
UPDATE books SET price = 8.9 WHERE id = 8;
SELECT title, price FROM books WHERE id = 8;
Цена Ravage меняется с 7.5 на 8.9
DELETE FROM удаляет строки. Как и в случае с UPDATE, конструкция WHERE указывает строки для удаления; остальные остаются нетронутыми. Удалим книгу, которую только что добавили, и проверим количество.
SQL
DELETE FROM books WHERE id = 8;
SELECT COUNT(*) FROM books;
Снова 7 строк: исходная таблица целаSQL
BEGIN;
DELETE FROM books WHERE genre = 'sf';
SELECT COUNT(*) FROM books;
ROLLBACK;
SELECT COUNT(*) FROM books;
3 строки во время транзакции, 7 после ROLLBACK
Проверка знаний
Убедись, что запомнил ключевые моменты этого урока.
Что делает запрос DELETE FROM books;, выполненный без WHERE?
Удаляет первую строку таблицы
Удаляет все строки таблицы
Вызывает синтаксическую ошибку
Какой запрос меняет цену книги с id 3 на 6.9?
UPDATE books SET price = 6.9 WHERE id = 3;
INSERT INTO books SET price = 6.9;
SELECT price = 6.9 FROM books WHERE id = 3;
Для чего в транзакции нужен ROLLBACK?
Чтобы зафиксировать изменения окончательно
Чтобы отменить все изменения, сделанные после BEGIN