Базы данных

Учебник MySQL для начинающих

24 урока · 6 разделов · бесплатно, без регистрации

Практический курс по MySQL — самой популярной реляционной СУБД с открытым кодом. Курс рассчитан на тех, кто уже знаком с базовым SQL, и сфокусирован именно на MySQL: её типах данных, движках хранения InnoDB и MyISAM, ключах и ограничениях, особенностях запросов, транзакциях, индексах и эксплуатации (бэкапы, права, репликация).

Переносимые примеры можно сразу запускать в живой SQL-песочнице прямо на странице, а MySQL-специфичные конструкции (AUTO_INCREMENT, ENGINE, ENUM, JSON-функции, процедуры) разобраны отдельно и аккуратно помечены — чтобы вы видели разницу между «SQL вообще» и «MySQL в частности».

Курс «MySQL» состоит из 6 разделов и 24 уроков: Введение в MySQL, Типы данных MySQL, Таблицы, ключи и ограничения, Запросы и соединения, Изменение данных и производительность и Продвинутое и эксплуатация. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Введение в MySQL

    1. Что такое MySQL и где он применяется

      MySQL — самая популярная реляционная СУБД с открытым кодом. Разбираем, что это, почему её любят веб-разработчики и где она применяется.

    2. Установка MySQL и подключение клиентом

      Как поставить MySQL-сервер, подключиться клиентом mysql и проверить версию. Разбираем флаги -u, -p, -h и базовые команды клиента.

    3. Создание базы данных и пользователя

      Учимся создавать базу через CREATE DATABASE, заводить отдельного пользователя и выдавать ему права с помощью GRANT. Принцип минимальных привилегий.

    4. Движки хранения: InnoDB и MyISAM

      Что такое движок хранения в MySQL. Сравниваем InnoDB и MyISAM: транзакции, внешние ключи, блокировки. Почему по умолчанию выбирают InnoDB.

  2. 2 Типы данных MySQL

    1. Числовые типы и AUTO_INCREMENT

      Числовые типы MySQL: INT, TINYINT, BIGINT, DECIMAL и FLOAT. Когда нужны деньги в DECIMAL, как работает AUTO_INCREMENT и UNSIGNED.

    2. Строковые типы: VARCHAR, TEXT, CHAR, ENUM

      Строки в MySQL: чем VARCHAR отличается от CHAR и TEXT, когда уместен ENUM, как влияет кодировка и зачем задавать длину VARCHAR.

    3. Дата и время: DATE, DATETIME, TIMESTAMP

      Типы для дат в MySQL: DATE, TIME, DATETIME и TIMESTAMP. В чём разница DATETIME и TIMESTAMP, часовые пояса и автообновление времени.

    4. JSON и выбор правильного типа

      Тип JSON в MySQL: когда он уместен, функции JSON_EXTRACT и оператор ->>. Чек-лист выбора типа данных для столбца.

  3. 3 Таблицы, ключи и ограничения

    1. CREATE TABLE и первичный ключ

      Подробно про CREATE TABLE в MySQL: объявление столбцов, PRIMARY KEY и AUTO_INCREMENT. Зачем нужен первичный ключ и каким он должен быть.

    2. Внешние ключи и ссылочная целостность

      FOREIGN KEY в MySQL: как связать таблицы и заставить InnoDB следить за целостностью. ON DELETE CASCADE и почему MyISAM не подходит.

    3. Ограничения: NOT NULL, UNIQUE, DEFAULT, CHECK

      Ограничения целостности в MySQL: NOT NULL, UNIQUE, DEFAULT и CHECK. Как они защищают данные от мусора на уровне самой базы.

    4. ALTER TABLE и нормализация

      Изменяем структуру таблиц через ALTER TABLE: добавить столбец, изменить тип, добавить ограничение. Краткое введение в нормализацию.

  4. 4 Запросы и соединения

    1. SELECT, WHERE, ORDER BY и LIMIT

      Базовая выборка в MySQL: SELECT с фильтром WHERE, сортировкой ORDER BY и постраничным выводом LIMIT/OFFSET. Всё на живых примерах.

    2. JOIN: INNER, LEFT и RIGHT

      Соединения таблиц в MySQL: INNER JOIN, LEFT JOIN и RIGHT JOIN. Чем они отличаются и как выбрать нужный — на исполняемых примерах.

    3. Агрегаты, GROUP BY и HAVING

      Агрегатные функции MySQL: COUNT, SUM, AVG, MIN, MAX. Группировка GROUP BY и фильтрация групп через HAVING на живых примерах.

    4. Подзапросы и UNION

      Подзапросы в MySQL: в WHERE, с IN и в списке SELECT. Объединение результатов через UNION и UNION ALL — на исполняемых примерах.

  5. 5 Изменение данных и производительность

    1. INSERT, UPDATE и DELETE

      Изменение данных в MySQL: вставка INSERT (в том числе пакетная), обновление UPDATE и удаление DELETE. Важность WHERE и отличие от TRUNCATE.

    2. INSERT ... ON DUPLICATE KEY UPDATE

      MySQL-приём upsert: INSERT ... ON DUPLICATE KEY UPDATE. Вставить или обновить одной командой, плюс INSERT IGNORE и REPLACE.

    3. Транзакции в InnoDB

      Транзакции в MySQL (InnoDB): BEGIN, COMMIT, ROLLBACK и свойства ACID. Зачем нужна атомарность на примере перевода денег.

    4. Индексы и EXPLAIN

      Индексы в MySQL: зачем нужны, какие бывают, как ускоряют поиск. Анализ запросов через EXPLAIN и цена индексов при записи.

  6. 6 Продвинутое и эксплуатация

    1. Представления (VIEW)

      Представления в MySQL: что такое VIEW, зачем нужны сохранённые запросы, как они упрощают и защищают доступ к данным.

    2. Хранимые процедуры, функции и триггеры

      Обзор серверной логики в MySQL: хранимые процедуры и функции, триггеры. Когда выносить логику в базу, а когда — нет.

    3. Пользователи, привилегии и резервные копии

      Эксплуатация MySQL: управление пользователями и привилегиями через GRANT, резервное копирование с помощью mysqldump и восстановление базы.

    4. Репликация и что дальше

      Обзор репликации MySQL (primary/replica), зачем она нужна для отказоустойчивости и масштабирования чтения, и куда двигаться дальше.