Тема 1. Введение в PostgreSQL и язык SQL
1.1 Основы архитектуры
PostgreSQL Основы архитектуры PostgreSQL.Редакции и версии PostgreSQL.
1.2 Знакомство со средой разработки (pgAdmin, DBeaver, psql).
Знакомство с pgAdmin (DBeaver). Знакомство с psql
Тема 2. Извлечение данных с использованием SQL оператора SELECT
2.1 Использование оператора SELECT
Синтаксис оператора SELECT.
Понимание логической последовательности операций в выражениях SELECT.
Использование предложения SELECT.
2.2 Написание простых запросов
Написание запросов к одной таблице.
Исключение дубликатов при помощи DISTINCT.
Работа с Null-значениями.
2.3 Создание вычисляемых столбцов
Создание вычисляемых столбцов.
Использование псевдонимов столбцов и таблиц.
Написание простых выражений CASE.
Практические занятия
1. Написание простых запросов.
2. Создание вычисляемых столбцов.
3. Работа с Null-значениями.
Тема 3. Типы данных
3.1 Введение в базовые типы данных PostgreSQL
Введение в типы данных PostgreSQL.
Обзор базовых типов данных PostgreSQL: числовые, символьные, даты/времени, логический.
Приведение типов.
3.2 Работа с массивами и json
Массивы.
Операции над массивами.
Типы JSON (JavaScript Object Notation): json и jsonb.
Вопросы быстродействия при работе с JSON.
Практические занятия
1. Знакомство с типами данных.
2. Приведение типов.
3. Операции над массивами.
4. Работа с json и jsonb.
Тема 4. Фильтрация и сортировка результирующих наборов
4.1 Сортировка данных
Сортировка данных.
Фильтрация данных при помощи опций LIMIT и OFFSET-FETCH.
4.2 Фильтрация данных
Сортировка данных.
Фильтрация данных с помощью условий.
Использование предикатов.
Фильтрация NULL-значений и значений NaN.
Фильтрация данных при помощи опций LIMIT и OFFSET-FETCH.
4.3 Использование регулярных выражений POSIX
Регулярные выражения POSIX.
Использование регулярных выражений при фильтрации записей.
Практические занятия
1. Написание простых запросов с оператором SELECT.
2. Запросы с сортировкой и фильтрацией.
Тема 5. Использование встроенных функций
5.1 Использование встроенных функций
Обзор встроенных функций.
Функции преобразования.
Функции для работы с числами.
Функции для работы с текстом.
Функции для работы с датой/временем.
Логические функции.
Функции для работы с NULL.
Практические занятия
Использование встроенных функций.
Тема 6. Выборка данных из нескольких таблиц
6.1 Понимание объединений
Использование внутренних и внешних объединений.
Понимание объединений (Join).
Использование внутренних объединений (Inner Join).
Использование внешних объединений (Outer Join).
Использование объединений USING и NATURAL.
6.2 Использование перекрестных объединений и самообъединений
Использование перекрестных объединений (Cross Join) и самообъединениq (Self Join).
Практические занятия
Запросы к нескольким таблицам.
Тема 7. Группировка и агрегирование данных
7.1 Использование функций агрегирования
Обзор функций агрегирования.
Синтаксис агрегатных выражений.
Использование функций агрегирования.
7.2 Группировка и фильтрация сгруппированных данных
Использование предложения GROUP BY.
Фильтрация сгруппированных данных с использованием предложения HAVING.
7.3 Управление набором группируемых строк
Фильтрация наборов записей, передаваемых в агрегатную функцию, с помощью FILTER.
7.4 Создание сводных результирующих наборов
Использование в предложении GROUP BY выражений GROUPING SETS, ROLLUP или CUBE.
Использование функции GROUPING для определения результата группирования.
Практические занятия
Группировка и агрегирование данных.
Тема 8. Использование подзапросов и табличных выражений. Использование операторов наборов записей
8.1 Написание автономных подзапросов
Написание автономных (Self-Contained) подзапросов.
8.2 Написание коррелированных подзапросов
Написание коррелированных (связанных) подзапросов.
8.3 Использование предиката EXISTS с подзапросами.
Использование предиката EXISTS с подзапросами.
8.4 Использование табличных выражений.
Написания запросов, использующих производные таблицы.
Написания запросов, использующих общие табличные выражения.
Использование CROSS JOIN LATERAL и LEFT JOIN LATERAL.
8.5 Использование операторов набора строк
Написание запросов с оператором UNION и UNION ALL.
Использование EXCEPT и INTERSECT.
Практические занятия
Использование подзапросов.
Использование операторов набора строк.
Тема 9. Использование оконных функций
9.1 Определение «окон» с помощью выражения OVER
Общее представление об оконных вычислениях.
Понятие окна, рамки, секции.
Синтаксис выражения OVER для создания окон.
Определение именованных окон.
9.2 Использование оконных функций
Оконные функции.
Типы оконных функций.
Особенности использования оконных функций.
Написание запросов с использованием оконных функций.
Практические занятия
Написание запросов с использованием оконных функций для решения аналитических задач.
Тема 10. Манипулирование данными
10.1 Добавление данных
Добавление данных с учетом ограничений целостности.
Оператор INSERT и конструктор VALUES.
Добавление данных на основе выборки SELECT.
10.2 Изменение данных
Изменение существующих записей.
Оператор UPDATE.
10.3 Удаление данных
Удаление записей.
Оператор DELETE.
10.4 Возврат данных из изменённых строк
Возврат данных из изменённых строк.
Использование предложения RETURNING.
Практические занятия
Модификация данных в таблицах БД.
Тема 11. Управление транзакциями
11.1 Транзакции и многоверсионность
Понятие транзакций.
Многоверсионность.
Снимок данных.
Видимость версий строк.
Статус транзакций.
Очистка.
Автоочистка.
11.2 Управление изоляцией транзакций
Типы уровней изоляции, поддерживаемые стандартом.
Типы уровней, реализованные в PostgreSQL.
11.3 Блокировки
Блокировки строк.
Блокировки таблиц.
Время жизни блокировок.
Практические занятия
Управление изоляцией транзакций.
Тема 12. Вопросы производительности запросов
12.1 Вопросы производительности запросов
Общие рекомендации по написанию производительных запросов.
13.2 Использование оператора Explain
Оконные функции.
Типы оконных функций.
Особенности использования оконных функций.
Написание запросов с использованием оконных функций.
Практические занятия
Получение и анализ планов выполнения.
Тема 13. Итоговая аттестация
Зачет.