Что делает DDL
- создает базы, таблицы, индексы и представления;
- меняет структуру существующих объектов;
- удаляет или переименовывает объекты схемы;
- в MySQL
TRUNCATE TABLEтоже относится к DDL.
Образовательный раздел
Команды MySQL от структуры базы данных к работе с данными, транзакциями и правами доступа.
Раздел 1
DDL описывает и меняет структуру базы данных. Эти команды создают объекты, изменяют их или удаляют целиком. Важно понимать: речь идет не о строках данных, а о самой схеме.
TRUNCATE TABLE тоже относится к DDL.DELETE.| Инструкция | Назначение |
|---|---|
CREATE DATABASE / CREATE SCHEMA | Создание базы данных |
CREATE TABLE | Создание таблицы |
CREATE INDEX / CREATE UNIQUE INDEX | Создание индекса |
CREATE VIEW | Создание представления |
CREATE PROCEDURE / CREATE FUNCTION | Хранимые процедуры и функции |
CREATE TRIGGER | Создание триггера |
CREATE EVENT | Планировщик событий |
ALTER DATABASE / ALTER TABLE / ALTER VIEW / ALTER PROCEDURE / ALTER FUNCTION / ALTER EVENT | Изменение объектов |
DROP DATABASE / DROP TABLE / DROP INDEX / DROP VIEW / DROP PROCEDURE / DROP FUNCTION / DROP TRIGGER / DROP EVENT | Удаление объектов |
TRUNCATE TABLE | Полная очистка таблицы с сбросом AUTO_INCREMENT |
RENAME TABLE | Переименование таблицы |
CREATE TABLE students (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE
);
ALTER TABLE students ADD COLUMN created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
CREATE INDEX idx_students_email ON students (email);
Раздел 2
DML отвечает за сами данные: вставку, изменение и удаление строк. Если DDL меняет форму таблицы, то DML наполняет ее содержимым.
| Инструкция | Назначение |
|---|---|
INSERT | Вставка строк |
INSERT ... SELECT | Вставка результата выборки |
REPLACE | Вставка с заменой при конфликте ключа |
INSERT ... ON DUPLICATE KEY UPDATE | Вставка с обновлением при конфликте |
UPDATE | Обновление строк |
UPDATE ... JOIN | Обновление через JOIN |
DELETE | Удаление строк |
LOAD DATA INFILE / LOAD XML INFILE | Массовая загрузка из файлов |
Раздел 3
DQL используется для чтения данных. В MySQL его часто рассматривают вместе с DML, но логически это отдельная группа: здесь вы не меняете данные, а извлекаете их.
| Инструкция | Назначение |
|---|---|
SELECT | Основная команда выборки с JOIN, GROUP BY, HAVING, ORDER BY, LIMIT и другими конструкциями |
SELECT ... INTO OUTFILE / INTO DUMPFILE | Выгрузка результата в файл |
EXPLAIN / EXPLAIN ANALYZE | План выполнения запроса и статистика |
Раздел 4
TCL нужен, когда операции должны выполняться как единое целое. Эти команды позволяют зафиксировать изменения, откатить их или сохранить контрольную точку внутри транзакции.
| Инструкция | Назначение |
|---|---|
START TRANSACTION / BEGIN | Начало транзакции |
COMMIT | Фиксация изменений |
ROLLBACK | Откат изменений |
SAVEPOINT / RELEASE SAVEPOINT / ROLLBACK TO SAVEPOINT | Точки сохранения внутри транзакции |
SET autocommit = {0|1} | Включение или выключение автокоммита |
Раздел 5
DCL управляет пользователями и привилегиями. Здесь настраивается, кто и что может делать с объектами базы данных.
| Инструкция | Назначение |
|---|---|
CREATE USER / DROP USER / ALTER USER / RENAME USER | Управление учётными записями |
GRANT / REVOKE | Выдача и отзыв привилегий |
SET PASSWORD / ALTER USER ... IDENTIFIED BY | Смена пароля |
FLUSH PRIVILEGES | Перезагрузка таблиц привилегий в память |
Раздел 6
Эти команды помогают работать с метаданными, службами и обслуживанием сервера. Они не всегда относятся к классическим категориям SQL, но на практике встречаются постоянно.
| Инструкция | Назначение |
|---|---|
USE db_name | Выбор активной базы данных |
SHOW DATABASES / SHOW TABLES / SHOW COLUMNS / SHOW INDEX / SHOW CREATE TABLE | Просмотр метаданных объектов |
SHOW STATUS / SHOW VARIABLES / SHOW ENGINE INNODB STATUS | Статус сервера и переменные |
SHOW PROCESSLIST / SHOW FULL PROCESSLIST | Активные потоки |
SHOW WARNINGS / SHOW ERRORS | Последние предупреждения и ошибки |
SET session_var = value / SET GLOBAL var = value | Настройка сессии или сервера |
CALL procedure_name() | Вызов хранимой процедуры |
DO expression | Выполнение выражения без результата |
PREPARE / EXECUTE / DEALLOCATE PREPARE | Подготовленные выражения |
LOCK TABLES / UNLOCK TABLES | Явная блокировка таблиц |
FLUSH | Сброс кэшей, логов, привилегий и репликации |
KILL connection_id | Завершение потока |
ANALYZE TABLE / CHECK TABLE / OPTIMIZE TABLE / REPAIR TABLE | Обслуживание таблиц |
Раздел 7
Эти команды не входят в базовый стандарт SQL, но они часто встречаются в MySQL-проектах и помогают работать с расширенными возможностями сервера.
| Инструкция | Назначение |
|---|---|
HANDLER | Низкоуровневый доступ к данным InnoDB/MyISAM |
INSTALL PLUGIN / UNINSTALL PLUGIN | Управление плагинами |
XA START / XA END / XA PREPARE / XA COMMIT / XA ROLLBACK | Распределённые транзакции |
RESET MASTER / RESET SLAVE / CHANGE MASTER TO | Управление бинарными логами и репликацией |
CLONE | Клонирование сервера или данных |
BINLOG | Запись и управление бинарными логами |
Финал
TRIGGER, VIEW, INDEX, PROCEDURE создаются через CREATE, меняются через ALTER и удаляются через DROP.DESCRIBE и SHOW COLUMNS в MySQL функционально близки, но SHOW COLUMNS ближе к стандарту.TRUNCATE не равен DELETE: он быстрее, не использует построчное удаление, сбрасывает счётчик и не поддерживает WHERE.SELECT, INSERT, UPDATE, DELETE, CREATE/ALTER/DROP TABLE, EXPLAIN, SHOW и транзакции BEGIN / COMMIT / ROLLBACK.