MySQL Sandbox

Образовательный раздел

SQL по разделам

Команды MySQL от структуры базы данных к работе с данными, транзакциями и правами доступа.

Вернуться в песочницу

Раздел 1

DDL (Data Definition Language)

DDL описывает и меняет структуру базы данных. Эти команды создают объекты, изменяют их или удаляют целиком. Важно понимать: речь идет не о строках данных, а о самой схеме.

Что делает DDL

  • создает базы, таблицы, индексы и представления;
  • меняет структуру существующих объектов;
  • удаляет или переименовывает объекты схемы;
  • в MySQL 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Переименование таблицы

Пример мышления в DDL

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 (Data Manipulation Language)

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 (Data Query Language)

DQL используется для чтения данных. В MySQL его часто рассматривают вместе с DML, но логически это отдельная группа: здесь вы не меняете данные, а извлекаете их.

Инструкция Назначение
SELECTОсновная команда выборки с JOIN, GROUP BY, HAVING, ORDER BY, LIMIT и другими конструкциями
SELECT ... INTO OUTFILE / INTO DUMPFILEВыгрузка результата в файл
EXPLAIN / EXPLAIN ANALYZEПлан выполнения запроса и статистика

Раздел 4

TCL (Transaction Control Language)

TCL нужен, когда операции должны выполняться как единое целое. Эти команды позволяют зафиксировать изменения, откатить их или сохранить контрольную точку внутри транзакции.

Инструкция Назначение
START TRANSACTION / BEGINНачало транзакции
COMMITФиксация изменений
ROLLBACKОткат изменений
SAVEPOINT / RELEASE SAVEPOINT / ROLLBACK TO SAVEPOINTТочки сохранения внутри транзакции
SET autocommit = {0|1}Включение или выключение автокоммита

Раздел 5

DCL (Data Control Language)

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

MySQL-специфичные и расширенные инструкции

Эти команды не входят в базовый стандарт 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Запись и управление бинарными логами

Финал

Практические советы

  1. Не путайте объекты и команды: TRIGGER, VIEW, INDEX, PROCEDURE создаются через CREATE, меняются через ALTER и удаляются через DROP.
  2. DESCRIBE и SHOW COLUMNS в MySQL функционально близки, но SHOW COLUMNS ближе к стандарту.
  3. TRUNCATE не равен DELETE: он быстрее, не использует построчное удаление, сбрасывает счётчик и не поддерживает WHERE.
  4. Для повседневной работы достаточно уверенно знать SELECT, INSERT, UPDATE, DELETE, CREATE/ALTER/DROP TABLE, EXPLAIN, SHOW и транзакции BEGIN / COMMIT / ROLLBACK.