Содержание обучениябазам данных и СУБД состоит из двух частей: инвариантной и вариативной. Инвариантная часть содержания обучения может быть ориентирована на формирование у учащихся знаний в области основных понятий баз данных и СУБД, работы в среде СУБД с графическим интерфейсом (на примере MS Access). В вариативной части содержания обучения базам данных и СУБД могут рассматриваться вопросы проектирования, структурирования данных реляционных баз данных и запросов на языке SQL к базам данных, программирование в среде СУБД, построенной на командном интерфейсе и т.д. (на примере консоли СУБД Access). Результатом может стать в достаточной мере функциональная база данных с прикладным содержанием. При этом реализация вариативной части обучения предполагает существование условий профильной дифференциации обучения учащихся.
В качестве примера реализации вариативной части элективного курса «Обучение базам данных и СУБД с использованием SQL-ориентированных заданий в профильных классах» хотелось бы привести конспект первого двухчасового урока по данной теме.
Тема урока: язык SQL. Синтаксис языка SQL в запросах на извлечение данных.
Цель урока: познакомить учащихся с понятиями SQL, режимами отображения запросов, разобрать примеры. Познакомить учащихся с оператором SELECT, использованием нескольких источников (таблиц), группировкой, сортировкой.
Тип занятия: комбинированный (повторение изученного материала, ознакомление с новым материалом, закрепление изученного материала, контроль знаний).
Вид занятия: смешанный.
Методы: лекция с элементами беседы, практическая работа.
Время: 90 минут (2 урока).
Программные средства: ОС MS Windows XP, СУБД MS Access 2003, Power Point, учебная база данных «Подписка на журналы».
Наглядные средства: презентация в Power Point, порядок выполнения практической работы, задания для самостоятельной работы, распечатка синтаксиса в запросах на извлечение данных.
ХОД УРОКА
1. Организационный момент
Тема урока. Язык SQL. Синтаксис языка SQL в запросах на извлечение данных.
Цель урока: познакомиться с понятиями SQL, режимами отображения запросов, разобрать примеры. Познакомиться с оператором SELECT, использованием нескольких источников (таблиц), группировкой, сортировкой.
2. Актуализация опорных знаний
Одним из наиболее естественных для пользователей способов представления данных является двумерная таблица.
Какая модель БД основана на работе с двумерными таблицами? – реляционная модель.
Доказано, что сетевое и древовидное представление данных может быть сведено к двумерным таблицам.
Вспомним, что называется запросом? – отбор данных на основании заданных условий. Условия отбора записей создаются с использованием операторов сравнения (=, >, < и т.д.)
Запросы бывают простыми и сложными. Какие запросы называются простыми, а какие сложными? – простой запрос содержит одно условие, а сложный запрос содержит несколько условий для различных полей и таблиц.
Базы данных могут содержать сотни и тысячи записей. Как называется упорядочение записей? – сортировкой.
Какие виды сортировок вы знаете? – сортировка производится по значениям одного из полей базы данных по возрастанию или убыванию.
3. Объяснение нового материала
Одним из языков, появившихся в результате разработки реляционной модели данных, является язык SQL.Аббревиатура SQL означает Structured Query Language (структурированный язык запросов). Стандарт SQL был разработан Американским национальным институтом стандартов (ANSI) в 1986 году, а годом позже Международная организация стандартов (ISO) приняла его в качестве международного. Синтаксис SQL разрабатывался для удобства формирования запросов «близко к естественному английскому». Предполагалось, что его смогут использовать рядовые пользователи баз данных.
В настоящее время пользователи обычно общаются с БД через более удобный интерфейс клиентских приложений, но взаимодействие между приложением и СУБД часто происходит с использованием SQL.
В зависимости от того где находится база данных относительно сервера, используется внешний или внутренний SQL. При этом синтаксисы SQL внешней и внутренней СУБД различаются, например, для работы в сети можно использовать Microsoft SQL Server, а в качестве «внутреннего» SQL – использовать SQL Microsoft Access.
В состав SQL входят только команды определения и манипулирования данными и отсутствуют какие-либо команды управления ходом вычислений. Другими словами, в этом языке нет команд типа IF ... THEN ... ELSE, DO ... WHILE, GO TO и др. Подобные задачи должны решаться с помощью языков программирования или управления заданиями.
Язык SQL может использоваться двумя способами:
Существуют несколько стандартов языка (различающихся временем их опубликования), но его реализация в различных СУБД может не полностью соответствовать этим стандартам.
Как и большинство современных языков. SQL поддерживает свободный формат записи операторов (не связанный с фиксированными позициями экрана). Структура команд задается набором ключевых слов, представляющих собой обычные слова английского языка: CREATE TABLE («создать таблицу»), INSERT («вставить»), SELECT («выбрать») и т. д.
Язык SQL является первым (и пока единственным) стандартным языком работы с базами данных, который получил достаточно широкое распространение. Практически все крупнейшие разработчики СУБД в настоящее время создают свои продукты именно с использованием языка SQL.
В Microsoft Access при обращении к БД также применяется язык SQL. Любой запрос, построенный с помощью мастера или конструктора, имеет соответствующее представление на языке SQL. Конструктор – лишь визуальное средство для создания запросов. В Access имеется возможность редактировать запросы непосредственно в режиме SQL. Причем, не всякий составленный на SQL запрос, может быть отображен в режиме конструктора – SQL имеет более широкие возможности, чем визуальный конструктор.
Существует три различных режима отображения запроса – конструктор, таблица и SQL <Рисунок1>. При освоении языка SQL бывает полезно составить запрос с помощью конструктора, а затем просмотреть или модифицировать его в режиме SQL.
Для переключения режимов отображения запросов используется кнопка «Вид» панели инструментов <Рисунок2>.
Синтаксис языка в простых запросах
1. SELECT <список полей>
2. FROM <список источников> – для построения запросов на извлечение данных, где «список полей» – имена полей (столбцов), которые следует извлечь из источников (таблиц) и поместить в результирующий набор.
3. FROM <список источников> … JOIN <источник> ON<условие> –ограничение на объединяемые записи в выражении FROM
а) INNER JOIN <источник> ON <условие> – в результат включаются только те записи из обеих таблиц, которые связаны между собой, автоматически определяется при создании запроса в режиме конструктора.
б) LEFT JOIN <источник> ON <условие> – в результат включаются все записи из первой таблицы. Если для них нет связанных записей во второй таблице, соответствующие поля результата будут пустыми.
в) RIGHT JOIN <источник> ON <условие> – операция, зеркально симметричная левому объединению. Включаются все записи из второй таблицы и связанные с ними записи из первой.
Предложение ON <условие> определяет связь между полями объединяемых таблиц. Результат содержит только комбинации записей, для которых выполняется заданное условие.
4. SELECT <сп.полей> COUNT <имя таблицы.имя поля> AS <имя поля> – вычисляет количество строк возвращаемое запросом. Ключевое слово AS указывает имя для столбца. Если имя не задано явно, используется соответствующее ему имя поля исходной таблицы. Если же столбец формируется с помощью некоторого выражения, Access присваивает ему имя самостоятельно.
5. GROUP BY <список источников> – группировка, могут быть перечислены несколько полей через запятую. Если группировка производится по нескольким полям, объединяться в группу будут строки, для которых попарно равны значения всех группируемых полей. Для всех полей, перечисленных в предложении SELECT, но не вошедших в предложение GROUP BY, должны быть определены групповые операции.
6. ORDER BY <имя поля> ASC [DESC] – сортировка, в предложении можно перечислять несколько полей через запятую. Сортировка будет выполняться сначала по первому полю, затем по второму (если совпадают значения первого поля) и т.п., направление сортировки – ASC (по возрастанию), DESC (по убыванию). Если направление не указано, подразумевается значение ASC.
Формат записи операторов основной части синтаксиса языка SQL выдается в распечатанном виде.
4. Практическая работа
Тема, цели и ход работы представлены учащимся в распечатанном виде.
Тема: синтаксис языка SQL в простых запросах на извлечение данных.
Цель: познакомится с оператором SELECT, использованием нескольких источников (таблиц), группировкой, сортировкой.
Ход работы
Работа выполняется с базой данных «Подписка на журналы». Структура, схема, содержание БД представлены в порядке выполнения практической работы <Рисунок3>. Данную БД предлагается создать в режимах конструктора и таблицы, а далее в режиме SQL создать запросы к базе данных.
№ п/п | Постановка задачи | Запрос в режиме SQL |
Простейшая форма оператора SELECT | ||
1 | Вывести следующие данные обо всех клиентах: «Фамилия», «Имя», «Отчество». | SELECT Фамилия, Имя, Отчество FROM Клиент |
2 | Вывести все данные обо всех клиентах («*» – означает «все поля»). | SELECT * FROM Клиент |
Использование нескольких источников (таблиц) в операторе SELECT (предложения INNER JOIN, LEFT JOIN, RIGHT JOIN) | ||
3 | Выведите для всех клиентов сведения «Фамилия» и «КодЖурнала». | SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент, Подписка |
4 | Ограничьте результат в предыдущей задаче только комбинациями тех записей, которые содержат одинаковые значения в полях «КодКлиента» таблиц «Клиент» и «Подписка» | SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент INNER JOIN Подписка ON Клиент.КодКлиента = Подписка.КодКлиента |
5 | Выведите данные «КодЖурнала» из таблицы «Подписка» для всех клиентов. | SELECT Клиент.Фамилия, Подписка.КодЖурнала FROM Клиент LEFT JOIN Подписка ON Клиент.КодКлиента = Подписка.КодКлиента |
Группировка, сортировка, имена столбцов в операторе SELECT (предложения COUNT, GROUP BY, AS, ORDER BY) | ||
6 | Предыдущий запрос изменить так, чтобы фамилия каждого клиента выводилась один раз, а рядом выводилось количество журналов, выписанных этим клиентом. | SELECT Клиент.Фамилия, COUNT(Подписка.КодЖурнала) FROM Клиент LEFT JOIN Подписка ON Клиент.КодКлиента = Подписка.КодКлиента GROUP BY Клиент.Фамилия |
7 | Надо задать осмысленное название второму полю – «Количество», указать способ сортировки результирующего набора по убыванию. Вывести данные для всех подписчиков. | SELECT Клиент.Фамилия, COUNT(Подписка.КодЖурнала) AS Количество FROM Клиент LEFT JOIN Подписка ON Клиент.КодКлиента = Подписка.КодКлиента GROUP ВY Клиент.Фамилия ORDER ВY Клиент.Фамилия ASC |
Результаты выполнения запросов в режиме таблицы MS Access представлены в порядке выполнения практической работы <Рисунок4>.
5. Самостоятельная работа
Задания для самостоятельного выполнения
6. Подведение итога урока
Учащиеся должны ответить на следующие вопросы:
7. Домашнее задание
Скопировать неизмененную учебную базу данных «Подписка на журналы» на собственные носители информации (компакт-диски, флеш-карты), повторить задания для самостоятельного выполнения из классной работы, используя раздаточный материал.