Бакалавриат
2020/2021
Язык SQL
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Статус:
Курс по выбору (Прикладная математика и информатика)
Направление:
01.03.02. Прикладная математика и информатика
Где читается:
Факультет компьютерных наук
Когда читается:
3-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Преподаватели:
Моргунов Евгений Павлович
Язык:
русский
Кредиты:
5
Контактные часы:
60
Программа дисциплины
Аннотация
Курс «Язык SQL» создан по инициативе и при поддержке компании «Постгрес Профессиональный» https://postgrespro.ru/. Курс построен на основе учебника, выпущенного в издательстве «БХВ-Петербург»: Моргунов, Е. П. PostgreSQL. Основы языка SQL : учеб. пособие / Е. П. Моргунов ; под ред. Е. В. Рогова, П. В. Лузанова. – СПб. : БХВ-Петербург, 2018. – 336 с. : ил. – ISBN 978-5-9775-4022-3. Электронное издание учебника, а также слайды презентаций и видеозаписи лекций свободно доступны по ссылкам на сайте компании «Постгрес Профессиональный» https://edu.postgrespro.ru/sql_primer.pdf, https://postgrespro.ru/education/university/sqlprimer В настоящее время идет работа над второй – продвинутой – частью учебника. Материалы из нее также будут использоваться в преподавании дисциплины. Предлагаемый курс имеет ряд особенностей. 1. Курс является практическим. Это означает, что он не дублирует курс «Теория баз данных». Он предназначен, в первую очередь, для более глубокого изучения языка SQL. 2. Для изучения курса «Язык SQL» не требуется обязательного предварительного знакомства с базами данных. В рамках этого курса студенты смогут получить все минимально необходимые знания основ теории баз данных, которые нужны для полноценного освоения языка SQL. 3. Используется учебная база данных «Авиаперевозки», разработанная специалистами компании «Постгрес Профессиональный». Она содержит большой объем правдоподобных данных, с которыми интересно работать. 4. Будут рассмотрены не только методы построения запросов, но и такие важные темы, как транзакции, основы оптимизации запросов и основы программирования на стороне сервера баз данных. 5. Язык SQL изучается в среде свободной СУБД PostgreSQL. Эта СУБД становится все более популярной в настоящее время. 6. Для занятий подготовлены виртуальные машины с операционной системой Linux, в которой уже установлена СУБД PostgreSQL. Поэтому от студентов не потребуется больших усилий для создания рабочей среды на своих компьютерах. 7. Студенты получат от преподавателя всю необходимую помощь для быстрого вхождения в работу. 8. Дисциплина проводится в следующем формате: первые три недели семестра – очно, затем – дистанционно, с использованием технологий компании Zoom (https://zoom.us/) и других электронных технологий. Экзамен проводится в очной форме. Он заключается в защите финальной работы, которую студент готовит заранее в течение семестра. Опыт проведения курса в таком формате в 2019-20 учебном году был успешным.
Цель освоения дисциплины
- Получение студентами углубленных знаний языка SQL в среде СУБД с открытым программным кодом PostgreSQL и с учетом ее специфики.
Планируемые результаты обучения
- знать основные понятия теории баз данных и владеть основами проектирования баз данных
- знать типы данных СУБД PostgreSQL и уметь использовать их на практике
- уметь создавать различные объекты базы данных (таблицы, представления, индексы)
- уметь использовать возможности СУБД PostgreSQL по работе со слабоструктурированными данными
- знать принципы организации совместной работы транзакций с учетом специфики конкретных уровней изоляции и ее реализации в СУБД PostgreSQL
- знать правила построения запросов к базе данных, различные виды соединений таблиц, различные виды подзапросов, общие табличные выражения
- владеть базовыми навыками программирования на стороне сервера на языках SQL и PL/pgSQL
- уметь использовать полнотекстовый поиск
- владеть базовыми навыками оптимизации запросов к серверу баз данных
- знать назначение хранимых процедур и функций
Содержание учебной дисциплины
- Элементы теории баз данныхИстория баз данных. Модели данных. Системы управления базами данных (СУБД). Реляционная модель (в неформальном изложении). Кортежи и отношения. Ключи. Ограничения целостности. Ссылочная целостность. Элементы реляционной алгебры. Жизненный цикл разработки системы с базой данных. Модель данных «сущность – связь». Понятие о нормализации. Обзор методологии проектирования баз данных: концептуальное, логическое и физическое проектирование.
- Введение в язык SQLСоздание таблиц. Простые запросы. Использование утилиты psql. Вставка строк в таблицы, обновление и удаление строк. Использование первичных и внешних ключей. Группирование и сортировка строк.
- Типы данных СУБД PostgreSQLЧисловые типы: целочисленные, числа фиксированной точности, числа с плавающей точкой. Символьные (строковые) типы: character, text и varchar. Типы «дата/время». Логический тип. Массивы. Типы JSON.
- Основы языка определения данныхЗначения по умолчанию и ограничения целостности: ограничение уникальности UNIQUE, ограничение CHECK, первичный ключ, внешний ключ. Создание и удаление таблиц. Модификация таблиц. Представления. Схемы базы данных.
- ЗапросыДополнительные возможности команды SELECT: шаблоны LIKE, регулярные выражения POSIX, предикаты сравнения, вычисляемые столбцы, упорядочение строк при выводе, ключевое слово DISTINCT, предложение LIMIT, предложение OFFSET, условные выражения (конструкция CASE). Соединения таблиц: внешние соединения, многотабличные запросы. Ключевое слово VALUES. Операции с множествами строк: UNION, INTERSECT, EXCEPT. Агрегирование и группировка, предложение HAVING. Оконные функции (window functions). Подзапросы: скалярный подзапрос, коррелированный подзапрос. Предикат EXISTS. Подзапросы в предложениях SELECT, FROM, HAVING. Вложенные подзапросы. Общее табличное выражение (Common Table Expression — CTE). Рекурсивное общее табличное выражение.
- Изменение данныхВставка строк в таблицы: команда INSERT. Команда INSERT с общим табличным выражением. Предложение RETURNING. Предложение ON CONFLICT. Команда COPY. Обновление строк в таблицах: команда UPDATE. Удаление строк из таблиц: команда DELETE. Команда TRUNCATE.
- ИндексыСоздание индексов: команда CREATE INDEX. Удаление индексов: команда DROP INDEX. Индексы по нескольким столбцам. Уникальные индексы. Индексы на основе выражений. Частичные индексы.
- ТранзакцииСериализация транзакций. Уровни изоляции транзакций: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE. Фиксация транзакции: команда COMMIT. Отмена транзакции: команда ROLLBACK. Блокировки. Предложение FOR UPDATE команды SELECT. Команда LOCK TABLE.
- Повышение производительностиФункции и процедуры. Категории: VOLATILE, STABLE, IMMUTABLE. Перегрузка функций. Значения параметров по умолчанию. Переменное число аргументов. Функции, возвращающие множества. Полиморфные функции. Функции с параметрами типа OUT. Триггеры и триггерные процедуры (функции). Язык PL/pgSQL: объявления, управляющие структуры, курсоры, сообщения об ошибках, отладка.
- Программирование на стороне сервера (язык PL/pgSQL)Функции и процедуры. Категории: VOLATILE, STABLE, IMMUTABLE. Перегрузка функций. Значения параметров по умолчанию. Переменное число аргументов. Функции, возвращающие множества. Полиморфные функции. Функции с параметрами типа OUT. Триггеры и триггерные процедуры (функции). Язык PL/pgSQL: объявления, управляющие структуры, курсоры, сообщения об ошибках, отладка.
- Полнотекстовый поискТаблицы и индексы: поиск в таблице, создание индексов. Управление текстовым поиском: разбор документов, разбор запросов, ранжирование результатов поиска, выделение результатов. Типы индексов GIN и GiST.
Элементы контроля
- Домашнее задание 1
- Домашнее задание 2
- Домашнее задание 3
- Домашнее задание 4
- Домашнее задание 5
- Домашнее задание 6
- Домашнее задание 7
- Домашнее задание 8
- Домашнее задание 9
- Домашнее задание 10
- Домашнее задание 11
- ЭкзаменЭкзамен проходит устно. Он может проводиться как в аудитории (желательно), так и дистанционно (допустимо). Экзамену предшествует домашняя часть работы, состоящая в подготовке экзаменационного задания, которое по сути является микропроектом, предполагающим разработку базы данных для предметной области, выбранной студентом, разработку запросов, функций, триггеров. Непосредственно на экзамене студент защищает выполненную экзаменационную работу и отвечает на сопутствующие теоретические вопросы. Студент на экзамене должен обосновать свои решения, принятые в финальной домашней работе, он должен показать умение писать SQL-запросы и интерпретировать их результаты. На экзамене разрешается пользоваться технической документацией на СУБД PostgreSQL. Время на подготовку студента -- не более 1 часа, продолжительность беседы с преподавателем -- 10-15 минут. Проведение экзамена в описанной форме позволяет проверить умение студентов не только выполнять упражнения из учебника, но и мыслить самостоятельно. Выполнение экзаменационной работы дома позволяет студенту сделать работу более масштабную и интересную.
Промежуточная аттестация
- Промежуточная аттестация (2 модуль)0.05 * Домашнее задание 1 + 0.1 * Домашнее задание 10 + 0.03 * Домашнее задание 11 + 0.03 * Домашнее задание 2 + 0.05 * Домашнее задание 3 + 0.05 * Домашнее задание 4 + 0.12 * Домашнее задание 5 + 0.03 * Домашнее задание 6 + 0.03 * Домашнее задание 7 + 0.05 * Домашнее задание 8 + 0.06 * Домашнее задание 9 + 0.4 * Экзамен
Список литературы
Рекомендуемая основная литература
- Джуба С., Волков А. - Изучаем PostgreSQL 10 - Издательство "ДМК Пресс" - 2018 - 400с. - ISBN: 978-5-97060-643-8 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/116125
- Новиков Б.А. - Основы технологий баз данных - Издательство "ДМК Пресс" - 2019 - 240с. - ISBN: 978-5-94074-820-5 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/123699
Рекомендуемая дополнительная литература
- Астахова И.Ф., Мельников В.М., Толстобров А.П. - СУБД: язык SQL в примерах и задачах - Издательство "Физматлит" - 2009 - 168с. - ISBN: 978-5-9221-0816-4 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/2101