Ответ
Команды SQL традиционно делятся на несколько групп по их назначению.
1. DDL (Data Definition Language) — Язык определения данных. Работа со структурой объектов БД (схемой).
CREATE: Создание новых объектов (таблиц, индексов, представлений).CREATE TABLE users ( id INT PRIMARY KEY, username VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );ALTER: Изменение существующей структуры.ALTER TABLE users ADD COLUMN email VARCHAR(100);DROP: Полное удаление объекта из БД.DROP TABLE temp_data;TRUNCATE: Быстрая очистка всех данных из таблицы с сохранением ее структуры. Нельзя откатить (в большинстве СУБД).TRUNCATE TABLE session_logs;
2. DML (Data Manipulation Language) — Язык управления данными. Операции над самими данными (строками).
SELECT: Извлечение данных. Самая часто используемая команда.INSERT: Добавление новых записей.INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com');UPDATE: Изменение существующих записей.UPDATE users SET email = 'new_email@example.com' WHERE id = 1;DELETE: Удаление записей с возможностью фильтрацииWHERE. В отличие отTRUNCATE, операцию можно откатить.DELETE FROM users WHERE created_at < '2020-01-01';
3. DCL (Data Control Language) — Язык управления доступом. Управление правами пользователей.
GRANT: Предоставление прав на объекты или операции.GRANT SELECT, INSERT ON orders TO analyst_role;REVOKE: Отзыв ранее выданных прав.REVOKE DELETE ON users FROM intern_role;
4. TCL (Transaction Control Language) — Язык управления транзакциями.
COMMIT: Фиксация изменений в БД.ROLLBACK: Откат изменений до состояния последнегоCOMMIT.SAVEPOINT: Установка точки сохранения внутри транзакции для частичного отката.
Пример комплексного DML-запроса:
SELECT
c.country,
COUNT(o.id) AS total_orders,
AVG(o.total_amount) AS avg_order_value
FROM customers c
JOIN orders o ON c.id = o.customer_id
WHERE o.status = 'completed'
AND o.order_date >= DATE_SUB(NOW(), INTERVAL 1 YEAR)
GROUP BY c.country
HAVING COUNT(o.id) > 10
ORDER BY total_orders DESC
LIMIT 5;