Перейти к основному содержимому
eLearner.app

Интерактивный курс

Курс SQL

Изучите SQL с нуля на английском языке, используя настоящий Postgres в вашем браузере.

01 · Модуль 1 — Базовый ВЫБОР

4 уроков

Основы: чтение данных из таблицы и их фильтрация.

  1. 1.1Введение в SQLЧто такое SQL, почему он используется и как выглядит база данных.~5 min
  2. 1.2ВЫБЕРИТЕ… ИЗСамый простой запрос: чтение строк из таблицы.~10 min
  3. 1.3Фильтрация с помощью WHEREВыбор только тех строк, которые удовлетворяют условию.~10 min
  4. 1.4Сортировка с помощью ORDER BYУпорядочиваем результаты по возрастанию или убыванию.~8 min

02 · Модуль 2. Более мощный SELECT

4 уроков

Ограничивайте, дедуплицируйте, переименовывайте и подсчитывайте: инструменты, которые вы используете каждый день.

  1. 2.1Ограничение с помощью LIMITВозврат только первых N строк, например, для построения таблиц лидеров.~6 min
  2. 2.2Уникальные значения с DISTINCTУдаление дубликатов из результата SELECT.~6 min
  3. 2.3Переименование с помощью ASПридание более читаемых названий столбцам и выражениям в результате.~6 min
  4. 2.4Подсчет и суммирование: COUNT, AVG, MAX.Агрегатные функции: получение одного числа из множества строк.~8 min

03 · Модуль 3. ПРИСОЕДИНЯЙТЕСЬ и ГРУППИРУЙТЕ ПО.

4 уроков

Объединение нескольких таблиц и создание отчетов по группам: суть каждого реального запроса.

  1. 3.1Соединение двух таблиц: INNER JOINОбъединение строк из разных таблиц с учетом их связей.~12 min
  2. 3.2Оставляя все слева: LEFT JOINВключая строки, которым нет совпадений в другой таблице.~10 min
  3. 3.3Группировка с помощью GROUP BYВычисление совокупного показателя по группе, например по отделу.~10 min
  4. 3.4Группы фильтрации: HAVINGСохранение только тех групп, которые удовлетворяют условию в совокупности.~8 min

04 · Модуль 4 — Практический SQL

4 уроков

Инструменты, которые имеют значение в реальной работе: списки, диапазоны, NULL и условная логика.

  1. 4.1Списки и диапазоны: В и МЕЖДУКомпактные фильтры для «одного из этих» и «между А и Б».~8 min
  2. 4.2Обработка значений NULL: IS NULL и COALESCEРаспознавание и устранение недостающих значений без сюрпризов.~10 min
  3. 4.3Условная логика: СЛУЧАЙ, КОГДАПреобразование значений в категории непосредственно в SELECT.~10 min
  4. 4.4Запрос внутри другого: подзапросыИспользование результата SELECT внутри другого SELECT.~12 min

05 · Модуль 5 — Расширенные соединения

4 уроков

Многотабличные JOIN, самообъединения, OUTER, CROSS и операции над множествами: профессиональное объединение данных.

  1. 5.1ОБЪЕДИНЯЙТЕСЬ на трех или более таблицахПрохождение цепочки связей: заказы → клиенты → товары в одном запросе.~12 min
  2. 5.2Self-JOIN: таблица сама с собойИерархии и внутренние отношения: чтение таблицы с двумя ролями (дочерней и родительской).~10 min
  3. 5.3OUTER JOIN: поиск «пробелов»Использование LEFT/RIGHT/FULL OUTER JOIN для поиска строк без совпадений.~10 min
  4. 5.4СОЮЗ, ПЕРЕСЕКРЕТ, ИСКЛЮЧАЯ (и ПЕРЕКРЕСТНОЕ СОЕДИНЕНИЕ)Объединение результатов в виде наборов: объединение, пересечение, разность и декартово произведение.~12 min

06 · Модуль 6 — Встроенные функции

4 уроков

Преобразуйте данные и манипулируйте ими с помощью собственных функций PostgreSQL: строк, дат, чисел, преобразований типов.

  1. 6.1Строковые функцииНИЖНИЙ, ВЕРХНИЙ, ДЛИНА, конкатенация, ПОДСТРОКА, ОБРЕЗКА, ЗАМЕНА, НРАВИТСЯ и НРАВИТСЯ.~12 min
  2. 6.2Функции даты и времениEXTRACT, DATE_TRUNC, интервалы и разница дат.~12 min
  3. 6.3Числовые функцииROUND, CEIL, FLOOR, ABS, MOD и целочисленное и десятичное деление.~10 min
  4. 6.4CAST и преобразования типовПреобразование между типами с помощью `::type` и `CAST(... AS ...)`.~10 min

07 · Модуль 7 — Расширенная аналитика

4 уроков

Многошаговые запросы (CTE), рейтинги и промежуточные итоги (оконные функции), неограниченные иерархии (С РЕКУРСИВОЙ).

  1. 7.1CTE: многошаговые запросы с помощью WithРазбиение сложного запроса на именованные шаги для удобства чтения и повторного использования.~12 min
  2. 7.2Оконные функции: ранжирование и расчеты по группамROW_NUMBER, RANK, DENSE_RANK с OVER(PARTITION BY…) для внутригруппового рейтинга.~14 min
  3. 7.3LAG, LEAD и текущие итогиСравнение каждой строки с предыдущей/следующей и вычисление совокупных сумм.~12 min
  4. 7.4Рекурсивные CTE: иерархии произвольной глубиныС РЕКУРСИВОЙ для обхода иерархий, таких как категории.~14 min

08 · Модуль 8 — Запись и изменение данных

4 уроков

INSERT, UPDATE, DELETE, CREATE TABLE с ограничениями, транзакции: закрытие цикла с записью.

  1. 8.1Вставка данных: ВСТАВИТЬОдно- и многострочное предложение INSERT, RETURNING, явный выбор столбцов.~10 min
  2. 8.2Обновление и удаление: ОБНОВЛЕНИЕ и УДАЛЕНИЕ.Выборочные изменения ГДЕ, и почему забытое ГДЕ — это катастрофа.~10 min
  3. 8.3Создание таблиц и ограничений: DDLСОЗДАЙТЕ ТАБЛИЦУ с ПЕРВИЧНЫМ КЛЮЧОМ, НЕ НУЛЕВЫМ, УНИКАЛЬНЫМ, ВНЕШНИМ КЛЮЧОМ, ПРОВЕРКОЙ и ПО УМОЛЧАНИЮ.~12 min
  4. 8.4Транзакции: все или ничегоBEGIN, COMMIT, ROLLBACK: создание атомарной группы операций.~10 min

09 · Модуль 9 — Структуры данных и DDL

4 уроков

Создание и изменение таблиц, расширенные ограничения, сложные типы и представления.

  1. 9.1Расширенные типы данных и ENUMЧисловые типы, TEXT или VARCHAR, BOOLEAN, UUID и пользовательские типы ENUM.~10 min
  2. 9.2Множественные ограничения и ограничения на уровне таблицыСоставные ограничения UNIQUE и PRIMARY KEY, расширенная проверка и внешние ключи (ON DELETE CASCADE).~12 min
  3. 9.3Изменение структуры: ALTER TABLEДобавление, изменение и удаление столбцов или ограничений из существующих таблиц.~10 min
  4. 9.4Представления и абстракция данныхСоздание представлений для упрощения сложных запросов и МАТЕРИАЛИЗОВАННЫХ ПРЕДСТАВЛЕНИЙ для повышения производительности.~12 min

10 · Оптимизация и индексы

4 уроков

Искусство быстрого выполнения запросов: индексы, планы выполнения и оптимизация базы данных.

  1. 10.1Индексы и B-деревьяСоздавайте индексы, чтобы значительно ускорить поисковые запросы в больших таблицах.~15 min
  2. 10.2ОБЪЯСНИТЬ И АНАЛИЗИРОВАТЬНаучитесь читать планы выполнения базы данных, чтобы диагностировать узкие места.~15 min
  3. 10.3Составные и частичные индексыИспользуйте индексы для нескольких столбцов одновременно или только для определенного фрагмента данных.~12 min
  4. 10.4Проблема N+1Печально известная проблема с производительностью ORM и собственные методы SQL для ее решения в одном запросе.~12 min

11 · Транзакции и параллелизм

4 уроков

Безопасное управление одновременными изменениями данных: транзакции ACID, блокировки и уровни изоляции.

  1. 11.1ACID-транзакции (BEGIN/COMMIT)Поддерживайте согласованность данных с помощью BEGIN, COMMIT и ROLLBACK, группируя запросы в один блок, невидимый для других.~15 min
  2. 11.2Условия гонкиПограничные сценарии: что происходит, когда два параллельных сотрудника базы данных работают с одной и той же пользовательской корзиной.~10 min
  3. 11.3Блокировка и ВЫБОР ДЛЯ ОБНОВЛЕНИЯАктивно блокируйте строки во время чтения, заставляя другие мутирующие потоки ждать своей очереди.~15 min
  4. 11.4Уровни изоляцииДостигните предела, реализовав Serializable, или перейдите к Read Committed для небезопасной, но быстрой производительности.~12 min

12 · Функции и триггеры

4 уроков

Автоматизируйте бизнес-логику внутри базы данных: пишите повторно используемые функции и реагируйте на события с помощью триггеров.

  1. 12.1UDF и базовый SQLСоздавайте собственные пользовательские функции, чтобы инкапсулировать сложные вычисления и повторно использовать их как макросы в каждом запросе.~15 min
  2. 12.2Расширенная логика с PL/pgSQLНаделите свои функции сверхспособностями: переменными, ветвями if-else и циклами в чисто процедурном стиле внутри базы данных.~15 min
  3. 12.3Введение в триггерыОпределите специальные функции, которые могут мгновенно проверять ИСХОДНУЮ (СТАРУЮ) или ВХОДЯЩУЮ (НОВУЮ) запись.~15 min
  4. 12.4Практические триггеры и аудитАвтоматизируйте безопасность: автоматически обновляйте дату «updated_at» и волшебным образом архивируйте удаленные строки для соответствия требованиям.~12 min

13 · Оконные функции

4 уроков

Расширенный анализ данных без свертывания строк: откройте для себя OVER(), PARTITION BY и аналитические функции.

  1. 13.1Введение и предложение OVERВыполняйте агрегатные вычисления (например, SUM или AVG), сохраняя при этом исходные отдельные строки.~15 min
  2. 13.2Группировка с помощью PARTITION BYСоздавайте логические группы (окна) внутри данных, к которым можно применять функции, без использования GROUP BY.~15 min
  3. 13.3Рейтинги: ROW_NUMBER, RANK и DENSE_RANK.Назначайте последовательные номера строк и ранги результатам, правильно обрабатывая связи.~15 min
  4. 13.4Смены: ОТСТАВАНИЕ и ВЕДЕНИЕДоступ к значениям из предыдущей или следующей строки непосредственно из текущей строки для вычисления дельт и вариаций.~12 min

14 · CTE и иерархические запросы (WITH)

3 уроков

Упростите огромные запросы с помощью общих табличных выражений и перемещайтесь по неограниченным деревьям данных с помощью рекурсивных CTE.

  1. 14.1Введение в CTE (WITH)Замените нечитаемые вложенные подзапросы чистым процедурным форматом, объявив временные «виртуальные таблицы».~12 min
  2. 14.2Множественные и связанные CTEУменьшите сложность, разбив обработку на несколько последовательных шагов внутри одного оператора With.~15 min
  3. 14.3Рекурсивные CTE: древовидные данныеПеремещайтесь без ограничений по иерархиям менеджеров и родительским и дочерним категориям, вызывая CTE из самого себя.~18 min

15 · PostgreSQL JSON и NoSQL

2 уроков

Используйте реляционные возможности в сочетании с гибкой поддержкой документов через JSON и JSONB без использования внешних баз данных.

  1. 15.1Интеграция JSON и JSONBХраните сложные документы внутри столбца и запрашивайте их поля с помощью операторов стрелок.~15 min
  2. 15.2Функции агрегирования JSONСоздавайте файлы JSON или массивы объектов на лету прямо в SQL, используя json_build_object() и json_agg().~15 min