Какие основные группы команд (языков) существуют в SQL? Приведите примеры.

Ответ

В SQL принято выделять несколько групп команд, которые образуют его подмножества (языки):

  1. DML (Data Manipulation Language) — язык для манипуляции данными. Эти команды работают с содержимым таблиц.

    • SELECT: выборка данных.
      SELECT name, email FROM users WHERE age > 30;
    • INSERT: добавление новых записей.
      INSERT INTO users (name, age) VALUES ('Bob', 42);
    • UPDATE: обновление существующих данных.
      UPDATE users SET age = 43 WHERE name = 'Bob';
    • DELETE: удаление записей.
      DELETE FROM users WHERE name = 'Bob';
  2. DDL (Data Definition Language) — язык для определения данных. Эти команды управляют структурой базы данных и её объектами.

    • CREATE: создание объектов (таблиц, индексов).
      CREATE TABLE products (id SERIAL PRIMARY KEY, name VARCHAR(100), price INT);
    • ALTER: изменение структуры объекта.
      ALTER TABLE products ADD COLUMN description TEXT;
    • DROP: удаление объекта.
      DROP TABLE products;
  3. DCL (Data Control Language) — язык для управления доступом к данным.

    • GRANT: предоставление прав пользователям.
    • REVOKE: отзыв прав.
  4. TCL (Transaction Control Language) — язык для управления транзакциями.

    • COMMIT: сохранение изменений, сделанных в транзакции.
    • ROLLBACK: откат изменений.
    • SAVEPOINT: установка промежуточной точки для отката.

Также важной частью DML являются JOIN-операторы (INNER JOIN, LEFT JOIN и т.д.) для объединения данных из нескольких таблиц и агрегатные функции (COUNT, SUM, AVG, MAX, MIN) для вычислений по набору строк.

Ответ 18+ 🔞

Давай разложим по полочкам этот SQL, а то он, блядь, как слоёный пирог, только вместо теста — команды, а вместо начинки — данные, которые мы ебём туда-сюда.

Смотри, есть там такие группы команд, как будто языки внутри языка, ёпта. Каждый со своей работой.

1. DML (Data Manipulation Language) — это типа наш рабочий инструмент, чтобы ковыряться в данных. Прямо в содержимом таблиц шаримся.

  • SELECT: Ну это классика, выборка, мать её. Вытащить то, что нужно.
    SELECT name, email FROM users WHERE age > 30;
  • INSERT: Запихнуть новую запись. Как впихнуть невпихуемое, но в SQL это норм.
    INSERT INTO users (name, age) VALUES ('Bob', 42);
  • UPDATE: Обновить старые данные. Исправить косяки, жизнь наладить.
    UPDATE users SET age = 43 WHERE name = 'Bob';
  • DELETE: Выкинуть нахуй ненужные записи. Чистка, блядь.
    DELETE FROM users WHERE name = 'Bob';

2. DDL (Data Definition Language) — а это уже архитекторы, ёбана. Они не с данными работают, а со структурой всей этой бандуры. Таблицы создают, ломают, перестраивают.

  • CREATE: Построить новый объект. Таблицу там, или индекс.
    CREATE TABLE products (id SERIAL PRIMARY KEY, name VARCHAR(100), price INT);
  • ALTER: Перестроить, надстроить, прилепить балкон. Изменить структуру.
    ALTER TABLE products ADD COLUMN description TEXT;
  • DROP: Снести к хуям объект. Таблицу, например. Вжух — и нет её.
    DROP TABLE products;

3. DCL (Data Control Language) — охрана, сука. Кому можно, кому нельзя. Права раздают и забирают.

  • GRANT: Разрешить что-то делать.
  • REVOKE: Отобрать это разрешение обратно. "А ну отдай пропуск!"

4. TCL (Transaction Control Language) — это как система "отката" в жизни, блядь. Накосячил — откатился.

  • COMMIT: Всё, чувак, изменения окончательные, сохраняем.
  • ROLLBACK: Ой, бля, нахуй это всё! Отменяем, как будто ничего не было.
  • SAVEPOINT: А это типа "сохраниться" в игре, на случай если дальше всё пойдёт по пизде.

А ещё внутри DML есть важные штуки, без которых нихуя не получится: JOIN-ы (это чтобы таблицы между собой склеивать, INNER JOIN, LEFT JOIN и прочая хуйня) и агрегатные функции (COUNT, SUM, AVG), которые умеют считать, суммировать и выводить среднюю температуру по больнице. Без них — просто пиздец, а не работа.