Баннер мобильный (3) Пройти тест

Группы операторов SQL: что такое DDL, DML, DCL и TCL — и зачем они нужны

Расшифровываем все аббревиатуры, чтобы грамотно работать с данными

Разбор

8 декабря 2025

Поделиться

Скопировано
Группы операторов SQL: что такое DDL, DML, DCL и TCL — и зачем они нужны

Содержание

    Если вы работаете с базами данных, рано или поздно столкнетесь с такими аббревиатурами: 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
    Создает таблицу, индекс или другую структуру
    ALTER
    Меняет существующую структуру
    DROP
    Удаляет структуру полностью
    TRUNCATE
    Очищает все данные из таблицы, но оставляет ее
    RENAME
    Переименовывает объект

    Примеры

    Создание таблицы сотрудников:

    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
    Добавляет новую запись
    UPDATE
    Изменяет существующую запись
    DELETE
    Удаляет запись по условию

    Примеры

    Добавление сотрудника:

    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
    Дает права
    REVOKE
    Забирает права.

    Примеры

    Разрешить пользователю читать таблицу:

    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
    Начинает транзакцию
    COMMIT
    Фиксирует изменения
    ROLLBACK
    Откатывает все, что было после BEGIN
    SAVEPOINT
    Точка промежуточного сохранения.

    Пример

    BEGIN;
    -- Перевод сотрудника из «Маркетинга» в «Аналитику» UPDATE employees SET department = 'Аналитика' WHERE name = 'Анна Петрова';
    -- Удаление уволенного сотрудника DELETE FROM employees WHERE name = 'Борис Иванов';
    COMMIT; -- Сохраняем, если все прошло успешно

    Если где-то ошибка — достаточно ROLLBACK, и база вернется в исходное состояние.

    Сравнение: таблица для быстрого ориентира

    DDLData Definition LanguageCREATE,ALTER,DROPСтруктуру БД
    DMLData Manipulation LanguageINSERT,UPDATE,DELETEРаботу с данными
    DQLData Query LanguageSELECTВыборку данных
    DCLData Control LanguageGRANT,REVOKEПрава доступа
    TCLTransaction Control LanguageBEGIN,COMMIT,ROLLBACKЦелостность изменений

    Частые ошибки и лайфхаки

    • Забыли WHERE в DELETE → потеряли все данные.
      Всегда сначала проверяйте условие через SELECT.
    • Меняете структуру рабочего приложения, не сделав бэкапа → приложение упало.
      Тестируйте DDL на копии базы.
    • Даете ALL PRIVILEGES каждому → данные в открытом доступе.
      Используйте роли и минимальные права.
    • Оборачивайте связанные операции в транзакцию — это спасет от частичных изменений.

    Коротко об операторах SQL: что запомнить

    • DDL — строит «каркас» БД: таблицы, индексы, схемы.
    • DML — работает с данными: добавляет, меняет, удаляет строки.
    • DQL — только читает (SELECT).
    • DCL — управляет правами: кто и что может делать.
    • TCL — гарантирует, что связанные операции выполняются как единое целое.

    Эти пять групп — основа грамотной работы с SQL. Неважно, используете ли вы PostgreSQL, MySQL или другую СУБД: логика остается одинаковой. А если вы понимаете логику, то можно с уверенностью работать с БД без страха сломать production.

    Разбор

    Поделиться

    Скопировано
    0 комментариев
    Комментарии