Базы данных
Интерактивный курс по базам данных: SQL, реляционные базы (MySQL, SQLite), проектирование таблиц, индексы, хранимые процедуры, оконные функции и MongoDB. Курс добавляется по одному занятию из источника Databases_Morning_2025_PD.
Что нужно знать заранее
- Базовая работа с компьютером и файлами.
- Желательно базовое знакомство с Python (для занятий с SQLite в Google Colab).
- Для практики понадобятся DBeaver, MongoDB Compass или доступ к учебным базам данных.
Справочники команд
Полные каталоги команд и операторов — пополняются с каждым новым занятием.
Старт курса
Блок 1: Основы SQL (Занятия 01–08)
Первые запросы, фильтрация WHERE, NULL, условные конструкции CASE/IF, ограничение выборки, уникальные значения и практикумы.
Занятие 01 — Введение в базы данных. Первый запрос
Первая выборка, стиль запросов.
Занятие 02 — Оператор WHERE. Специальное значение NULL
Фильтрация строк, сравнение с NULL, логические операторы.
Занятие 03 — Практикум 1
Практические задачи на SELECT и WHERE.
Занятие 04 — Summary session 1
Повторение основ SQL.
Занятие 05 — Условные конструкции: операторы CASE, IF
Условная логика в SQL-запросах.
Занятие 06 — Ограничение выборки. Выбор уникальных значений
LIMIT, DISTINCT, сортировка.
Занятие 07 — Практикум 2
Практика на CASE, LIMIT, DISTINCT.
Занятие 08 — Summary session 2
Повторение блока основ SQL.
Блок 2: Типы данных, таблицы и представления (Занятия 09–16)
Типы данных, работа с датой и временем, создание и изменение таблиц, ограничения, представления VIEW.
Занятие 09 — Типы данных. Изменение типов данных
Числовые, строковые, булевы типы, приведение типов.
Занятие 10 — Особенности работы с датой и временем
Типы DATE, TIME, DATETIME, TIMESTAMP, функции работы с датами.
Занятие 11 — Практикум 3
Практика функций даты/времени и преобразования типов.
Занятие 12 — Summary session 3
Повторение типов данных, CAST и работы с датами.
Занятие 13 — Создание и изменение таблиц. Ограничения
CREATE TABLE, ограничения, INSERT, UPDATE, копирование таблиц.
Занятие 14 — Представления View
Создание и использование VIEW.
Занятие 15 — Практикум 4
Практика на DDL, таблицы и представления.
Занятие 16 — Summary session 4
Повторение блока DDL и представлений.
Блок 3: Агрегация и группировка (Занятия 17–20)
Агрегирующие функции, GROUP BY, фильтрация групп HAVING.
Занятие 17 — Агрегирующие функции. Оператор GROUP BY
COUNT, SUM, AVG, MIN, MAX, группировка данных.
Занятие 18 — Фильтрация агрегированных данных. Having
Отличие WHERE от HAVING.
Занятие 19 — Практикум 5
Практика на агрегацию и группировку.
Занятие 20 — Summary session 5
Повторение агрегации и HAVING.
Блок 4: Связи между таблицами и JOIN (Занятия 21–24)
ER-диаграммы, нормализация, JOIN, UNION.
Занятие 21 — Взаимосвязи между таблицами. ER диаграмма
Связи один-ко-многим, многие-ко-многим, ER-диаграммы.
Занятие 22 — Операторы JOIN и UNION
INNER JOIN, LEFT JOIN, RIGHT JOIN, объединение результатов UNION.
Занятие 23 — Практикум 6
Практика на JOIN, UNION и связи.
Занятие 24 — Summary session 6
Повторение JOIN и связей.
Блок 5: Подзапросы, CTE и оконные функции (Занятия 25–40)
Подзапросы, табличные выражения CTE, оконные функции, функции ранжирования, смещения и выбора.
Занятие 25 — Подзапросы
Вложенные запросы в SELECT, WHERE, FROM.
Занятие 26 — Табличные выражения
WITH, именованные временные таблицы.
Занятие 27 — Практикум 7
Практика на подзапросы и CTE.
Занятие 28 — Summary session 7
Повторение подзапросов и CTE.
Занятие 29 — Отработка основных операторов. Часть 1
Повторение и закрепление SQL-операторов.
Занятие 30 — Отработка основных операторов. Продолжение
Продолжение отработки операторов.
Занятие 31 — Практикум 8
Практика на отработанные операторы.
Занятие 32 — Summary session 8
Повторение после отработки операторов.
Занятие 33 — Оконные функции. Общие концепции
Введение в оконные функции, OVER, PARTITION BY.
Занятие 34 — Агрегирующие оконные функции
Агрегация в окнах.
Занятие 35 — Практикум 9
Практика на агрегирующие оконные функции.
Занятие 36 — Summary session 9
Повторение оконных функций.
Занятие 37 — Оконные функции: функции ранжирования
RANK, DENSE_RANK, ROW_NUMBER.
Занятие 38 — Оконные функции: функции смещения и выбора
LEAD, LAG, FIRST_VALUE, LAST_VALUE, NTH_VALUE.
Занятие 39 — Практикум 10
Практика на LAG, LEAD, FIRST_VALUE, DENSE_RANK, ROW_NUMBER.
Занятие 40 — Summary session 10
Повторение оконных функций ранжирования, смещения и выбора.
Блок 6: Оптимизация, индексы, процедуры (Занятия 41–52)
Оптимизация запросов, индексы, пользовательские функции, хранимые процедуры, параметры, DBeaver, SQLite.
Занятие 41 — Оптимизация запросов. Индексация
Индексы, планы выполнения, ускорение выборок.
Занятие 42 — Функции
Создание пользовательских функций, возврат значений и вызов в SELECT.
Занятие 43 — Практикум 11
Практика создания функций для единиц измерения и геометрических расчётов.
Занятие 44 — Summary session 11
Повторение индексации, EXPLAIN и пользовательских функций.
Занятие 45 — Хранимые процедуры
Создание и вызов хранимых процедур, параметры IN и OUT.
Занятие 46 — Параметры
IN, OUT и INOUT параметры в хранимых процедурах MySQL.
Занятие 47 — Практикум 12
Практика на IN, OUT и INOUT параметры хранимых процедур.
Занятие 48 — Summary session 12
Повторение хранимых процедур, параметров и задач практикума.
Занятие 49 — Установка и знакомство с DBeaver
Установка DBeaver, подключение к MySQL, ER Diagram и экспорт CSV.
Занятие 50 — Подключение к SQLite в Google Colab
Работа с SQLite из Python в Google Colab: подключение, таблицы, pandas и SQL-запросы.
Занятие 51 — Практикум 13
Практика в Colab: таблица погоды, SQLite и аналитические запросы.
Занятие 52 — Summary session SQL 13
Повторение DBeaver, SQLite, pandas и задач SQL 13.
Блок 7: MongoDB (Занятия 53–76)
Знакомство с MongoDB, Compass, mongosh, CRUD, агрегация, Atlas, индексы, репликация, CAP-теорема.
Занятие 53 — Знакомство с MongoDB. Часть 1
Документоориентированная модель MongoDB: документы, коллекции, BSON, _id и Compass.
Занятие 54 — Знакомство с MongoDB. Часть 2
Первые запросы в MongoDB Compass: Filter, Project, Sort, условия, списки и $or.
Занятие 55 — Практикум 14
Практика MongoDB на коллекциях companies, trips и restaurants: фильтры, подсчёты, сортировка и группировка.
Занятие 56 — Summary session 14
Повторение MongoDB: документы, коллекции, BSON, _id, Compass, первые фильтры и домашние задания.
Занятие 57 — MongoDB Compass and mongosh. Формирование выборки. Часть 1
Особенности MongoDB Compass, анализ документов, подсказки, история запросов и операторы $all, $exists, $in.
Занятие 58 — MongoDB Compass and mongosh. Формирование выборки. Часть 2
Работа с mongosh: find(), операторы сравнения и логики, countDocuments(), limit(), skip(), $slice и sort().
Занятие 59 — Практикум 15
Практика запросов к коллекции ich.imdb: отсутствующие поля, массивы, языки, жанры, рейтинг, сортировка и подсчёты.
Занятие 60 — Summary session 15
Повторение MongoDB Compass и mongosh: отображение коллекций, $all, $exists, $in, find(), сравнения, логика, limit, skip, $slice и sort.
Занятие 61 — MongoDB: Создание и наполнение коллекций. Агрегация. Часть 1
Создание коллекции в ich_edit, insertMany, выборки по новой коллекции, deleteMany, updateMany с $inc, экспорт и импорт данных.
Занятие 62 — MongoDB: Создание и наполнение коллекций. Агрегация. Часть 2
Aggregation Pipeline в MongoDB Compass: $match, $group, $sort, $skip, $limit, $project и функции $sum, $avg, $max, $min, $round, $first, $last.
Занятие 63 — Практикум 16
Практика на коллекции planets: создание документов, фильтры, сортировка, подсчёты, обновление и агрегация.
Занятие 64 — Summary session 16
Повторение создания коллекций, update/delete, экспорта/импорта и Aggregation Pipeline на задачах users, movies и orders.
Занятие 65 — MongoDB Atlas. Индексы. Наполнение коллекций. Часть 1
MongoDB Atlas, sample dataset, индексы, COLLSCAN/IXSCAN, geo-индекс 2dsphere и уникальный индекс email.
Занятие 66 — MongoDB Atlas. Индексы. Наполнение коллекций. Часть 2
Наполнение students, $match+$out, создание graduated_students, выборка Istanbul и топ-100 Manhattan через aggregation.
Занятие 67 — Практикум 17
Практические задачи по материалам SQL Practicum 17: высокорейтинговые фильмы, импорт CSV, text index, составные индексы и агрегация пользовательских данных.
Занятие 68 — Summary session 17
Повторение MongoDB Atlas, индексов, COLLSCAN/IXSCAN, geo-индекса 2dsphere, explain(), коллекции students, aggregation и разбор домашнего задания по sample_mflix и sample_airbnb.
Занятие 69 — Репликация и CAP теорема. Часть 1
Первая часть темы о репликации: зачем нужны реплики, как replica set повышает отказоустойчивость и производительность чтения, чем отличаются синхронная и асинхронная репликация, что делает arbiter.
Занятие 70 — Репликация и CAP теорема. Часть 2
Вторая часть темы: CAP-теорема, Consistency, Availability, Partition Tolerance, связь с ACID, практические задания по trips, companies, shipwrecks, restaurants и домашка по Hawaii и imdb.
Занятие 71 — Практикум 18
Практическая работа из источника: 12 задач на группировку, средние значения, подсчёты, сортировку и выбор топовых записей в MongoDB.
Занятие 72 — Summary session 18
Повторение недели из источника: репликация, CAP, ACID, закрепляющий тест и разбор домашнего задания 18.
Занятие 73 — Практическая отработка MongoDB. Часть 1
Занятие по источнику Database 55.1: $bucket, создание коллекции reviews из массива отзывов, вычисление средних оценок ресторанов, $merge и total по продажам.
Занятие 74 — Практическая отработка MongoDB. Часть 2
Занятие по источнику Database 55.2: сортировка по total, активный reviewer, популярные кухни, $lookup, геопоиск Brighton Beach и домашка 19 по Spotify/Youtube.
Занятие 75 — Практикум 19
Практикум по MongoDB из источника Database 56: личная копия UK_used_cars, производители, трансмиссии, средний пробег, перевод mpg в l/100km, $merge и $bucket по цене дизельных авто.
Занятие 76 — Summary session 19
Повторение MongoDB из источника Database 57: $bucket, $match, $project, $unwind, $set, $unset, $out, $lookup, задачи по Airbnb, restaurants, sales, customers/transactions и разбор домашнего задания 19.
Блок 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 и оконными функциями.
Занятие 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.
Занятие 79 — Практикум 20
Итоговый практикум из источника Database 59: SQL-задачи по sakila и MongoDB-задачи по ich.UK_used_cars, включая фильтры, regex и aggregation pipeline.
Занятие 80 — Summary session 20
Финальное повторение курса из источника Database 60: SQL, проектирование, оконные функции, MongoDB, Atlas, индексы, репликация и CAP, плюс закрепляющий тест.
Занятие 81 — Презентация проекта
Финальное занятие курса: презентация итогового проекта Databases 2025 (PD). Источник LMS доступен только как страница входа, поэтому занятие фиксирует формат защиты и чеклист подготовки.
Курс завершён
Все занятия курса Базы данных созданы и доступны из оглавления.