Лабораторная работа №3

Краткая справка

В предыдущих работах встречался первый тип запроса, условие которого содержит требование одновременного выполнения нескольких частных условий. Выборка множества записей, удовлетворяющих такому запросу является пересечением отдельных множеств записей, каждое из которых удовлетворяет одному из частных запросов. Так в первой работе примером такого частного условия являлась оценка по отдельному предмету более 2, а условие запроса формировалось как

(оценка по предмету1>2)И(оценка по предмету2>2) И(оценка по предмету3>2)

На графоаналитической схеме мы оформляли этот запрос, располагая выражение «>2» на пересечении  одной горизонтали отбора со столбцами соответствующих предметов.

Не менее часто встречается второй тип запроса, условие которого содержит требование  выполнения хотя бы одного из нескольких частных условий.  Выборка множества записей, удовлетворяющих такому запросу является объединением отдельных множеств записей, каждое из которых удовлетворяет одному из частных запросов. Условие такого запроса может быть записано как

(Частное условие_1 ) ИЛИ ( Частное условие_2 ) ИЛИ ( Частное условие_3 ) ИЛИ (...

Так, например, если надо найти двоечников, то запрос запишется следующим образом

(оценка по предмету1<3)ИЛИ (оценка по предмету2<3) ИЛИ(оценка по предмету3<3)

На графоаналитической схеме такие запросы оформляют, располагая каждое из частных условий на собственной горизонтали отбора, т.е. в данном случае выражение «<3» надо  записать на пересечении отдельной горизонтали отбора со столбцом соответствующего предмета.

Реальные запросы могут быть произвольной комбинацией запросов обоих типов.

Однако, встречаются запросы, которые не решаются применением  только графоаналитической схемы. В этом случае решение возможно путём составления запроса на специальном языке SQL (StructuredQueryLanguage) –языке структурированных запросов.

Данный язык является стандартизованным языком «общения» СУБД реляционных    баз данных, он универсален и, в частности,  позволяет составить запрос любой степени сложности. SQL  постоянно расширяется и новые версии утверждаются на уровне международных  стандартов. Актуальной является редакция языка 2008 года, стандарт ISO/IEC 9075. Здесь ограничимся лишь конструкцией SELECT языка SQL, которую планируем   использовать для создания выборки из исходного множества записей в соответствии с заданным в запросе правилом. Для создания запроса на выборку необходимо объединить  в одной строке нижеперечисленные фрагменты.

 

 

SELECT{наименование полей или функций полей  ч/запятую }

FROM{наименование таблицы или таблиц ч/запятую, если таблиц несколько}

WHERE{условия отбора значений с использованием >,<,=,LIKE,AND,OR и т.п.}

GROUPBY{поля, по которым группируются выбранные записи}

ORDERBY{ поля, по которым упорядочивают результат}

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

Пример:   SELECT “Фамилия“,“Имя“,“Средний балл” FROM“Студенты“ WHERE “предмет1“ >2 AND “предмет2“ >2 AND “предмет3“ >2

Цель работы

Цель работы — приобретение практического опыта в использования  запросов, являющихся комбинацией запросов обоих типов. Студент должен научиться формировать такие запросы с помощью графоаналитической схемы и языка SQL.

Постановка задачи

Требуется рассмотреть распространённый случай, когда строки упорядоченной таблицы формируются не в РБД, а другим программным средством  — табличным процессором, а анализ готовой таблицы выполняется средствами РБД.  Вам дан внешний файл в формате «Табличный процессор», его надо импортировать в создаваемую РБД, назвать результат импорта таблицей «Студенты3», откорректировать структуру указанной таблицы и создать в РБД комбинированный запрос на выборку «Отсев», объединив в его условии специализацию студента, определяемую по номеру группы, и его низкую успеваемость по профилирующим дисциплинам. Далее предстоит расширить запрос «Отсев», пополнив выборку теми, кто имеет  хотя бы одну неудовлетворительную оценку по любой дисциплине. 

Запросы требуется создать обоими способами: cпомощью графоаналитической схемы и на языке SQL.

Развёрнутое содержание работы

Перед началом работы скопируйте предоставленный Вам внешний файл.

1. В директории, содержашем скопированный файл щелкните мышью его наименование, в новом окне должно раскрыться содержимое файла, «прочитанное» табличным процессором. В этом окне выделите мышью прямоугольник с данными таблицы вместе со строкой заголовков, и далее в контекстном меню, полученным наведением мыши на затенённый прямоугольник, выберите вариант «Копировать». В результате данной операции содержимое таблицы копируется в буфер обмена.

Откройте  СУБД, которую предполагаете использовать: MSC©ACCESS 2010 или LibreOfficeBase. После вызова данной программы должно высветиться окно, в котором Вы присвоите имя новой базе. Теперь займёмся формированием таблицы данных. В окне базы данных предлагается несколько вариантов  создания новой таблицы. Они нам не подходят,  поскольку содержимое таблицы уже  скопировано в буфер обмена. Для переноса содержимого буфера в таблицу  используем нажатие клавиш SHIFT+INSERT.

Далее высветится меню уточняющие, что именно будет скопировано. Выберем вариант, в котором копируются и структура и данные таблицы, полученной из копии внешнего файла, обязательно потребуем создание ключевого поля – в нашем случае им будет порядковый номер записи (Рис.3-1).

2. Зададим имя будущей таблицы базы данных – назовём её «Студенты3» и скорректируем выбранные программой по умолчании характеристики полей таблицы: аналогично данным первой лабораторной работы поля «Фамилия», «Имя», «Отчество» и «Группа» - текстовые с  размерами 20,15,15 и 3 символа соответственно, а поля  «Биология», «Химия» и «Физика» - десятичные с размером в 1 знак и отсутствием дробной части                  (Рис.3-2).

3. .Для выполнения выборки согласно заданию приступим к созданию «Отсев» Его формирование выполним  с помощью графоаналитической схемы.

Профильные дисциплины определены вторым символом обозначения группы: если данный символ «1», то ему соответствуют «Биология» и «Химия»,  а если «2» — то ему соответствует «Физика». Требуемый запрос относится к запросам 2-го типа и его условие получается объединением по ИЛИ трех частных условий:

1)      второй символ «Группа»«1»  И  «Биология» <4

2)      второй символ «Группа»«1»  И  «Химия» <4

3)      второй символ «Группа»«2»  И  «Физика» <4

 

Если сравнение числовых величин знакома по первым лабораторным работам, то сопоставление текстовых (символьных) величин встречается впервые. В качестве решения рекомендуется использовать в столбце поля «Группа» выражения LIKE’?1?’и LIKE’?2?’: по сути это шаблоны, позволяющие отобрать студентов групп, в обозначениях которых второй символ «1» или «2». А тогда запрос реализуется размещением на одной горизонтали отбора указанных выражений типа  LIKEи привычного условия «Оценка»<4.

После занесения данных выражений в графоаналитическую схему и записи сформированного таким образом запроса получаем требуемую выборку студентов с недостаточной успеваемостью по профилирующим дисциплинам. 

Создайте самостоятельно с помощью графоаналитической схемы новый запрос «Отсев1», дополнив выборку  запроса  «Отсев» списком студентов, имеющим оценки «2» хотя бы по одной дисциплине (Рис.3-3).

4.   Создадим теперь запрос на языке SQL. Для этого воспользуемся запросом «Отсев», составленным на LibreOfficeBase:  наведите мышь на пиктограмму данного запроса и в контекстном меню выберите пункт «Редактировать с помощью SQL». На экране высветится следующая строка

SELECT “Фамилия“,“Имя“,“Отчество”,“Группа”,“Биология”,“Химия”,“Физика”,  FROM “Студенты3“ WHERE (“Группа” LIKE ‘_1_’ AND (“Биология”<4 OR “Химия”<4) OR “Группа” LIKE ‘_2_’ AND “Физика”<4)

Условное обозначение: для версии SQL, принятой в LibreOfficeBase, в конструкциях LIKE знак подчёркивания заменяет стандартный «?».

Проанализируйте данное SQL выражение и сопоставьте его с графоаналитической схемой запроса.

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

Запрос, полученный в результате данной коррекции следует сохранить и полученный список вывести на экран (Рис.3-4).