DDL, DML, DCL, TCL
SQL-команды делятся на четыре группы по тому, с чем они работают. Это терминология, которая часто встречается на собеседованиях.
| Группа | Расшифровка | Что делает | Примеры команд |
|---|---|---|---|
| DDL | Data Definition Language | меняет структуру базы | CREATE, ALTER, DROP |
| DML | Data Manipulation Language | меняет/читает данные | SELECT, INSERT, UPDATE, DELETE |
| DCL | Data Control Language | управляет доступом | GRANT, REVOKE |
| TCL | Transaction 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-го слоя).
• почему DDL рискованнее DML (если дошёл до 2-го слоя).