Базы данных

Интерактивный курс по базам данных: SQL, реляционные базы (MySQL, SQLite), проектирование таблиц, индексы, хранимые процедуры, оконные функции и MongoDB. Курс добавляется по одному занятию из источника Databases_Morning_2025_PD.

Что нужно знать заранее

  • Базовая работа с компьютером и файлами.
  • Желательно базовое знакомство с Python (для занятий с SQLite в Google Colab).
  • Для практики понадобятся DBeaver, MongoDB Compass или доступ к учебным базам данных.

Справочники команд

Полные каталоги команд и операторов — пополняются с каждым новым занятием.

Старт курса

Блок 1: Основы SQL (Занятия 01–08)

Первые запросы, фильтрация WHERE, NULL, условные конструкции CASE/IF, ограничение выборки, уникальные значения и практикумы.

Блок 2: Типы данных, таблицы и представления (Занятия 09–16)

Типы данных, работа с датой и временем, создание и изменение таблиц, ограничения, представления VIEW.

Блок 3: Агрегация и группировка (Занятия 17–20)

Агрегирующие функции, GROUP BY, фильтрация групп HAVING.

Блок 4: Связи между таблицами и JOIN (Занятия 21–24)

ER-диаграммы, нормализация, JOIN, UNION.

Блок 5: Подзапросы, CTE и оконные функции (Занятия 25–40)

Подзапросы, табличные выражения CTE, оконные функции, функции ранжирования, смещения и выбора.

Занятие 25 — Подзапросы

Вложенные запросы в SELECT, WHERE, FROM.

Средняя~90 мин

Занятие 26 — Табличные выражения

WITH, именованные временные таблицы.

Средняя~90 мин

Занятие 27 — Практикум 7

Практика на подзапросы и CTE.

Практикум~90 мин

Занятие 28 — Summary session 7

Повторение подзапросов и CTE.

Повторение~60 мин

Занятие 29 — Отработка основных операторов. Часть 1

Повторение и закрепление SQL-операторов.

Средняя~90 мин

Занятие 30 — Отработка основных операторов. Продолжение

Продолжение отработки операторов.

Средняя~90 мин

Занятие 31 — Практикум 8

Практика на отработанные операторы.

Практикум~90 мин

Занятие 32 — Summary session 8

Повторение после отработки операторов.

Повторение~60 мин

Занятие 33 — Оконные функции. Общие концепции

Введение в оконные функции, OVER, PARTITION BY.

Продвинутая~90 мин

Занятие 34 — Агрегирующие оконные функции

Агрегация в окнах.

Продвинутая~90 мин

Занятие 35 — Практикум 9

Практика на агрегирующие оконные функции.

Практикум~90 мин

Занятие 36 — Summary session 9

Повторение оконных функций.

Повторение~60 мин

Занятие 37 — Оконные функции: функции ранжирования

RANK, DENSE_RANK, ROW_NUMBER.

Продвинутая~90 мин

Занятие 38 — Оконные функции: функции смещения и выбора

LEAD, LAG, FIRST_VALUE, LAST_VALUE, NTH_VALUE.

Продвинутая~90 мин

Занятие 39 — Практикум 10

Практика на LAG, LEAD, FIRST_VALUE, DENSE_RANK, ROW_NUMBER.

Практикум~90 мин

Занятие 40 — Summary session 10

Повторение оконных функций ранжирования, смещения и выбора.

Повторение~60 мин

Блок 6: Оптимизация, индексы, процедуры (Занятия 41–52)

Оптимизация запросов, индексы, пользовательские функции, хранимые процедуры, параметры, DBeaver, SQLite.

Занятие 41 — Оптимизация запросов. Индексация

Индексы, планы выполнения, ускорение выборок.

Продвинутая~90 мин

Занятие 42 — Функции

Создание пользовательских функций, возврат значений и вызов в SELECT.

Продвинутая~90 мин

Занятие 43 — Практикум 11

Практика создания функций для единиц измерения и геометрических расчётов.

Практикум~90 мин

Занятие 44 — Summary session 11

Повторение индексации, EXPLAIN и пользовательских функций.

Повторение~60 мин

Занятие 45 — Хранимые процедуры

Создание и вызов хранимых процедур, параметры IN и OUT.

Продвинутая~90 мин

Занятие 46 — Параметры

IN, OUT и INOUT параметры в хранимых процедурах MySQL.

Продвинутая~90 мин

Занятие 47 — Практикум 12

Практика на IN, OUT и INOUT параметры хранимых процедур.

Практикум~90 мин

Занятие 48 — Summary session 12

Повторение хранимых процедур, параметров и задач практикума.

Повторение~60 мин

Занятие 49 — Установка и знакомство с DBeaver

Установка DBeaver, подключение к MySQL, ER Diagram и экспорт CSV.

Начальная~60 мин

Занятие 50 — Подключение к SQLite в Google Colab

Работа с SQLite из Python в Google Colab: подключение, таблицы, pandas и SQL-запросы.

Средняя~90 мин

Занятие 51 — Практикум 13

Практика в Colab: таблица погоды, SQLite и аналитические запросы.

Практикум~90 мин

Занятие 52 — Summary session SQL 13

Повторение DBeaver, SQLite, pandas и задач SQL 13.

Повторение~60 мин

Блок 7: MongoDB (Занятия 53–76)

Знакомство с MongoDB, Compass, mongosh, CRUD, агрегация, Atlas, индексы, репликация, CAP-теорема.

Занятие 53 — Знакомство с MongoDB. Часть 1

Документоориентированная модель MongoDB: документы, коллекции, BSON, _id и Compass.

Начальная~90 мин

Занятие 54 — Знакомство с MongoDB. Часть 2

Первые запросы в MongoDB Compass: Filter, Project, Sort, условия, списки и $or.

Начальная~90 мин

Занятие 55 — Практикум 14

Практика MongoDB на коллекциях companies, trips и restaurants: фильтры, подсчёты, сортировка и группировка.

Практикум~90 мин

Занятие 56 — Summary session 14

Повторение MongoDB: документы, коллекции, BSON, _id, Compass, первые фильтры и домашние задания.

Повторение~60 мин

Занятие 57 — MongoDB Compass and mongosh. Формирование выборки. Часть 1

Особенности MongoDB Compass, анализ документов, подсказки, история запросов и операторы $all, $exists, $in.

Средняя~90 мин

Занятие 58 — MongoDB Compass and mongosh. Формирование выборки. Часть 2

Работа с mongosh: find(), операторы сравнения и логики, countDocuments(), limit(), skip(), $slice и sort().

Средняя~90 мин

Занятие 59 — Практикум 15

Практика запросов к коллекции ich.imdb: отсутствующие поля, массивы, языки, жанры, рейтинг, сортировка и подсчёты.

Практикум~90 мин

Занятие 60 — Summary session 15

Повторение MongoDB Compass и mongosh: отображение коллекций, $all, $exists, $in, find(), сравнения, логика, limit, skip, $slice и sort.

Повторение~60 мин

Занятие 61 — MongoDB: Создание и наполнение коллекций. Агрегация. Часть 1

Создание коллекции в ich_edit, insertMany, выборки по новой коллекции, deleteMany, updateMany с $inc, экспорт и импорт данных.

Средняя~90 мин

Занятие 62 — MongoDB: Создание и наполнение коллекций. Агрегация. Часть 2

Aggregation Pipeline в MongoDB Compass: $match, $group, $sort, $skip, $limit, $project и функции $sum, $avg, $max, $min, $round, $first, $last.

Средняя~90 мин

Занятие 63 — Практикум 16

Практика на коллекции planets: создание документов, фильтры, сортировка, подсчёты, обновление и агрегация.

Практикум~90 мин

Занятие 64 — Summary session 16

Повторение создания коллекций, update/delete, экспорта/импорта и Aggregation Pipeline на задачах users, movies и orders.

Повторение~60 мин

Занятие 65 — MongoDB Atlas. Индексы. Наполнение коллекций. Часть 1

MongoDB Atlas, sample dataset, индексы, COLLSCAN/IXSCAN, geo-индекс 2dsphere и уникальный индекс email.

Средняя~90 мин

Занятие 66 — MongoDB Atlas. Индексы. Наполнение коллекций. Часть 2

Наполнение students, $match+$out, создание graduated_students, выборка Istanbul и топ-100 Manhattan через aggregation.

Средняя~90 мин

Занятие 67 — Практикум 17

Практические задачи по материалам SQL Practicum 17: высокорейтинговые фильмы, импорт CSV, text index, составные индексы и агрегация пользовательских данных.

Практикум~90 мин

Занятие 68 — Summary session 17

Повторение MongoDB Atlas, индексов, COLLSCAN/IXSCAN, geo-индекса 2dsphere, explain(), коллекции students, aggregation и разбор домашнего задания по sample_mflix и sample_airbnb.

Повторение~60 мин

Занятие 69 — Репликация и CAP теорема. Часть 1

Первая часть темы о репликации: зачем нужны реплики, как replica set повышает отказоустойчивость и производительность чтения, чем отличаются синхронная и асинхронная репликация, что делает arbiter.

Продвинутая~90 мин

Занятие 70 — Репликация и CAP теорема. Часть 2

Вторая часть темы: CAP-теорема, Consistency, Availability, Partition Tolerance, связь с ACID, практические задания по trips, companies, shipwrecks, restaurants и домашка по Hawaii и imdb.

Продвинутая~90 мин

Занятие 71 — Практикум 18

Практическая работа из источника: 12 задач на группировку, средние значения, подсчёты, сортировку и выбор топовых записей в MongoDB.

Практикум~90 мин

Занятие 72 — Summary session 18

Повторение недели из источника: репликация, CAP, ACID, закрепляющий тест и разбор домашнего задания 18.

Повторение~60 мин

Занятие 73 — Практическая отработка MongoDB. Часть 1

Занятие по источнику Database 55.1: $bucket, создание коллекции reviews из массива отзывов, вычисление средних оценок ресторанов, $merge и total по продажам.

Средняя~90 мин

Занятие 74 — Практическая отработка MongoDB. Часть 2

Занятие по источнику Database 55.2: сортировка по total, активный reviewer, популярные кухни, $lookup, геопоиск Brighton Beach и домашка 19 по Spotify/Youtube.

Средняя~90 мин

Занятие 75 — Практикум 19

Практикум по MongoDB из источника Database 56: личная копия UK_used_cars, производители, трансмиссии, средний пробег, перевод mpg в l/100km, $merge и $bucket по цене дизельных авто.

Практикум~90 мин

Занятие 76 — Summary session 19

Повторение MongoDB из источника Database 57: $bucket, $match, $project, $unwind, $set, $unset, $out, $lookup, задачи по Airbnb, restaurants, sales, customers/transactions и разбор домашнего задания 19.

Повторение~60 мин

Блок 8: Ревизия и проект (Занятия 77–81)

Ревизия пройденного материала, практикумы и презентация итогового проекта.

Занятие 77 — Revision. Часть 1

Revision по MySQL из источника Database 58.1: подключение к MySQL из Jupyter/Colab через mysql-connector-python, cursor/fetchall/description/DataFrame и повторение запросов sakila с JOIN, GROUP BY, HAVING и оконными функциями.

Повторение~90 мин

Занятие 78 — Revision. Часть 2

Revision по MongoDB из источника Database 58.2: подключение к MongoDB из Jupyter/Colab через pymongo, чтение Spotify_Youtube в pandas, insert_one в ich_edit, повторение find/$regex/$and и aggregation stages, плюс ДЗ 20 по sakila и restaurants.

Повторение~90 мин

Занятие 79 — Практикум 20

Итоговый практикум из источника Database 59: SQL-задачи по sakila и MongoDB-задачи по ich.UK_used_cars, включая фильтры, regex и aggregation pipeline.

Практикум~90 мин

Занятие 80 — Summary session 20

Финальное повторение курса из источника Database 60: SQL, проектирование, оконные функции, MongoDB, Atlas, индексы, репликация и CAP, плюс закрепляющий тест.

Повторение~60 мин

Занятие 81 — Презентация проекта

Финальное занятие курса: презентация итогового проекта Databases 2025 (PD). Источник LMS доступен только как страница входа, поэтому занятие фиксирует формат защиты и чеклист подготовки.

Проект~180 мин

Курс завершён

Все занятия курса Базы данных созданы и доступны из оглавления.