Собесов

DDL, DML, DCL, TCL: подъязыки SQL

SQLСемантика SQLЛёгкаяJunior

Условие

Какие команды относятся к DML и DDL? Какие ещё подъязыки SQL существуют?

Решение

Подъязык Расшифровка Команды Что делает
DDL Data Definition Language CREATE, ALTER, DROP, TRUNCATE, RENAME Изменяет структуру (схему)
DML Data Manipulation Language INSERT, UPDATE, DELETE (часто SELECT) Изменяет данные
DQL Data Query Language SELECT Запрашивает данные
DCL Data Control Language GRANT, REVOKE Управление правами
TCL Transaction Control Language COMMIT, ROLLBACK, SAVEPOINT Управление транзакциями

TRUNCATE vs DELETE

Вопрос-ловушка: куда отнести TRUNCATE?

DELETE TRUNCATE
Подъязык DML DDL (в большинстве СУБД)
Откатывается ли Да (внутри транзакции) В PostgreSQL — да, в MySQL — нет
Скорость Медленнее (по строкам, журнал) Быстро (метаданные)
Триггеры Срабатывают Обычно не срабатывают
WHERE Да Нет
Сбрасывает auto_increment Нет Да

Что относится куда

-- DDL
CREATE TABLE t (id INT);
ALTER TABLE t ADD COLUMN name TEXT;
DROP TABLE t;
TRUNCATE TABLE t;
 
-- DML
INSERT INTO t VALUES (1);
UPDATE t SET name = 'a';
DELETE FROM t WHERE id = 1;
 
-- DQL
SELECT * FROM t;
 
-- DCL
GRANT SELECT ON t TO analyst;
REVOKE INSERT ON t FROM bot;
 
-- TCL
BEGIN;
UPDATE t SET name = 'b';
SAVEPOINT s1;
ROLLBACK TO s1;
COMMIT;

Атомарность DDL

В PostgreSQL DDL транзакционен: CREATE TABLE внутри транзакции откатывается при ROLLBACK. В MySQL — нет: DDL автоматически коммитит транзакцию.

Подводные камни

  1. SELECT иногда относят к DML, иногда к DQL — на собеседовании уточните, что имеется в виду.
  2. TRUNCATE часто называют DML, но это DDL: меняет метаданные/файлы напрямую.
  3. MERGE (UPSERT) — относится к DML.
  4. Привилегии в DCL — нужны DBA-роли. Аналитику обычно не дают GRANT.

Эталонный ответ

DML: INSERT, UPDATE, DELETE (иногда SELECT). DDL: CREATE, ALTER, DROP, TRUNCATE. Также: DQL (SELECT), DCL (GRANT/REVOKE), TCL (COMMIT/ROLLBACK).

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти