На курсе Вы научитесь свободно и уверенно пользоваться современными базами данных, языком структурированных запросов и процедурным языком.
Предисловие
Введение
Часть I. Основы реляционных баз данных
Глава 1. Реляционная модель данных
1.1. Определение реляционной модели данных
1.2. Таблицы баз данных
1.3. Первичные ключи
1.4. Внешние ключи
1.5. Реляционные связи между таблицами
1.6. Нормализация отношений
1.7. Модели баз данных на логическом и физическом уровнях
1.8. Ограничения данных и целостность
1.9. Архитектура клиент-сервер
Контрольные вопросы и задания
Глава 2. Введение в SQL
2.1. Объекты структуры базы данных
2.2. Функции SQL
2.3. Достоинства SQL
2.4. Формы использования SQL
2.5. Система управления реляционными базами данных PostgreSQL
2.6. Правила синтаксиса и основные запросы SQL
2.7. Имена объектов в SQL. Константы, отсутствующие данные
2.8. Типы данных
2.9. Выражения
2.10. Комментарии и форматирование запросов
2.11. Обработка запросов в системах управления реляционными базами данных
Контрольные вопросы и задания
Часть II. Декларативное программирование на SQL
Глава 3. Программирование запросов выборки данных
3.1. Синтаксис запроса SELECT
3.2. Запросы к одной таблице
3.2.1. Секции SELECT и FROM
3.2.2. Секция WHERE
3.2.2.1. Простое сравнение
3.2.2.2. Проверка на логическое значение
3.2.2.3. Проверка на принадлежность диапазону значений
3.2.2.4. Проверка LIKE на соответствие шаблону
3.2.2.5. Проверка на членство во множестве
3.2.2.6. Проверка на NULL
3.2.2.7. Проверка двух значений на отличие
3.2.2.8. Проверка на соответствие регулярному выражению
3.2.2.9. Составные условия поиска
3.2.2.10. Параметризированные секции SELECT и WHERE
3.2.3. Функции обработки данных
3.2.3.1. Классификация функций
3.2.3.2. Скалярные функции
3.2.3.3. Агрегатные функции
3.2.3.4. Функция, возвращающая множество
3.2.3.5. Условные выражения
3.2.3.6 Функции полнотекстового поиска
3.2.4. Секция GROUP BY
3.2.5. Секция HAVING
3.2.6. Секция ORDER BY
3.2.7. Подготовленные запросы
3.3. Многотабличные и вложенные запросы
3.3.1. Соединения таблиц
3.3.1.1. Неявное соединение
3.3.1.2. Явное соединение
3.3.1.3. Реализация операций реляционной алгебры
3.3.1.4. Соединение таблицы со своей копией
3.3.2. Запросы с вложенными запросами
3.3.2.1. Виды вложенных запросов
3.3.2.2. Запросы с независимыми подзапросами
3.3.2.3. Запросы со связанными вложенными запросами
3.3.2.4. Количественные предикаты
3.3.2.5. Проверка существования результата запроса
3.3.3. Операции с наборами данных
3.3.3.1. Объединение
3.3.3.2. Вычитание
3.3.3.3. Пересечение
3.3.4. Рекурсивные и коррелированные подзапросы в секции WITH
3.3.5. Функции для анализа данных*
3.3.6. Рекомендуемые практики построения SQL-запросов
Контрольные вопросы и задания
Глава 4. Программирование запросов определения данных
4.1. Домены
4.2. Создание, изменение и удаление базовых таблиц
4.2.1. Создание таблицы
4.2.2. Определение ограничений столбца
4.2.3. Определение ограничений таблицы
4.2.4. Удаление таблицы
4.2.5. Изменение определения таблицы
4.3. Индексы
4.4. Вре́менные таблицы
4.5. Внешние таблицы. Распределённые запросы
4.6. Хранимые представления
4.7. Последовательности
4.8. Комментарии к объектам базы данных
Контрольные вопросы и задания
Глава 5. Программирование запросов модификации данных
5.1. Добавление данных
5.1.1. Явный запрос INSERT
5.1.2. Запрос INSERT с подзапросом
5.2. Обновление данных
5.2.1. Явный запрос UPDATE
5.2.2. Запрос UPDATE с подзапросами
5.3. Удаление данных
5.3.1. Явный запрос DELETE
5.3.2. Запрос DELETE с подзапросом
5.3.3. Удаление всех строк таблицы
5.4. Условное манипулирование данными
5.4.1. Запрос INSERT ON CONFLICT DO UPDATE
5.4.2. Запрос MERGE
5.5. Обновление представлений
Контрольные вопросы и задания
Часть III. Процедурное программирование
Глава 6. Программирование ХРАНИМЫХ ПРОЦЕДУР И ФУНКЦИЙ
6.1. Основы разработки исполняемых модулей
6.1.1. SQL-сценарии
6.1.2. Переменные и константы
6.1.3. Операторы
6.1.3.1. Условный оператор
6.1.3.2. Оператор множественного выбора CASE и выражение CASE
6.1.3.3. Операторы циклов
6.1.3.4. Операторы перехода
6.1.4. Вывод сообщений о событии базы данных
6.1.5 Анонимные блоки
6.1.6. Обработка ошибок
6.1.7. Курсоры
6.1.7.1. Неявный курсор
6.1.7.2. Явный курсор
6.2. Хранимые процедуры
6.2.1 SQL-программирование хранимых процедур
6.2.2. Программирование хранимых процедур на языке PL/pgSQL
6.3. Хранимые функции
6.3.1 SQL-программирование хранимых функций
6.3.2. Программирование хранимых функций на языке PL/pgSQL
6.4. Динамический SQL
Контрольные вопросы и задания
Часть IV. Событийное программирование
Глава 7. Программирование триггеров
7.1. Триггеры DML
7.1.1. Определение триггера
7.1.2. Примеры табличных триггеров
7.1.3. Управление триггерами
7.2. Триггеры событий
Контрольные вопросы и задания
Часть V. Безопасность данных
Глава 8. Программирование запросов управления доступом
8.1. Принципы доступа к данным. Управление пользователями
8.2. Схемы базы данных
8.3. Предоставление, передача и ограничение привилегий
8.4. SQL-роли
8.5. Привилегии на представления
8.6. Ограничение привилегий
8.7. Рекомендации по раздельному использованию ролей
Контрольные вопросы и задания
Глава 9 . УПРАВЛЕНИЕ ТРАНЗАКЦИЯМИ
9.1. Понятие транзакции
9.2. Восстановление данных
9.3. Параллелизм
9.3.1 Проблемы конкурентного доступа
9.3.2 Изоляция транзакций
9.3.3 Блокировки
Контрольные вопросы и задания
Лабораторный практикум
Лабораторная работа № 1. Основы реляционных баз данных. Учебная база данных
Лабораторная работа № 2. Построение запросов на выборку данных из одной таблицы
Лабораторная работа № 3. Построение запросов на выборку данных из нескольких таблиц (соединения)
Лабораторная работа № 4. Построение запросов с вложенными запросами на выборку данных
Лабораторная работа № 5. Программирование запросов на определение данных
Лабораторная работа № 6. Программирование запросов на модификацию данных
Лабораторная работа № 7. Программирование хранимых процедур и функций
Лабораторная работа № 8. Программирование триггеров
Лабораторная работа № 9. Программирование запросов управления доступом