Какие основные категории команд SQL существуют?

Ответ

Команды 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) решают, какие ящики окончательно уехали со склада. Всё просто, как три копейки, блядь.