MySQL и проектирование баз данных
Полный последовательный маршрут: теория, пример, ошибка новичка, практика, самопроверка и проектный шаг в каждом уроке.
Полный последовательный маршрут: теория, пример, ошибка новичка, практика, самопроверка и проектный шаг в каждом уроке.
Переходи дальше только после того, как можешь воспроизвести идею самостоятельно и понимаешь, зачем она нужна.
После модулей закрепляй материал практикой и проверками. Курс считается освоенным только после выполнения критериев, а не после простого открытия всех страниц.
SELECT читает данные. В реальной работе почти никогда не нужен бесконечный `SELECT *`.
WHERE оставляет только строки, для которых условие истинно.
Результат можно отсортировать и ограничить количеством строк.
Первичный ключ идентифицирует строку, внешний ключ связывает одну таблицу с другой.
JOIN превращает сохранённые id обратно в понятные связанные данные.
INNER JOIN скрывает строки без связи, LEFT JOIN сохраняет все строки слева.
Индекс помогает быстрее находить строки, но занимает место и добавляет работу при изменениях.
Leftmost prefix составного индекса: разберём принцип, увидим рабочий пример и закрепим его на самостоятельной задаче.
Кардинальность и селективность: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.
Покрывающий индекс: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.
Связанные изменения иногда должны либо выполниться все, либо не выполниться ни одно.
Уровни изоляции и аномалии: разберём принцип, увидим рабочий пример и закрепим его на самостоятельной задаче.
Оптимистическая и пессимистическая конкуренция: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.
В этом уроке тема «UNIQUE, NOT NULL и CHECK» разбирается не как готовая команда, а как инструмент для конкретной задачи.
В этом уроке тема «ON DELETE» разбирается не как готовая команда, а как инструмент для конкретной задачи.
В этом уроке тема «CASE» разбирается не как готовая команда, а как инструмент для конкретной задачи.
В этом уроке тема «COALESCE и NULL» разбирается не как готовая команда, а как инструмент для конкретной задачи.
В этом уроке тема «CTE WITH» разбирается не как готовая команда, а как инструмент для конкретной задачи.
В этом уроке тема «ROW_NUMBER» разбирается не как готовая команда, а как инструмент для конкретной задачи.
В этом уроке тема «RANK и DENSE_RANK» разбирается не как готовая команда, а как инструмент для конкретной задачи.
В этом уроке тема «Составной индекс» разбирается не как готовая команда, а как инструмент для конкретной задачи.
В этом уроке тема «Covering index» разбирается не как готовая команда, а как инструмент для конкретной задачи.
В этом уроке тема «EXPLAIN ANALYZE» разбирается не как готовая команда, а как инструмент для конкретной задачи.
В этом уроке тема «Изоляция транзакций» разбирается не как готовая команда, а как инструмент для конкретной задачи.
В этом уроке тема «Итог MySQL» разбирается не как готовая команда, а как инструмент для конкретной задачи.
В этом уроке «UNION и UNION ALL» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «EXISTS» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Correlated subquery» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Window frames» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «LAG и LEAD» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «FIRST_VALUE» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Recursive CTE» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Natural vs surrogate key» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Soft delete» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Audit fields» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Index selectivity» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Leftmost prefix» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Index merge» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «ORDER BY и индекс» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Too many indexes» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Cardinality estimates» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «ANALYZE TABLE» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Sargability» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «ACID глубже» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Deadlocks» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Locking mental model» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Optimistic concurrency» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Least privilege» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «SQL injection review» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Backup types» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Restore drill» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Slow query log» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Connection pool» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Performance investigation» разбирается от проблемы к решению, а не как набор команд.
В этом уроке «Профессиональный MySQL capstone» разбирается от проблемы к решению, а не как набор команд.
EXISTS и IN: разберём принцип, увидим рабочий пример и закрепим его на самостоятельной задаче.
Оконные функции ROW_NUMBER и LAG: разберём принцип, увидим рабочий пример и закрепим его на самостоятельной задаче.
CASE и условные выражения: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.
UNION и UNION ALL: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.
GROUP BY и HAVING: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.
Point-in-time recovery: разберём принцип, увидим рабочий пример и закрепим его на самостоятельной задаче.
Slow Query Log и поиск узких мест: сначала разберись, какую проблему решает механизм, затем изучи пример и проверь понимание на собственной реализации.