← Назад к вопросам

Какие операторы относят к DML

1.0 Junior🔥 81 комментариев
#Базы данных и SQL

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Операторы DML (Data Manipulation Language)

DML (**D**ata **M**anipulation **L**anguage) — это группа операторов в SQL, отвечающих за **манипуляцию данными** внутри таблиц базы данных. В отличие от DDL (Data Definition Language), который описывает структуру базы (создание и изменение таблиц), DML работает непосредственно с содержимым: добавляет, изменяет, удаляет и извлекает данные. Знание и грамотное использование DML критически важно для QA Engineer, так как тестирование функциональности приложений часто напрямую связано с проверкой корректности этих операций (создание пользователя, оформление заказа, обновление статуса и т.д.).

Основные операторы DML

Ядро DML составляют четыре ключевых оператора:

  • SELECT — оператор выборки данных. Это самый часто используемый оператор. Несмотря на то, что он не изменяет данные, он является частью DML, так как предназначен для манипуляции результатным набором данных.
  • INSERT — оператор добавления новых строк (записей) в таблицу.
  • UPDATE — оператор обновления существующих данных в таблице.
  • DELETE — оператор удаления строк из таблицы.

Подробный разбор и примеры

1. SELECT — Выборка данных

Используется для получения данных из одной или нескольких таблиц. Для QA это основной инструмент проверки состояния БД после выполнения тестовых сценариев.

-- Базовая выборка всех колонок из таблицы users
SELECT * FROM users;

-- Выборка конкретных колонок с условием
SELECT id, username, email FROM users WHERE is_active = true;

-- Соединение таблиц (JOIN) — часто используется для проверки сложной логики
SELECT o.order_id, u.username, o.total_amount
FROM orders o
INNER JOIN users u ON o.user_id = u.id
WHERE o.status = 'shipped';

2. INSERT — Вставка данных

Добавляет новые записи. В тестировании используется для подготовки тестовых данных (pre-conditions).

-- Вставка одной строки с указанием колонок
INSERT INTO products (name, price, category_id)
VALUES ('Wireless Mouse', 29.99, 5);

-- Вставка нескольких строк одновременно
INSERT INTO status_codes (code, description) VALUES
('200', 'OK'),
('404', 'Not Found'),
('500', 'Internal Server Error');

-- Вставка данных из результата другого запроса (полезно для копирования)
INSERT INTO archive_orders (id, total, date)
SELECT id, total_amount, created_at FROM orders
WHERE created_at < '2023-01-01';

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

Изменяет существующие записи. Критически важный оператор для тестирования бизнес-логики изменения состояния.

-- Обновление всех строк в таблице (ОСТОРОЖНО! Часто это ошибка)
UPDATE products SET last_updated = NOW();

-- Обновление с условием WHERE (правильный подход)
UPDATE users SET login_attempts = 0, is_blocked = false WHERE email = 'user@example.com';

-- Обновление на основе вычисления
UPDATE inventory SET quantity = quantity - 1 WHERE product_id = 101;

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

Удаляет строки из таблицы. Требует особой осторожности. Всегда должен использоваться с WHERE, если не стоит задачи очистить таблицу полностью.

-- Удаление конкретной строки
DELETE FROM sessions WHERE expires_at < NOW();

-- Удаление с использованием подзапроса
DELETE FROM log_messages
WHERE user_id IN (SELECT id FROM users WHERE banned = true);

-- Очистка всей таблицы (TRUNCATE — оператор DDL — обычно выполняется быстрее)
DELETE FROM temporary_cache;

Важные нюансы для QA Engineer

  • Транзакционность: Большинство DML-операций (кроме некоторых случаев с SELECT) выполняются в рамках транзакций. Это значит, что изменения можно подтвердить (COMMIT) или откатить (ROLLBACK). Понимание этого необходимо для тестирования сценариев отката операций.
  • Клауза WHERE: Подавляющее большинство UPDATE и DELETE, а также многие SELECT должны содержать точное условие WHERE. Её отсутствие в UPDATE/DELETE ведёт к изменениям во всей таблице, что является частой причиной серьёзных багов.
  • Валидация данных: DML-операции могут нарушать ограничения целостности (constraints), установленные на уровне БД: PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK. Часть работы QA — проверять, что приложение корректно обрабатывает ошибки от СУБД при попытке выполнить некорректный DML-запрос (например, вставка дубликата уникального ключа).
  • Производительность: Плохо написанные SELECT-запросы с JOIN на больших таблицах или UPDATE/DELETE без индексов в условии WHERE могут приводить к проблемам с производительностью, что также является объектом нефункционального тестирования.

Таким образом, для эффективного тестирования QA Engineer должен не только понимать, какие операторы относятся к DML, но и уметь грамотно их применять для подготовки данных, проверки результатов выполнения тестов и анализа состояния базы данных.

Какие операторы относят к DML | PrepBro