Методическое руководство преподавателя

ОП.08 Основы проектирования баз данных · Занятие 29
Тема 5. Организация запросов SQL — Понятия SQL. Синтаксис операторов, типы данных
Основание: рабочая программа, §2.2, с. 7–8. Продолжительность: 2 академических часа; регламент занятия — 80 минут, сокращённый — 60 минут. Форма: урок с объяснением теории.

Цели и наблюдаемые результаты

Сформировать представление об SQL как декларативном языке работы с реляционными данными; научить читать типовую форму оператора, различать группы команд и аргументированно выбирать тип столбца. К концу занятия студент объясняет назначение DDL/DML/DQL/DCL/TCL, находит основные части запроса, сопоставляет предметные значения с типами, отличает точное число от приближённого, пишет и объясняет CAST, распознаёт диалектные конструкции.

Связь с программой: знания о языке SQL и средствах проектирования структур БД; умение проектировать реляционные БД и использовать запросы. Компетенции программы: ОК 01, 02, 04, 05, 09, 10; ПК 11.1–11.6.

Подготовка и материалы

Подготовить презентацию (локальный HTML), доску/экран, лекционный конспект и рабочий лист. Для примеров явно объявить учебный диалект PostgreSQL там, где используются ::, JSONB, ARRAY, UUID-функции. Сначала изложить переносимую концепцию SQL; не выдавать специфические имена типов и операторы PostgreSQL за обязательную часть стандарта. Практическая работа здесь — короткие задания на чтение и составление выражений, а не отдельное практическое занятие.

Поминутный регламент — 80 минут

МинутыЭтап и содержаниеДействия преподавателяДействия студентовКонтроль
0–4 (4)ОрганизацияПриветствует, проверяет готовность, обозначает тему и маршрут.Готовят материалы, записывают тему.Готовность группы.
4–10 (6)Мотивация, актуализацияПредлагает кейс: цена 0,10 + 0,20; почему денежный тип важен? Спрашивает, чем запрос отличается от программы действий.Предполагают ответы, вспоминают таблицы, поля, запросы.Устный блиц.
10–18 (8)SQL и его развитиеРаскрывает декларативность, назначение стандартов SQL-92, SQL:1999, SQL:2016, совместимость и роль диалектов.Строят хронологию, фиксируют стандарт/реализацию.Вопрос: стандарт гарантирует ли одинаковые типы во всех СУБД?
18–27 (9)ПодъязыкиРазбирает DDL, DML, DQL, DCL, TCL на командах; уточняет, что DQL как отдельная учебная категория не выделяется всеми авторами/стандартами одинаково.Классифицируют CREATE, SELECT, INSERT, GRANT, COMMIT.Карточки команд.
27–37 (10)Синтаксис оператораПоказывает ключевые слова, идентификаторы, литералы, выражения, предикаты, опциональные части, разделители и порядок клауз на SELECT.Размечают структуру, отмечают порядок и точку с запятой.Совместный разбор.
37–41 (4)Пауза-разминкаКороткая смена активности; задаёт вопрос на предсказание результата выражения.Обсуждают с соседом, формулируют ответ.Наблюдение.
41–56 (15)Скалярные типы IОбъясняет целые, точные/приближённые числовые, символьные, даты и время; сравнивает точность, диапазон и длину.Заполняют матрицу выбора типов по предметным примерам.Обоснование двух решений.
56–65 (9)Скалярные и специальные типы IIРазбирает BOOLEAN, бинарные, UUID, JSON/JSONB, ARRAY и INTERVAL; подчёркивает зависимость от СУБД.Отличают скалярность и составные/специализированные типы; отмечают диалект.Мини-опрос.
65–73 (8)Приведение типовПоказывает CAST и PostgreSQL ::, неявные преобразования, совместимость типов и ловушки форматирования дат/потери точности.Проверяют примеры и исправляют ошибочные преобразования.Разбор 3 фрагментов.
73–78 (5)Самопроверка и рефлексияПроводит короткий опрос, просит назвать одно правило выбора типа и одну опасность.Отвечают, оценивают уверенность.Ответы по ключу.
78–80 (2)Итог и резервное ДЗПодводит итог, сообщает: домашний файл — только если назначен преподавателем.Записывают решение преподавателя.Выходной билет.

Итого: 80 минут.

Сокращённый регламент — 60 минут

МинутыЭтапМетодика и действия
0–3 (3)ОрганизацияПроверка готовности, тема и цель.
3–7 (4)МотивацияКейс денежного округления; два вопроса на актуализацию.
7–13 (6)История и стандартыКраткая линия SQL-92 → SQL:1999 → SQL:2016; стандарт и реализация.
13–19 (6)Подъязыки и грамматикаСопоставление пяти групп команд; схема SELECT.
19–32 (13)Числа, строки, дата/времяФокус на точности, длине, временной зоне и выборе предметного типа.
32–34 (2)ПаузаКороткая смена активности.
34–43 (9)Логические и специализированныеBOOLEAN, бинарные, UUID, JSONB, ARRAY, INTERVAL; метка PostgreSQL.
43–51 (8)ПреобразованиеCAST, ::, неявное приведение, три ошибки на исправление.
51–57 (6)ЗакреплениеДва сценария выбора типа и одно преобразование в паре.
57–60 (3)ИтогВыходной билет и условие резервного задания.

Итого: 60 минут. При сокращении не исключать выбор типов и приведение; сокращать число демонстраций и устных ответов.

Содержание объяснения

Эволюция и стандарты

SQL (Structured Query Language) — декларативный язык определения структур, манипулирования данными, запросов и управления доступом/транзакциями. SQL-92 (ISO/IEC 9075:1992) закрепил развитое ядро реляционного языка и типовую форму запросов. SQL:1999 (SQL3) добавил объектно-реляционные возможности, рекурсивные запросы и триггеры в стандартизованных частях. SQL:2016 расширил стандарт, в частности стандартизовал возможности работы с JSON. Редакции стандарта не означают, что любая СУБД реализует все возможности; синтаксис, типы и функции различаются.

Классы команд

Грамматика и синтаксис

Оператор строится из ключевых слов и обязательных/необязательных клауз, идентификаторов, литералов, выражений и условий. Скобки задают вложенность и приоритет; запятая разделяет элементы списка, точка с запятой обычно завершает оператор. Имена идентификаторов и строковые литералы не взаимозаменяемы.

SELECT [DISTINCT] выражение [, выражение ...]
FROM источник [, источник ...]
[WHERE условие]
[GROUP BY выражение [, ...]]
[HAVING условие]
[ORDER BY выражение [ASC | DESC] [, ...]];

CREATE TABLE имя (
  имя_столбца тип [ограничение] [, ...]
);

CAST(выражение AS тип)     -- стандартная форма
выражение::тип             -- PostgreSQL, диалектный сахар

Система типов: что объяснить

КлассТипыПодбор и оговорки
ЦелыеSMALLINT, INT/INTEGER, BIGINTЦелые количества; различаются диапазоном и местом хранения в реализации.
Точные числаNUMERIC(p,s), DECIMAL(p,s)Десятичная точность/масштаб; деньги и расчёты, где важны десятичные значения. Не путать диапазон с количеством знаков после запятой.
Приближённые числаREAL, DOUBLE PRECISIONЧисла с плавающей точкой; двоичное представление может давать погрешность. Подходят для измерений/научных вычислений, не для точных сумм.
СимвольныеCHAR(n), VARCHAR(n), TEXTCHAR — фиксированная длина с особенностями заполнения; VARCHAR — переменная длина, TEXT — неограниченный/большой текст в конкретной СУБД. Детали пределов и стоимости зависят от реализации.
Дата/времяDATE, TIME, TIMESTAMP [WITH TIME ZONE], INTERVALДата без времени; время суток; момент времени; длительность/интервал. Стандартные названия/семантика могут отличаться, особенно часовой пояс.
ЛогическийBOOLEANTRUE/FALSE; SQL допускает UNKNOWN вследствие NULL в логических выражениях.
БинарныеBINARY/VARBINARY или BYTEA (PostgreSQL)Байты, а не текст; конкретное имя зависит от СУБД.
СпециализированныеUUID, JSON/JSONB, ARRAYПрактически полезны, но переносимость и операции существенно зависят от платформы; JSONB и синтаксис массивов — PostgreSQL.

Приведение типов

Явное приведение документирует намерение и помогает избежать неоднозначности: CAST('42' AS INTEGER). В PostgreSQL допустимо '42'::INTEGER. Неявное приведение может выполняться по правилам СУБД в выражениях и аргументах функций, но не должно подменять проектный выбор типа. Ошибка/потеря возможны при некорректной строке, переполнении, округлении NUMERIC, потере временной зоны или усечении строки. Формат даты зависит от правил разбора; предпочитать однозначную ISO-форму и проверять тип результата.

Типичные ошибки и педагогические приёмы

Приёмы: проблемный вопрос, think–pair–share, карточки «значение → тип → обоснование», код с намеренной ошибкой, проговаривание чтения грамматики, мини-рефлексия «что переносимо / что диалектно».

Формирующее оценивание и ответы

  1. Какой тип выбрать для точной цены 1250,40? NUMERIC/DECIMAL с достаточными precision/scale.
  2. Что надёжнее для бинарно-приближённых координат? REAL/DOUBLE PRECISION; допустимая погрешность должна быть осознанной.
  3. Группа DDL для CREATE TABLE; выборка обычно DQL (или часть широкой трактовки DML); GRANT — DCL; COMMIT — TCL.
  4. Переносимая явная запись? CAST(expr AS type). :: — PostgreSQL.
  5. Почему TIME ZONE не то же самое, что дата и время? Смещение/зона влияет на представление/интерпретацию времени; семантика зависит от СУБД.

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

Безопасность и доступность

Все примеры автономны, без подключения к внешним сервисам и без ввода реальных персональных данных. При работе на экране увеличить масштаб; ключевые термины озвучивать и фиксировать письменно. Сложные примеры разбирать пошагово, разрешать ответ в виде объяснения вместо быстрого устного блица.