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