Логические выражения и условия отбора
Условие отбора — это логическое выражение, которое должно быть истинным для отбираемых записей БД.
Логические выражения представляются на языке математической логики.
1. Логическая величина — это величина, принимающая всего два значения — ИСТИНА (TRUE) или ЛОЖЬ (FALSE). В базах данных поле логического типа — это логическая величина.
2. Логическое выражение — это утверждение, которое может быть либо истинным, либо ложным. Логическое выражение состоит из логических констант, логических переменных, операций отношения и логических операций.
3. Операции отношения сравнивают значения двух величин. Знаки операций отношения: = (равно), <> (не равно), > (больше), < (меньше), >= (больше или равно), <= меньше или равно). Сравнение числовых величие производится в арифметическом смысле; сравнение символьных величин — с учетом порядка символов в таблице кодировки; величины типа «дата» и «время» сравниваются в смысле их последовательности во времени.
4. Существуют три основные логические операции: отрицание — НЕ (NOT), конъюнкция — И (AND), дизъюнкция — ИЛИ (OR). Они описываются таблицей истинности (здесь ИСТИНА обозначена буквой и, ЛОЖЬ —буквой л):
Таблица А
А | В | АиВ | А или В |
И | И | И | И |
И | Л | Л | И |
Л | И | Л | И |
Л | Л | Л | Л |
5. Старшинство логических операций: НЕ, И, ИЛИ. Для изменения порядка выполнения операций в логических выражениях могут употребляться круглые скобки.
Пусть значения А, В, С представлены в таблице:
Таблица B
А | В | С |
Тогда в следующей таблице приведены примеры реализации логических выражений табличным методом, применяемым в конструкторе запросов.
Таблица С
Условие | А | В | С | |
1. | А=1 И B-2 | =1 | =2 | |
2. | А=1 ИЛИ А=3 | =1 | ||
=3 | ||||
3. | А= 1 ИЛИ В=2 | =1 | ||
=2 | ||||
4. | A=1 ИЛИ В=2 ИЛИ С=3 | =1 | ||
=2 | ||||
=3 | ||||
5. | А-1 И В=2 И C=3 | =1 | =2 | =3 |
6. | НЕ А=1 | <>1 | ||
7. | A=1 И В=2 ИЛИ С=3 | =1 | =2 | |
=3 | ||||
8. | A=1 ИЛИ В=2 И С=3 | =1 | ||
=2 | =3 | |||
9. | НЕ А=1 ИЛИ В=2 И С=3 | <>1 | ||
=2 | ||||
=3 | ||||
10. | (А=1 ИЛИ В=2) И С=3 | =1 | =3 | |
=2 | ||||
11. | В>=А | >=[A] | ||
12. | В>=А И B>=C | >=[A] AND>=[C] | ||
13. | A=B ИЛИ A=C | =[B] OR=[C] | ||
14. | C=A+B | =[A]+[B] | ||
При записи в таблицу фактически произошло раскрытие скобок, и данное логическое выражение заменилось эквивалентным выражением:
А=1 И С=3 ИЛИ В=2 И С=3
Имя поля, заключенное в квадратные скобки, идентифицирует значение этого поля в записи.. Например, отношение А=1 вконструкторе запроса в столбце А можно записать в двух вариантах: 1) [А]=1, 2) =1. Второй вариант короче, поэтому обычно пользуются им. Условие в примере 13 можно было бы записать так: [A]=[B] OR [A]=[C].
Вывод
Условие отбора — это логическое выражение, которое должно быть истинным для отбираемых записей БД.
Условия отбора записываются и проверяются в соответствии с правилами математической логики.
В конструкторе запросов условие отбора представляется в табличной форме.
Сначала отбираются записи, удовлетворяющие условиям, записанным в первой строке, затем к ним добавляются записи, удовлетворяющие условию из второй строки и так далее.
Вопросы и задания
1. а) Что такое логическое выражение?
б) Какие существуют основные логические операции? Что такое таблица истинности?
2. Для таблицы, определите результаты отбора записей по следующим условиям:
6)А=2 ИЛИ В=2;
в)А=2 И В=1 ИЛИ С=3;
г)А>В;
д) С=А+В;
е)А=1 ИЛИ А=2;
ж) B>1 И B<3.
3. Все условия из предыдущего задания представьте в табличной
форме, то есть па языке конструктора запросов.
4. Запросы по нескольким таблицам к базе данных
Вычисляемые поля
Запрос 3. Получить список всех абитуриентов, живущих в Перми и имеющих медали. В списке указать фамилии, номера школ и факультеты, на которые поступают абитуриенты. Отсортировать список в алфавитном порядке по фамилиям.
Для реализации данного запроса информация должна извлекаться из трех таблиц: «Анкеты», «Факультеты», «Абитуриенты». Запишем команду на гипотетическом языке запросов:
.выбор АНКЕТЫ (таблица).ФАМИЛИЯ, Анкеты(таблица).УЧ_ЗАВЕДЕНИЕ, Факультеты (таблица).ФАКУЛЬТЕТ для Анкеты. ГОРОД= "Пермь" и Абитуриенты. МЕДАЛЬ=ДА сортировать Анкеты. ФАМИЛИЯ по возрастанию
Здесь снова используются комбинированные имена полей, включающие имя таблицы и имя поля, разделенные точкой.
Результатом выполнения данного запроса будет табл. 9:
Таблица 9. Пермяки, имеющие медали
Фамилия | Учебное заведение | Факультет |
Васильева | ПТУ №8 | Экономический |
Круг | Школа №102 | Экономический |
Команда на гипотетическом языке запросов выглядит так:
.выбор АНКЕТА (таблица).РЕГ НОМ, АНКЕТА(таблица).ФАМИЛИЯ,
СУММА: Оценки(таблица).ОЦЕНКА_1 + ОЦЕНКА_2 + ОЦЕНКА_3
сортировать СУММА по убыванию
Значение поля «СУММА» получается путем суммирования оценок по всем экзаменам. По этому же полю можно производить сортировку. Вычисляемое поле представляется на гипотетическом языке запросов так:
<имя поля> : <выражение>
Выражение записывается по традиционным правилам для арифметических выражений, используемых в программировании и в электронных таблицах.
Выражение можно вводить как непосредственно в ячейке конструктора, так и воспользовавшись построителем выражений. Окно построителя выражений открывается щелчком по кнопке на панели инструментов.
В результате выполнения этого запроса будет получена следующая табл. 10.
Таблица 10. Суммы баллов
РЕГ НОМ | ФАМИЛИЯ | СУММА |
Васильева | ||
Быков | ||
Елкин | ||
Мухин | ||
Зубова | ||
Анохин | ||
Жакин | ||
Дикий |
По вычисляемому полю может быть определено условие отбора. Например, если в условие отбора добавить выражение СУММА > 13, то в итоговую таблицу попадут только первые пять строк.
Вывод
В запросах можно использовать вычисляемые поля. Вычисляемое поле становится лишь элементом запроса и не включается в таблицы БД.
На вычисляемое поле можно накладывать условия отбора, производить сортировку.
Вопросы и задания
1. Что такое вычисляемое поле? Где его можно использовать?
2. Запишите команды запросов на выборку на гипотетическом языке для перечисленных ниже задач. Везде организуйте сортировку по первому полю;
а) получить список всех специальностей, на которых сдается экзамен по русскому языку;
б) получить список всех специальностей, па которых план приема больше 40 человек;
в) получить таблицу, содержащую фамилии абитуриентов, название городов, номера школ для абитуриентов, живущих не в Перми и не имеющих медалей;
г) получить таблицу, содержащую фамилии, имена, отчества и стаж работы абитуриентов, поступающих на юридический факультет;
д) получить таблицу, содержащую фамилии, специальности, года рождения для тех абитуриентов, которые родились до 1982 года.
3. Запишите команды запросов на выборку на гипотетическом языке для перечисленных ниже задач. Везде организуйте сортировку по первому полю:
а) получить таблицу, содержащую фамилии абитуриентов и средние значения оценок, полученных на экзаменах;
б) получить список лишь тех абитуриентов, у которых оценка за первый экзамен больше среднего балла за все экзамены;
в) предположим, что действует следующее правило: на экономический факультет университета принимаются те абитуриенты, у которых сумма баллов за экзамены не меньше 14; на исторический факультет — не меньше 13; на юридический факультет — не меньше 12. Получите список принятых на каждый факультет, указав факультеты, специальности, фамилии, имена, отчества. Отсортируйте список по факультету и специальности.
5. Реализация выборки
Вычисляемые поля и конструктор запросов
Запрос 4. Получить список всех абитуриентов, поступающих на юридический факультет, имеющих производственный стаж. Указать фамилии, названия городов, специальности и стаж. Упорядочить список по фамилиям.
Таблица 10. ОЦЕНКИ
РЕГ_НОМ | Оценка_1 | Оценка_2 | Оценка_3 |
Для реализации запроса используется та же схема, что и в предыдущем запросе. Вид конструктора изображен на рис. 17:
Рис17. Запрос 4 на выборку по параметру (факультет-юридический)
Запрос 5. Получить список всех пермских абитуриентов, имеющих медали. В списке указать фамилии и номера школ, факультеты, на которые поступают абитуриенты.
В конструкторе запросов эта команда будет выглядеть так, как показано на рис. 18.
Рис. 18. Схема и запрос 5 на выбор
В реализации запроса участвуют таблицы «ФАКУЛЬТЕТЫ», «СПЕЦИАЛЬНОСТЬ», «АНКЕТА», «АБИТУРИЕНТ»,Условия отбора в поле «Город»-Пермь, поле «Медаль»-Да.
Далее надо заполнить бланк конструктора так, как показано на рис. 19
Рис. 19. Запрос на выборку с использованием вычисляемого поля
Запрос 6. Вывести таблицу со значениями сумм баллов, включив в нее регистрационные номера, фамилии и суммы баллов. Отсортировать таблицу по убыванию суммы.
Этот запрос требует использования вычисляемого поля и в конструкторе имеет вид, представленный на рис.20.
Вычисляемое поле представляется в следующем формате:
<имя поля>:<выражение>
Выражение можно вводить как непосредственно в ячейке конструктора, так и воспользовавшись построителем выражений. Окно построителя выражений открывается щелчком по кнопке на панели инструментов.
Правила записи выражений традиционные: они записываются в строку, проставляются все знаки операций, можно использовать круглые скобки. Обратите внимание на то, что составное имя Оценки.[ОЦЕНКА_1] используется только для первого слагаемого. Для остальных подразумевается их принадлежность к таблице «ОЦЕНКИ».
Следующий этап работы — занесение в таблицу «Итоги» информации о поступлении в ВУЗ. В поле «ЗАЧИСЛЕНИЕ» выставляются флажки в записях для принятых в университет абитуриентов.
Запрос 7.Запрос на получение таблицы с итоговыми результатами на языке конструктора запросов он будет как показано на рисунке 20.
Рис. 20. Запрос на получение итоговых результатов
Компьютерный практикум
Реализация сложных запросов
Задание 1
Создать таблицу «Оценки» и ввести в нее данные, представленные в табл. 10
Задание 2
Используя конструктор запросов MS Access, выполнить все запросы описанные в «Запросы»
Задание 3
Реализовать в конструкторе запросов следующие задания:
1) получить таблицу, содержащую фамилии абитуриентов и средние значения оценок, полученных на экзаменах;
2) получить список лишь тех абитуриентов, у которых оценка за первый экзамен больше среднего балла за все экзамены;
3) предположим, что действует следующее правило: на экономический факультет университета принимаются те абитуриенты, у которых сумма баллов за экзамены не меньше 14; на исторический факультет -— не меньше 13; на юридический факультет — не меньше 12. Получить список принятых на каждый факультет, указав факультеты, специальности, фамилии, имена, отчества. Отсортировать список по факультету и специальности.