Что такое DML в SQL?

Ответ

DML (Data Manipulation Language) — это подмножество SQL, предназначенное для операций с данными внутри таблиц базы данных. В отличие от DDL (Data Definition Language), который работает со структурой БД, DML манипулирует содержимым.

Основные команды DML:

  • SELECT — выборка данных.
  • INSERT — добавление новых записей.
  • UPDATE — изменение существующих записей.
  • DELETE — удаление записей.

Примеры использования:

-- Вставка новой строки
INSERT INTO users (name, email) VALUES ('Иван', 'ivan@example.com');

-- Обновление данных по условию
UPDATE users SET status = 'active' WHERE last_login > '2024-01-01';

-- Удаление записей
DELETE FROM logs WHERE created_at < NOW() - INTERVAL '30 days';

-- Выборка с фильтрацией и сортировкой
SELECT id, name, email FROM users WHERE country = 'RU' ORDER BY name;

Ключевой момент: DML-операции (INSERT, UPDATE, DELETE) могут быть отменены с помощью ROLLBACK в рамках транзакции, если СУБД поддерживает транзакционность.

Ответ 18+ 🔞

Давай разберём эту штуку, которая данные в базе шевелит, как будто они живые. DML, блядь, Data Manipulation Language — это типа такой набор команд в SQL, чтобы не со структурой таблиц возиться (это уже другая песня, DDL), а конкретно с содержимым, с этими самыми записями, которые там лежат, как свёрнутые ёжики.

Чем он там, этот DML, промышляет:

  • SELECT — это святое, выборка. Достаём данные, смотрим на них.
  • INSERT — впихиваем новые записи. Как в переполненный автобус, только аккуратнее.
  • UPDATE — меняем то, что уже есть. Исправляем косяки, обновляем статусы, жизнь налаживаем.
  • DELETE — вычёркиваем нахуй ненужное. Чистим, так сказать, авгиевы конюшни.

Смотри, как это в жизни выглядит:

-- Подкидываем нового юзера в табличку
INSERT INTO users (name, email) VALUES ('Иван', 'ivan@example.com');

-- Апдейтим статусы тем, кто недавно заходил. Активность — наше всё!
UPDATE users SET status = 'active' WHERE last_login > '2024-01-01';

-- Выносим старые логи, которые уже месяц как плесенью покрылись
DELETE FROM logs WHERE created_at < NOW() - INTERVAL '30 days';

-- И, конечно, выбираем кого надо, фильтруем, сортируем
SELECT id, name, email FROM users WHERE country = 'RU' ORDER BY name;

А вот самый сок, блядь, запомни: операции INSERT, UPDATE, DELETE — они часто в транзакциях живут. Это значит, что если ты накосячил и крикнул «ой, всё!», можно отыграть назад командой ROLLBACK. Ну, если твоя СУБД, конечно, не какая-нибудь мартышлюшка и транзакции поддерживает. Спасение, ёпта!