Подробнее
Что нужно для старта
- 📚 Обязательные требования:
- Базовое понимание программирования — знакомство с любым языком на уровне переменных, условий и циклов
- Желание работать с данными — интерес к базам данных, SQL и структурированной информации
- Готовность решать логические задачи — SQL и ORM требуют аналитического мышления
- 🐍 Для модуля SQLAlchemy:
- Базовые знания Python — понимание синтаксиса, функций, основных структур данных (списки, словари)
- 💻 Технические возможности:
- Компьютер с доступом в интернет
- Возможность устанавливать программное обеспечение (СУБД, Python, IDE)
- Любая современная операционная система
- ✨ Что будет плюсом (но не обязательно):
- Минимальный опыт работы с любыми базами данных
- Знакомство с реляционной моделью данных (таблицы, связи)
- Опыт работы в командной строке/терминале
- 🚫 Не требуется для старта:
- Опыт написания SQL-запросов
- Знание SQLAlchemy или других ORM
- Умение проектировать базы данных
- Профильное IT-образование
- 🌟 Важно: Программа начинается с самых основ SQL и постепенно усложняется. Даже если вы никогда не работали с базами данных, первые курсы введут вас в тему. Главное — готовность учиться и применять знания на практике!
Что вы получите
- Проектировать и создавать реляционные базы данных с нуля, используя язык SQL (DDL, DML).
- Писать SQL-запросы любой сложности: от базовых SELECT до продвинутых конструкций с оконными функциями, CTE и рекурсивными запросами.
- Управлять данными на профессиональном уровне: работать с транзакциями, хранимыми процедурами, триггерами, представлениями и оптимизировать производительность запросов.
- Интегрировать базы данных с приложениями на Python, используя мощный ORM-фреймворк SQLAlchemy 2.0 (как Core, так и декларативные модели).
- Проектировать декларативные ORM-модели, описывать связи между таблицами, управлять жизненным циклом сессий и транзакциями из кода Python.
- Строить эффективные и безопасные запросы через SQLAlchemy ORM, диагностировать и решать проблему N+1.
- Работать с асинхронным доступом к базе данных и выполнять миграции схемы с помощью Alembic.
- Применять полученные знания в связке: использовать глубокое понимание SQL для написания оптимального кода на SQLAlchemy.
Для кого этот курс
- 🐍 Python-разработчики (Backend)
- Которые хотят глубоко разобраться в работе с базами данных и профессионально использовать SQLAlchemy в своих проектах
- 📊 Начинающие Data Engineers и аналитики
- Которым необходимо уверенное владение SQL и понимание, как данные интегрируются в приложения
- 🎓 Студенты IT-специальностей
- Которые хотят получить практические навыки работы с данными для старта карьеры в разработке или аналитике
- 🔧 Разработчики на других языках
- Которые планируют перейти в Python-разработку и нуждаются в комплексном понимании работы с данными
- 💼 IT-специалисты, расширяющие квалификацию
- Администраторы, тестировщики, менеджеры проектов, желающие говорить на одном языке с разработчиками о данных
Программа курса
- Знакомство
- О курсе
- Установка MySQL сервера
- Работа в терминале
- Графические IDE (Workbench, DBeaver)
- Взаимодействие с сервером
- Контрольные вопросы
- Решаем задачи. Пишем SQL код
- Первичные ключи
- Особенности типов данных и именование объектов
- Руководство по стилю SQL · SQL Style Guide
- Индексы
- Внешние ключи
- Подробнее про ALTER TABLE
- Особенности синтаксиса MySQL
- Виды связей между таблицами (1х1, 1хМ, МхМ)
- Таблицы-справочники
- ER-диаграмма
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
- Команда INSERT
- Команда SELECT
- Команда UPDATE
- Команда DELETE
- Бонус: Сервисы для генерации данных
- Импорт-экспорт данных
- Контрольные вопросы
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
- Фильтрация (WHERE + LIKE)
- Сортировка (ORDER BY)
- Агрегирующие функции (COUNT, MIN, MAX, AVG, SUM)
- Группировка (GROUP BY)
- Фильтрация (HAVING)
- Отсутствие значения (NULL)
- Пейджинг (LIMIT + OFFSET)
- Условия, ветвления (IF, CASE)
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Контрольные вопросы. Часть 3
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
- Вложенные запросы (подзапросы)
- Объединения (JOIN) - Теория
- Объединения (CROSS JOIN, INNER JOIN)
- Объединения (LEFT JOIN, RIGHT JOIN)
- Объединения (FULL OUTER JOIN)
- Вложенные запросы VS объединения
- Соединения (UNION)
- Оконные функции
- Общие табличные выражения (CTE)
- Рекурсивные табличные выражения
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
- Решаем задачи. Пишем SQL код. Часть 3
- Решаем задачи. Пишем SQL код. Часть 4
- Полнотекстовый поиск
- Представления (View)
- Хранимые процедуры
- Пользовательские функции
- Переменные
- Триггеры
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Контрольные вопросы. Часть 3
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
- Введение в транзакции
- Обработка исключений (ошибок)
- Уровни изоляции транзакций
- Блокировки таблиц
- Взаимная блокировка (deadlock)
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код
- Пользователи
- Роли
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код
- Лишний JOIN
- Денормализация
- Настройки сервера
- Анализ запросов (EXPLAIN)
- Графический план исполнения запроса
- Исправление проблемных мест
- Графический план: показательные примеры
- Контрольные вопросы
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
- Работа с логами
- Циклы
- Курсоры
- SQL инъекции
- Контрольные вопросы
- Решаем задачи. Пишем SQL код
- Что такое SQLAlchemy?
- Подключение к БД: Dialect, URL, Engine, Pool
- Первый select() запрос (Core vs ORM + Session)
- Result API: Result, ScalarResult, Row
- DeclarativeBase и registry
- MetaData, naming_convention, схемы
- Базовые типы данных
- Расширенные типы данных
- Ограничения и индексы: Unique, Check, составные ключи
- Значения default, server_default, onupdate, вычисляемые поля
- Наследование: Mixin, Single Table, Joined Table, Concrete
- ForeignKey, relationship, back_populates, backref
- Ассоциации: secondary vs association object
- Каскады: cascade, delete-orphan, passive_deletes
- Самоссылочные связи (self-referencing)
- Жизненный цикл Session: expire_on_commit, autoflush
- Создание объектов, append, add, add_all, delete, begin, merge
- Синхронизация через RETURNING + refresh()
- Откат изменений через rollback() и сброс состояния
- Работа с данными (SELECT, UPDATE, DELETE и проекции)
- Обработка ошибок: IntegrityError, NoResultFound, MultipleResults
- Фильтрация и сортировки
- Агрегаты и группировка
- JOIN: INNER и LEFT
- Self-JOIN и алиасы
- Подзапросы
- Оконные функции: over, row_number, сдвиги, агрегаты
- Паттерны пагинации и выбор узких выборок
- Стратегии загрузки и N+1
- Явные стратегии загрузки и контроль ORM-графа
- Узкие ORM-модели и экономичная загрузка данных
- Типичные архитектурные ошибки и транзакции
- Репозиторий в SQLAlchemy
- Table, Column и конструктор выражений
- DDL через метаданные: связи, схемы, индексы, ограничения
- Компиляция/сырой SQL: compile(), text(), bindparams
- Потоковые выборки и большие данные: fetchmany, execution options
- AsyncEngine, AsyncSession, драйверы
- Выполнение: execute, scalars, loader options в await-контексте
- Ошибки и отмена задач
- Инициализация проекта, конфигурация, env.py
- Автогенерация vs ручные ревизии, naming_convention
- Ветвления и merge heads, offline/online
- Итоги
01[SQL-1] Вступление
- Знакомство
- О курсе
02[SQL-1] Установка рабочего окружения
- Установка MySQL сервера
- Работа в терминале
- Графические IDE (Workbench, DBeaver)
- Взаимодействие с сервером
- Контрольные вопросы
- Решаем задачи. Пишем SQL код
03[SQL-1] Проектирование БД (команды DDL)
- Первичные ключи
- Особенности типов данных и именование объектов
- Руководство по стилю SQL · SQL Style Guide
- Индексы
- Внешние ключи
- Подробнее про ALTER TABLE
- Особенности синтаксиса MySQL
- Виды связей между таблицами (1х1, 1хМ, МхМ)
- Таблицы-справочники
- ER-диаграмма
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
04[SQL-1] Работа с данными (команды DML, CRUD)
- Команда INSERT
- Команда SELECT
- Команда UPDATE
- Команда DELETE
- Бонус: Сервисы для генерации данных
- Импорт-экспорт данных
- Контрольные вопросы
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
05[SQL-2] Основы SELECT запросов
- Фильтрация (WHERE + LIKE)
- Сортировка (ORDER BY)
- Агрегирующие функции (COUNT, MIN, MAX, AVG, SUM)
- Группировка (GROUP BY)
- Фильтрация (HAVING)
- Отсутствие значения (NULL)
- Пейджинг (LIMIT + OFFSET)
- Условия, ветвления (IF, CASE)
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Контрольные вопросы. Часть 3
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
06[SQL-2] Сложные SELECT запросы
- Вложенные запросы (подзапросы)
- Объединения (JOIN) - Теория
- Объединения (CROSS JOIN, INNER JOIN)
- Объединения (LEFT JOIN, RIGHT JOIN)
- Объединения (FULL OUTER JOIN)
- Вложенные запросы VS объединения
- Соединения (UNION)
- Оконные функции
- Общие табличные выражения (CTE)
- Рекурсивные табличные выражения
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
- Решаем задачи. Пишем SQL код. Часть 3
- Решаем задачи. Пишем SQL код. Часть 4
07[SQL-3] Продвинутые фичи SQL
- Полнотекстовый поиск
- Представления (View)
- Хранимые процедуры
- Пользовательские функции
- Переменные
- Триггеры
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Контрольные вопросы. Часть 3
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
08[SQL-3] Транзакции
- Введение в транзакции
- Обработка исключений (ошибок)
- Уровни изоляции транзакций
- Блокировки таблиц
- Взаимная блокировка (deadlock)
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код
09[SQL-3] Права доступа
- Пользователи
- Роли
- Контрольные вопросы. Часть 1
- Контрольные вопросы. Часть 2
- Решаем задачи. Пишем SQL код
10[SQL-3] Вопросы оптимизации
- Лишний JOIN
- Денормализация
- Настройки сервера
- Анализ запросов (EXPLAIN)
- Графический план исполнения запроса
- Исправление проблемных мест
- Графический план: показательные примеры
- Контрольные вопросы
- Решаем задачи. Пишем SQL код. Часть 1
- Решаем задачи. Пишем SQL код. Часть 2
11[SQL-3] Дополнительные темы
- Работа с логами
- Циклы
- Курсоры
- SQL инъекции
- Контрольные вопросы
- Решаем задачи. Пишем SQL код
12[SQLAlchemy] Введение, подключение и первый запрос
- Что такое SQLAlchemy?
- Подключение к БД: Dialect, URL, Engine, Pool
- Первый select() запрос (Core vs ORM + Session)
- Result API: Result, ScalarResult, Row
13[SQLAlchemy] Декларативные модели (SQLAlchemy 2.0)
- DeclarativeBase и registry
- MetaData, naming_convention, схемы
- Базовые типы данных
- Расширенные типы данных
- Ограничения и индексы: Unique, Check, составные ключи
- Значения default, server_default, onupdate, вычисляемые поля
- Наследование: Mixin, Single Table, Joined Table, Concrete
14[SQLAlchemy] Связи и каскады
- ForeignKey, relationship, back_populates, backref
- Ассоциации: secondary vs association object
- Каскады: cascade, delete-orphan, passive_deletes
- Самоссылочные связи (self-referencing)
15[SQLAlchemy] CRUD и транзакции в ORM
- Жизненный цикл Session: expire_on_commit, autoflush
- Создание объектов, append, add, add_all, delete, begin, merge
- Синхронизация через RETURNING + refresh()
- Откат изменений через rollback() и сброс состояния
- Работа с данными (SELECT, UPDATE, DELETE и проекции)
- Обработка ошибок: IntegrityError, NoResultFound, MultipleResults
16[SQLAlchemy] Запросы: от базовых до CTE и окон
- Фильтрация и сортировки
- Агрегаты и группировка
- JOIN: INNER и LEFT
- Self-JOIN и алиасы
- Подзапросы
- Оконные функции: over, row_number, сдвиги, агрегаты
- Паттерны пагинации и выбор узких выборок
17[SQLAlchemy] Оптимизация ORM и управление данными
- Стратегии загрузки и N+1
- Явные стратегии загрузки и контроль ORM-графа
- Узкие ORM-модели и экономичная загрузка данных
- Типичные архитектурные ошибки и транзакции
- Репозиторий в SQLAlchemy
18[SQLAlchemy] SQLAlchemy Core
- Table, Column и конструктор выражений
- DDL через метаданные: связи, схемы, индексы, ограничения
- Компиляция/сырой SQL: compile(), text(), bindparams
- Потоковые выборки и большие данные: fetchmany, execution options
19[SQLAlchemy] Асинхронность
- AsyncEngine, AsyncSession, драйверы
- Выполнение: execute, scalars, loader options в await-контексте
- Ошибки и отмена задач
20[SQLAlchemy] Миграции с Alembic
- Инициализация проекта, конфигурация, env.py
- Автогенерация vs ручные ревизии, naming_convention
- Ветвления и merge heads, offline/online
21Завершение учебной программы
- Итоги
Отзывы о курсе
Оставьте отзыв
Расскажите о качестве обучения, поддержке и результате. Это поможет другим выбрать организацию осознанно.
Оставьте заявку
Консультант ответит на вопросы о курсе «Базы данных в Python: SQL + SQLAlchemy» и поможет разобраться в деталях обучения.
Нажимая кнопку, вы даете согласие на обработку персональных данных
Информация обновлена 7 сентября 2026 г.

Stepik 

















