CRUD-операции и язык манипуляции данными (DML)
Разработчику
Аналитику
Тестировщику
Архитектору
Инженеру
CRUD и DML
После того как таблицы созданы (DDL), с данными работают команды DML. В приложениях и документации те же четыре действия называют CRUD (Create, Read, Update, Delete).
| Буква CRUD | Смысл в приложении | Команда SQL |
|---|---|---|
| Create | Добавить запись | INSERT |
| Read | Прочитать данные | SELECT |
| Update | Изменить запись | UPDATE |
| Delete | Удалить запись | DELETE |
Не путайте с DDL:
CREATE TABLE,CREATE INDEX— создание объектов схемы, а не строк. В SQL нет оператораREAD; чтение — черезSELECT.
Синтаксис выборки: Оператор SELECT. Ниже — по одной операции с примерами на таблице users:
| id | name | age | |
|---|---|---|---|
| 1 | Том | 25 | tom@mail.com |
| 2 | Артур | 30 | arthur@mail.com |
Create — добавление (INSERT)
Play ITЗагрузка интерактивного демо…
Новая строка — команда INSERT (в CRUD это Create, не CREATE TABLE):
INSERT INTO table_name (column1, column2)
VALUES (value1, value2);
Шаблон построения:
INSERT INTO Куда? (Колонки)
VALUES (Значения);
Пример:
INSERT INTO users (name, age, email)
VALUES ('Мария', 22, 'maria@yandex.ru');
В итоге мы получим новую строку:
| id | name | age | |
|---|---|---|---|
| 1 | Том | 25 | tom@mail.com |
| 2 | Артур | 30 | arthur@mail.com |
| 3 | Мария | 22 | maria@yandex.ru |
INSERT INTO <таблица> (<столбец_1>, <столбец_2>, ..., <столбец_n>)
VALUES (<значение_1>, <значение_2>, ..., <значение_n>);
<таблица>— имя целевой таблицы.<столбец_i>— имя колонки, в которую записывается значение.<значение_i>— литерал, соответствующий типу данных столбца.
Альтернативный вариант (для всех столбцов в порядке их определения):
INSERT INTO <таблица>
VALUES (<значение_1>, <значение_2>, ..., <значение_n>);
Read — чтение (SELECT)
Play ITЗагрузка интерактивного демо…
Чтение в SQL — только SELECT:
SELECT column1, column2 FROM table_name
WHERE condition;
Шаблон построения:
SELECT Колонки FROM Таблица
WHERE Условие;
Пример:
SELECT * FROM users;
* это выбор всех колонок, результат – будут отображены все строки таблицы. Если мы, к примеру, хотим получить только имена и адреса электронной почты, то:
SELECT name, email FROM users;
Если хотим добавить условие, к примеру, старше 25 лет:
SELECT * FROM users WHERE age > 25;
SELECT <выборка>
FROM <таблица>
[WHERE <условие>]
[ORDER BY <столбец> [ASC | DESC]]
[LIMIT <количество>];
<выборка>— перечень столбцов (name, email) или*для всех.<таблица>— источник данных.[WHERE <условие>]— фильтрация строк (необязательно).[ORDER BY ...]— сортировка результата (необязательно).[LIMIT ...]— ограничение числа возвращаемых строк (необязательно).
Примеры выборки:
SELECT * FROM users;
SELECT name, email FROM users WHERE age > 18;
Update — изменение (UPDATE)
Play ITЗагрузка интерактивного демо…
Обновление данных работает с существующими записями, путем выполнения команды UPDATE:
UPDATE table_name
SET column1 = new_value1, column2 = new_value2
WHERE condition;
Шаблон построения:
UPDATE Таблица
SET Колонка = Значение
WHERE Условие;
Пример:
UPDATE users
SET email = 'tom_new@mail.com'
WHERE id = 1;
После выполнения, у Тома (так как у него Id = 1) изменится запись в столбце email.
Опасно: если забыть WHERE, то обновятся все строки. Так можно сломать базу.
UPDATE <таблица>
SET <столбец_1> = <новое_значение_1>[, <столбец_2> = <новое_значение_2>, ...]
WHERE <условие>;
<таблица>— имя изменяемой таблицы.<столбец_i> = <новое_значение_i>— пары "поле–значение" для обновления.<условие>— обязательное выражение, определяющее, какие строки изменять.
Delete — удаление (DELETE)
Play ITЗагрузка интерактивного демо…
Команда DELETE удаляет записи из таблицы:
DELETE FROM table_name
WHERE condition;
Шаблон построения:
DELETE FROM ТАБЛИЦА
WHERE УСЛОВИЕ;
Пример:
DELETE FROM users
WHERE id = 3;
После такой операции, удалится полностью строка с данными Марии.
Опасно: если забыть WHERE, удалятся все строки таблицы.
DELETE FROM <таблица>
WHERE <условие>;
<таблица>— имя таблицы, из которой удаляются строки.<условие>— выражение, определяющее, какие строки подлежат удалению.
- Вставьте три записи через
INSERT. - Выберите их
SELECTс явным списком столбцов. - Обновите одну строку:
UPDATE … WHERE id = …. - Удалите одну строку:
DELETE … WHERE id = ….
Перед каждым изменяющим запросом проверьте WHERE отдельным SELECT.
См. также
- Оператор SELECT — синтаксис и стиль
- Транзакции
- Практикум shop_data
- SQL — реальные кейсы —
INSERT,UPDATE,DELETEи параметризованные запросы с разбором