Данный язык является
стандартизованным языком «общения» СУБД реляционных баз данных, он универсален и, в
частности, позволяет составить запрос
любой степени сложности. 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
Перед началом работы скопируйте предоставленный Вам внешний
файл.
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).