Если вы работаете с базами данных, рано или поздно столкнетесь с такими аббревиатурами: DDL, DML, DCL, TCL — и иногда DQL. На первый взгляд, просто набор букв. На самом деле это группы операторов SQL, на которых строится вся работа с данными.
Понимание этих групп помогает не просто писать запросы, а думать структурно: что вы меняете — структуру таблицы или сами данные? Кто имеет право на эти изменения? А если что-то пошло не так — можно ли все откатить?
В этой статье разберем каждую группу с примерами, где значения — на русском, а синтаксис — по стандартам SQL.
Почему SQL делится на группы операторов?
SQL (Structured Query Language) — декларативный язык. Вы говорите базе: «Сделай вот так», а не «Выполни шаг 1, потом шаг 2…». Но чтобы не путаться в десятках команд, их разделили на логические категории:
- DDL — строит «каркас» базы (таблицы, индексы);
- DML — работает с содержимым (добавляет, меняет, удаляет строки);
- DQL — только читает данные;
- DCL — управляет правами доступа;
- TCL — гарантирует, что связанные операции выполнятся «все или ничего».
Это как в строительстве: DDL — чертеж и фундамент, DML — мебель и люди внутри, DCL — замки на дверях, TCL — страховка ваших действий.
DDL (Data Definition Language) — язык определения структуры
DDL — это команды DDL, которые создают, изменяют или удаляют объекты базы данных. Они не трогают сами данные — только то, где эти данные хранятся.
Основные команды
Примеры
Создание таблицы сотрудников:
CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, department VARCHAR(50), hire_date DATE );⌄
Добавление email:
ALTER TABLE employees ADD email VARCHAR(100);
Удаление всей таблицы:
DROP TABLE employees;
Важно: большинство СУБД автоматически фиксируют DDL-запросы. Откатить их через ROLLBACK нельзя.
DML (Data Manipulation Language) — язык манипуляции данными
DML — это операторы DML, с помощью которых вы работаете с содержимым таблиц: добавляете новых сотрудников, меняете отделы, увольняете.
Основные команды
Примеры
Добавление сотрудника:
INSERT INTO employees (id, name, department, hire_date) VALUES (1, 'Анна Петрова', 'Маркетинг', '2024-03-15');
Перевод в другой отдел:
UPDATE employees SET department = 'Продажи' WHERE name = 'Анна Петрова';
Удаление уволенных:
DELETE FROM employees WHERE department = 'Временные';
Не забывайте использовать ключевые слова WHERE в UPDATE или DELETE. Иначе изменения коснутся всех строк.
DQL (Data Query Language) — язык запросов
Многие считают SELECT частью DML, но лучше выделять DQL отдельно — ведь он не меняет данные, а только запрашивает их.
Основная команда — SELECT
SELECT name, department FROM employees WHERE department = 'Продажи' ORDER BY name;
Этот запрос покажет всех сотрудников отдела «Продажи», отсортированных по имени.
WHERE, GROUP BY, JOIN, ORDER BY — это части SELECT, а не отдельные команды. Важно помнить: DQL — это только SELECT.
DCL (Data Control Language) — контроль доступа
DCL — это команды, которые решают, кто что может делать с вашими данными. Без этого — хаос и утечки.
Основные команды
Примеры
Разрешить пользователю читать таблицу:
GRANT SELECT ON employees TO analyst_ivan;
Разрешить вставку и обновление:
GRANT INSERT, UPDATE ON employees TO hr_team;
Отозвать все права:
REVOKE ALL PRIVILEGES ON employees FROM temp_user;
Следуйте принципу наименьших привилегий: давайте только те права, которые действительно нужны.
TCL (Transaction Control Language) — управление транзакциями
Представьте: вы переводите деньги с одного счета на другой. Если списание прошло, а зачисление — нет, возникает дыра. TCL решает эту проблему.
Основные команды
Пример
BEGIN; -- Перевод сотрудника из «Маркетинга» в «Аналитику» UPDATE employees SET department = 'Аналитика' WHERE name = 'Анна Петрова'; -- Удаление уволенного сотрудника DELETE FROM employees WHERE name = 'Борис Иванов'; COMMIT; -- Сохраняем, если все прошло успешно
Если где-то ошибка — достаточно ROLLBACK, и база вернется в исходное состояние.
Сравнение: таблица для быстрого ориентира
| DDL | Data Definition Language | CREATE,ALTER,DROP | Структуру БД |
| DML | Data Manipulation Language | INSERT,UPDATE,DELETE | Работу с данными |
| DQL | Data Query Language | SELECT | Выборку данных |
| DCL | Data Control Language | GRANT,REVOKE | Права доступа |
| TCL | Transaction Control Language | BEGIN,COMMIT,ROLLBACK | Целостность изменений |
Частые ошибки и лайфхаки
- Забыли WHERE в DELETE → потеряли все данные.
Всегда сначала проверяйте условие через SELECT. - Меняете структуру рабочего приложения, не сделав бэкапа → приложение упало.
Тестируйте DDL на копии базы. - Даете ALL PRIVILEGES каждому → данные в открытом доступе.
Используйте роли и минимальные права. - Оборачивайте связанные операции в транзакцию — это спасет от частичных изменений.
Коротко об операторах SQL: что запомнить
- DDL — строит «каркас» БД: таблицы, индексы, схемы.
- DML — работает с данными: добавляет, меняет, удаляет строки.
- DQL — только читает (SELECT).
- DCL — управляет правами: кто и что может делать.
- TCL — гарантирует, что связанные операции выполняются как единое целое.
Эти пять групп — основа грамотной работы с SQL. Неважно, используете ли вы PostgreSQL, MySQL или другую СУБД: логика остается одинаковой. А если вы понимаете логику, то можно с уверенностью работать с БД без страха сломать production.
