ОП.08 Основы проектирования баз данных — Тема 5. Организация запросов SQL — Операторы манипулирования данными
Цель учебного занятия: Сформировать у обучающихся целостную систему профессиональных теоретических знаний и прикладных инженерных навыков по конструированию и оптимизации SQL-запросов манипулирования данными (DML): освоение синтаксических конструкций одиночной и пакетной вставки INSERT, вставки результатов выборки INSERT...SELECT, возврата сгенерированных значений RETURNING, атомарного разрешения конфликтов уникальности UPSERT (ON CONFLICT DO UPDATE/DO NOTHING с псевдотаблицей EXCLUDED), модификации строк UPDATE по предикату и соединениям FROM, селективного удаления DELETE, а также сравнительный анализ DELETE и TRUNCATE на уровне блокировок, MVCC и журнала WAL.
Комплекс образовательных задач:
ON CONFLICT и псевдотаблицу EXCLUDED; изучить синтаксис join-обновлений через конструкцию UPDATE ... FROM; рассмотреть архитектурные различия между DML-оператором DELETE и DDL-командой TRUNCATE на уровне системных блокировок, журналирования в WAL и нагрузки на B-Tree индексы.Осваиваемые компетенции (ФГОС СПО 09.02.07):
Оснащение занятия и дидактические материалы:
zanyatie.html), конспект лекции (lekciya.html), интерактивная слайдовая презентация (prezentaciya.html), резервное домашнее задание (domashnee_zadanie.html).В таблице представлена поминутная технологическая карта с распределением учебного времени для основного 80-минутного регламента (двойной академический час) и сокращенного 60-минутного регламента занятия.
| Этап занятия и хронометраж | Дидактические цели этапа | Деятельность преподавателя | Деятельность обучающихся |
|---|---|---|---|
|
1. Организационный момент и мотивация 80 мин: 5 мин 60 мин: 3 мин |
Организация внимания группы, проверка готовности рабочего пространства, постановка проблемной мотивации через реальный производственный инцидент. | Приветствует студентов, фиксирует присутствующих. Демонстрирует кейс из производственной практики: падение биллинговой системы из-за ошибочного запуска UPDATE без секции WHERE на 1.5 млн договоров. Формулирует тему урока, актуальность надежного манипулирования данными и цели занятия. |
Приветствуют преподавателя, занимают рабочие места, настраивают браузеры. Анализируют представленный кейс аварии, формулируют гипотезы причин сбоя, фиксируют тему занятия и цели в конспектах. |
|
2. Актуализация опорных знаний 80 мин: 8 мин 60 мин: 5 мин |
Актуализация базовых понятий реляционной модели: первичные и уникальные ключи, поведение автоинкремента, понятие транзакции ACID. | Проводит экспресс-опрос по ранее изученному материалу: назначение ограничений PRIMARY KEY и UNIQUE, поведение автоинкрементных столбцов (SERIAL / GENERATED ALWAYS AS IDENTITY). Задает проблемный вопрос: «Что произойдет, если два параллельных потока одновременно попытаются вставить одну и ту же запись через предварительный SELECT?». | Отвечают на вопросы преподавателя, вспоминают принципы ссылочной и сущностной целостности. Обсуждают проблему состояния гонки (Race Condition) при конкурентной вставке данных и приходят к выводу о необходимости встроенных механизмов СУБД. |
|
3. Сообщение новых знаний: Теоретический блок 80 мин: 37 мин 60 мин: 27 мин |
Формирование фундаментальных знаний по синтаксису и архитектуре DML-операторов: INSERT (single, batch, INSERT...SELECT), RETURNING, UPSERT (ON CONFLICT), UPDATE с FROM, DELETE vs TRUNCATE, влияние на WAL и индексы. | Демонстрирует интерактивную презентацию (prezentaciya.html, слайды 2–14). Подробно раскрывает:
1) Синтаксис и возможности INSERT INTO (пакетная вставка multi-row, преимущества перед одиночными вставками);
2) Клаузу RETURNING для атомарного возврата ID и сгенерированных данных;
3) Механику UPSERT (ON CONFLICT DO UPDATE/DO NOTHING) и виртуальную псевдотаблицу EXCLUDED;
4) Модификацию UPDATE по предикату и через секцию FROM (Join-обновление);
5) Селективный DELETE и его отличие от TRUNCATE по уровням блокировок (ROW EXCLUSIVE vs ACCESS EXCLUSIVE), транзакционному журналу WAL и освобождению дискового пространства;
6) Внутреннее поведение MVCC и оптимизацию HOT (Heap-Only Tuples). |
Слушают лекционный материал преподавателя, конспектируют ключевые положения в тетрадях и электронных конспектах (lekciya.html). Задают уточняющие вопросы по семантике псевдотаблицы EXCLUDED, формуле слияния старых и новых остатков, механизму MVCC и поведению B-Tree индексов при частых обновлениях. |
|
4. Разбор эталонного инженерного кейса 80 мин: 12 мин 60 мин: 10 мин |
Практическая демонстрация выполнения сложных DML-запросов на живой базе данных через терминал psql/pgAdmin. | На проекторе в терминале psql проводит «живое» тестирование сквозного сценария: 1) Выполняет пакетную вставку позиций склада с получением новых ID через RETURNING; 2) Проводит повторную вставку конфликтующего артикула с демонстрацией срабатывания UPSERT и пересчета суммарного остатка через EXCLUDED; 3) Сравнивает время выполнения и объем сгенерированного WAL при DELETE FROM большой таблицы и TRUNCATE TABLE. | Наблюдают за демонстрацией преподавателя, сопоставляют синтаксис запросов с выводом терминала СУБД, фиксируют отличия в сообщениях СУБД (INSERT 0 5, UPDATE 1, TRUNCATE TABLE) и времени исполнения. |
|
5. Первичное закрепление материала 80 мин: 12 мин 60 мин: 11 мин |
Отработка практических навыков составления сложных DML-запросов в интерактивном рабочем листе студента. | Инструктирует обучающихся по порядку работы с интерактивным рабочим листом zanyatie.html. Распределяет студентов по 4 прикладным вариантам:
Вариант 1 — Складской учет (пакетный INSERT 5 позиций и UPSERT остатков);
Вариант 2 — Медицинская клиника (UPDATE статуса по соединению с Оплатой, селективный DELETE отмененных записей старше 1 года с RETURNING);
Вариант 3 — Банковский процессинг (INSERT INTO...SELECT в архив и массовый UPDATE процентов);
Вариант 4 — Образовательный портал (UPSERT оценок и очистка неподтвержденных профилей). Консультирует студентов, следит за корректностью SQL-синтаксиса. |
Открывают интерактивный лист zanyatie.html, заполняют поля ФИО и учебной группы. Выбирают назначенный вариант, формулируют комплексные SQL-запросы модификации данных, проверяют корректность синтаксиса и обосновывают выбор операторов. Сохраняют результаты в браузере (LocalStorage). |
|
6. Подведение итогов, рефлексия, ДЗ 80 мин: 6 мин 60 мин: 4 мин |
Анализ качества усвоения материала, разбор типичных студенческих ошибок, эмоциональная рефлексия через тематический мем, выдача резервного задания. | Демонстрирует слайд 15 презентации с культовым веб-комиксом Bobby Tables (xkcd #327), разъясняет важность параметризации запросов. Проводит экспресс-разбор наиболее частых неточностей (пропуск EXCLUDED в UPSERT, ошибка синтаксиса JOIN в UPDATE). Озвучивает критерии оценки по 4-балльной рубрике. Проводит инструктаж по резервному дистанционному заданию (domashnee_zadanie.html) и условиям его сдачи. |
Участвуют в рефлексивной дискуссии, анализируют мем со слайда 15 и осознают риски инъекций в DML-запросах. Проводят самопроверку выполненных заданий. Задают вопросы по резервному домашнему заданию, сохраняют копию рабочего листа в PDF. |