Учебник MySQL для начинающих
Практический курс по MySQL — самой популярной реляционной СУБД с открытым кодом. Курс рассчитан на тех, кто уже знаком с базовым SQL, и сфокусирован именно на MySQL: её типах данных, движках хранения InnoDB и MyISAM, ключах и ограничениях, особенностях запросов, транзакциях, индексах и эксплуатации (бэкапы, права, репликация).
Переносимые примеры можно сразу запускать в живой SQL-песочнице прямо на странице, а MySQL-специфичные конструкции (AUTO_INCREMENT, ENGINE, ENUM, JSON-функции, процедуры) разобраны отдельно и аккуратно помечены — чтобы вы видели разницу между «SQL вообще» и «MySQL в частности».
Курс «MySQL» состоит из 6 разделов и 24 уроков: Введение в MySQL, Типы данных MySQL, Таблицы, ключи и ограничения, Запросы и соединения, Изменение данных и производительность и Продвинутое и эксплуатация. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение в MySQL
- Что такое MySQL и где он применяется
MySQL — самая популярная реляционная СУБД с открытым кодом. Разбираем, что это, почему её любят веб-разработчики и где она применяется.
- Установка MySQL и подключение клиентом
Как поставить MySQL-сервер, подключиться клиентом mysql и проверить версию. Разбираем флаги -u, -p, -h и базовые команды клиента.
- Создание базы данных и пользователя
Учимся создавать базу через CREATE DATABASE, заводить отдельного пользователя и выдавать ему права с помощью GRANT. Принцип минимальных привилегий.
- Движки хранения: InnoDB и MyISAM
Что такое движок хранения в MySQL. Сравниваем InnoDB и MyISAM: транзакции, внешние ключи, блокировки. Почему по умолчанию выбирают InnoDB.
- Что такое MySQL и где он применяется
2 Типы данных MySQL
- Числовые типы и AUTO_INCREMENT
Числовые типы MySQL: INT, TINYINT, BIGINT, DECIMAL и FLOAT. Когда нужны деньги в DECIMAL, как работает AUTO_INCREMENT и UNSIGNED.
- Строковые типы: VARCHAR, TEXT, CHAR, ENUM
Строки в MySQL: чем VARCHAR отличается от CHAR и TEXT, когда уместен ENUM, как влияет кодировка и зачем задавать длину VARCHAR.
- Дата и время: DATE, DATETIME, TIMESTAMP
Типы для дат в MySQL: DATE, TIME, DATETIME и TIMESTAMP. В чём разница DATETIME и TIMESTAMP, часовые пояса и автообновление времени.
- JSON и выбор правильного типа
Тип JSON в MySQL: когда он уместен, функции JSON_EXTRACT и оператор ->>. Чек-лист выбора типа данных для столбца.
- Числовые типы и AUTO_INCREMENT
3 Таблицы, ключи и ограничения
- CREATE TABLE и первичный ключ
Подробно про CREATE TABLE в MySQL: объявление столбцов, PRIMARY KEY и AUTO_INCREMENT. Зачем нужен первичный ключ и каким он должен быть.
- Внешние ключи и ссылочная целостность
FOREIGN KEY в MySQL: как связать таблицы и заставить InnoDB следить за целостностью. ON DELETE CASCADE и почему MyISAM не подходит.
- Ограничения: NOT NULL, UNIQUE, DEFAULT, CHECK
Ограничения целостности в MySQL: NOT NULL, UNIQUE, DEFAULT и CHECK. Как они защищают данные от мусора на уровне самой базы.
- ALTER TABLE и нормализация
Изменяем структуру таблиц через ALTER TABLE: добавить столбец, изменить тип, добавить ограничение. Краткое введение в нормализацию.
- CREATE TABLE и первичный ключ
4 Запросы и соединения
- SELECT, WHERE, ORDER BY и LIMIT
Базовая выборка в MySQL: SELECT с фильтром WHERE, сортировкой ORDER BY и постраничным выводом LIMIT/OFFSET. Всё на живых примерах.
- JOIN: INNER, LEFT и RIGHT
Соединения таблиц в MySQL: INNER JOIN, LEFT JOIN и RIGHT JOIN. Чем они отличаются и как выбрать нужный — на исполняемых примерах.
- Агрегаты, GROUP BY и HAVING
Агрегатные функции MySQL: COUNT, SUM, AVG, MIN, MAX. Группировка GROUP BY и фильтрация групп через HAVING на живых примерах.
- Подзапросы и UNION
Подзапросы в MySQL: в WHERE, с IN и в списке SELECT. Объединение результатов через UNION и UNION ALL — на исполняемых примерах.
- SELECT, WHERE, ORDER BY и LIMIT
5 Изменение данных и производительность
- INSERT, UPDATE и DELETE
Изменение данных в MySQL: вставка INSERT (в том числе пакетная), обновление UPDATE и удаление DELETE. Важность WHERE и отличие от TRUNCATE.
- INSERT ... ON DUPLICATE KEY UPDATE
MySQL-приём upsert: INSERT ... ON DUPLICATE KEY UPDATE. Вставить или обновить одной командой, плюс INSERT IGNORE и REPLACE.
- Транзакции в InnoDB
Транзакции в MySQL (InnoDB): BEGIN, COMMIT, ROLLBACK и свойства ACID. Зачем нужна атомарность на примере перевода денег.
- Индексы и EXPLAIN
Индексы в MySQL: зачем нужны, какие бывают, как ускоряют поиск. Анализ запросов через EXPLAIN и цена индексов при записи.
- INSERT, UPDATE и DELETE
6 Продвинутое и эксплуатация
- Представления (VIEW)
Представления в MySQL: что такое VIEW, зачем нужны сохранённые запросы, как они упрощают и защищают доступ к данным.
- Хранимые процедуры, функции и триггеры
Обзор серверной логики в MySQL: хранимые процедуры и функции, триггеры. Когда выносить логику в базу, а когда — нет.
- Пользователи, привилегии и резервные копии
Эксплуатация MySQL: управление пользователями и привилегиями через GRANT, резервное копирование с помощью mysqldump и восстановление базы.
- Репликация и что дальше
Обзор репликации MySQL (primary/replica), зачем она нужна для отказоустойчивости и масштабирования чтения, и куда двигаться дальше.
- Представления (VIEW)