Карта / SQL / DDL, DML, DCL, TCL

DDL, DML, DCL, TCL

SQL-команды делятся на четыре группы по тому, с чем они работают. Это терминология, которая часто встречается на собеседованиях.

ГруппаРасшифровкаЧто делаетПримеры команд
DDLData Definition Languageменяет структуру базыCREATE, ALTER, DROP
DMLData Manipulation Languageменяет/читает данныеSELECT, INSERT, UPDATE, DELETE
DCLData Control Languageуправляет доступомGRANT, REVOKE
TCLTransaction Control Languageуправляет транзакциямиCOMMIT, ROLLBACK
-- DDL: создать таблицу
CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(100));

-- DML: работать с данными
INSERT INTO users (name) VALUES ('Артур');

-- DCL: дать права
GRANT SELECT ON users TO readonly_user;

-- TCL: завершить транзакцию
COMMIT;
Копнуть глубже

Почему важно различать DDL и DML на практике. DDL-команды (CREATE, ALTER, DROP) обычно необратимы без бэкапа и часто автоматически коммитятся — DROP TABLE нельзя откатить через ROLLBACK, как обычный DELETE. Это делает DDL-операции более рискованными и требующими большей осторожности, особенно в проде.

Большинство дня разработчика — DML. SELECT/INSERT/UPDATE/DELETE пишутся постоянно, DDL обычно идёт через миграции (см. тему «Миграции (Flyway)»), а не вручную в проде, DCL — обычно зона ответственности DBA/администратора, а не разработчика.

🎤 Закрыл тему, если можешь объяснить:
• четыре группы SQL-команд и по одному примеру на каждую;
• почему DDL рискованнее DML (если дошёл до 2-го слоя).