На какие основные группы делятся команды SQL?

Ответ

Команды SQL стандартно классифицируются на четыре группы по их назначению:

  1. DDL (Data Definition Language) — язык определения данных.

    • Назначение: Создание, изменение и удаление структуры объектов базы данных (таблиц, индексов, схем).
    • Ключевые команды: CREATE, ALTER, DROP, TRUNCATE.
    • Пример:
      CREATE TABLE Employees (
          id INT PRIMARY KEY,
          name VARCHAR(100) NOT NULL,
          department_id INT
      );
  2. DML (Data Manipulation Language) — язык управления данными.

    • Назначение: Операции с данными внутри таблиц: выборка, вставка, обновление, удаление.
    • Ключевые команды: SELECT, INSERT, UPDATE, DELETE.
    • Пример:
      INSERT INTO Employees (id, name) VALUES (1, 'Иван Петров');
  3. DCL (Data Control Language) — язык управления доступом.

    • Назначение: Управление правами и разрешениями пользователей и ролей.
    • Ключевые команды: GRANT (предоставить права), REVOKE (отозвать права).
  4. 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 и давать права на чтение всем подряд, включая ботов. Это как путать отвёртку с молотком — вроде инструменты, но результат может быть охуенно печальным. Группы помогают не выстрелить себе в ногу, а если и выстрелил — то хотя бы знать, какой палец был на курке.