Ответ
Команды SQL стандартно классифицируются на четыре группы по их назначению:
-
DDL (Data Definition Language) — язык определения данных.
- Назначение: Создание, изменение и удаление структуры объектов базы данных (таблиц, индексов, схем).
- Ключевые команды:
CREATE,ALTER,DROP,TRUNCATE. - Пример:
CREATE TABLE Employees ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, department_id INT );
-
DML (Data Manipulation Language) — язык управления данными.
- Назначение: Операции с данными внутри таблиц: выборка, вставка, обновление, удаление.
- Ключевые команды:
SELECT,INSERT,UPDATE,DELETE. - Пример:
INSERT INTO Employees (id, name) VALUES (1, 'Иван Петров');
-
DCL (Data Control Language) — язык управления доступом.
- Назначение: Управление правами и разрешениями пользователей и ролей.
- Ключевые команды:
GRANT(предоставить права),REVOKE(отозвать права).
-
TCL (Transaction Control Language) — язык управления транзакциями.
- Назначение: Управление логическими блоками операций (транзакциями).
- Ключевые команды:
COMMIT(зафиксировать изменения),ROLLBACK(откатить изменения),SAVEPOINT(установить точку сохранения).
Почему это важно? Понимание групп помогает правильно применять команды, управлять транзакциями и безопасно администрировать базу данных.
Ответ 18+ 🔞
Давай разберём эту классификацию, а то некоторые думают, что SQL — это просто SELECT * FROM users и пошёл нахуй. На самом деле там целый театр с декорациями, актёрами и режиссёрами, которые друг другу мозги ебут.
Первая группа — DDL, или «Я тут главный по табуреткам».
Это когда ты приходишь на пустое поле и начинаешь строить хуй знает что. Создаёшь таблицы, меняешь их структуру или вообще отправляешь всё к ебене матери. Ключевые слова — CREATE, ALTER, DROP. Это команды-тяжеловесы, они меняют саму схему, каркас. Сделал хуйню — и вся логика приложения накрылась медным тазом. Вот пример, как создать таблицу:
CREATE TABLE Employees (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department_id INT
);
Создал — и всё, блядь, теперь у тебя есть Employees. Хочешь переименовать столбец? ALTER TABLE. Надоело вообще? DROP TABLE — и таблицы нет, как и твоей работы, если это продакшн. TRUNCATE — это особый вид издевательства, когда ты выкидываешь все данные из таблицы быстрее, чем DELETE, но структура остаётся. Жестоко, но эффективно.
Вторая группа — DML, или «Рабочие лошадки».
Вот это уже про данные. Таблицы есть, а теперь надо их наполнить жизнью, или, наоборот, выгрести из них всё дерьмо. SELECT — король и бог, им всё достают. INSERT — запихивают новое. UPDATE — поправляют старое. DELETE — стирают нахуй. Это то, с чем работают 95% времени.
INSERT INTO Employees (id, name) VALUES (1, 'Иван Петров');
Всё просто? А вот хуй там! Попробуй сделать UPDATE без WHERE — и ты обновишь всю таблицу, ебать ты король демократии. А DELETE без условия — это просто акт чистого вандализма. DML — это где происходят все волнения, ебать.
Третья группа — DCL, или «Кто тут имеет право?».
Это уже админская хуйня. Когда структура есть, данные бегают, пора решать, кому что можно. GRANT — даёт права, типа «вот тебе, Вася, можно читать эту таблицу, но не писать, а то опять наебнёшь». REVOKE — отбирает эти права обратно, как у провинившегося школьника линейку. Без этого — анархия, все лезут куда не надо, и потом кто-то случайно дропает продовую базу, потому что имел на это право. Пиздец и разбор полётов.
Четвёртая группа — TCL, или «А давайте откатимся?».
Самая важная группа для тех, кто не хочет проёбывать данные. Это управление транзакциями — логическими блоками операций. COMMIT говорит: «Всё, что я сделал с момента начала — это окей, сохраняем навеки». ROLLBACK — это паника-кнопка: «Всё, что я натворил — отменить, вернуть как было!». SAVEPOINT — это такая точка сохранения в игре, чтобы откатиться не полностью, а до какого-то момента. Без TCL любой твой косяк в DML становится перманентным. Сделал хуйню — и нет пути назад. А с TCL — сделал хуйню, охренел, кричишь ROLLBACK и живёшь дальше, как будто ничего и не было.
А почему это вообще важно, блядь?
Да потому что если ты не понимаешь, кто есть кто, ты будешь DROP-ать в продакшене, UPDATE-ить без WHERE и давать права на чтение всем подряд, включая ботов. Это как путать отвёртку с молотком — вроде инструменты, но результат может быть охуенно печальным. Группы помогают не выстрелить себе в ногу, а если и выстрелил — то хотя бы знать, какой палец был на курке.