"Информатика (базовый уровень)", Гейн А.Г., Юнерман Н.А.
Логика СУБД Access помогает отбирать из таблиц только нужные записи. Для этого задают критерий — логическое условие, которое программа проверяет для каждой записи и оценивает как истинное или ложное. Простые условия сравнивают значение поля с заданным значением, а логические операции И, ИЛИ и НЕ позволяют соединять или изменять условия. Чтобы запрос выбрал именно нужные данные, важно правильно расположить критерии в бланке и учитывать порядок операций.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Логическое выражение — условие, которое СУБД проверяет для каждой записи и оценивает как «истина» или «ложь». Например, выражение Класс = 10 истинно для записи ученика десятого класса и ложно для остальных. Такой результат позволяет программе решать, подходит ли запись для запроса.
Критерий отбора — условие, по которому Access определяет, какие записи включить в результат запроса. Его задают по значениям полей, чтобы получить не всю таблицу, а только нужную часть данных. Например, можно выбрать товары дешевле заданной суммы.
Логическая операция — способ соединить логические выражения или изменить одно из них. В Access используют И, ИЛИ и НЕ, чтобы описать сложные критерии отбора. Благодаря им можно задать, должны ли выполниться все условия, достаточно ли одного или нужно исключить подходящие под условие записи.
Логическое поле — поле таблицы, которое принимает одно из двух значений: Да/Нет или Истина/Ложь. Оно удобно для хранения признака, у которого нет промежуточных вариантов, например «Оплачено» или «Есть в наличии». Значение такого поля можно непосредственно использовать в условии запроса.
Access проверяет критерий отдельно для каждой записи, потому что значения полей у записей различаются. Программа подставляет значения текущей записи в условие и получает результат: истину или ложь. Если итоговое условие истинно, запись остаётся в выборке, а если ложно — не попадает в неё. Поэтому один критерий может отобрать несколько записей, одну запись или ни одной.
Простое логическое выражение часто возникает при сравнении значения поля с константой — заданным числом или текстом. Например, Возраст > 15 сравнивает возраст в записи с числом 15, а Город = "Москва" проверяет совпадение текста. Сравнение делает значение поля проверяемым по ясному правилу. Для чисел используют знаки сравнения, а для текста важно указать само значение как текст.
Операция И нужна, когда запись обязана удовлетворять нескольким требованиям сразу. Например, для запроса об учениках десятого класса со средним баллом не ниже 4 должны одновременно выполняться Класс = 10 и СреднийБал ≥ 4. Если хотя бы один критерий не выполнен, вся связка И ложна. Поэтому И подходит для отбора по пересечению признаков.
Операция ИЛИ задаёт альтернативу: достаточно выполнения одного из условий. Например, запрос может выбирать записи учеников десятого или одиннадцатого класса. Если использовать здесь И, одна запись должна была бы одновременно относиться к двум классам, что обычно невозможно. Значит, выбор между И и ИЛИ зависит от смысла требования, а не от того, насколько похожи записи.
Операция НЕ обращает результат условия: если оно истинно, выражение с НЕ ложно, и наоборот. Её применяют, когда нужно исключить записи с определённым признаком, например выбрать неоплаченные заказы условием NOT Оплачено. В бланке запроса условия одной строки обычно соединяются И, а критерии в разных строках — ИЛИ. При сочетании операций порядок тоже влияет на итог, поэтому скобки помогают сгруппировать нужные условия и не допустить неоднозначного отбора.
| Операция | Обозначение или запись в Access | Когда результат истинен | Пример условия |
|---|---|---|---|
| И | AND | Истинны оба условия | Город = "Москва" AND Возраст > 15 |
| ИЛИ | OR | Истинно хотя бы одно условие | Класс = 10 OR Класс = 11 |
| НЕ | NOT | Исходное условие ложно | NOT Оплачено |
| Сравнение на равенство | = | Значения совпадают | Оценка = 5 |
| Сравнение на неравенство | <> | Значения различаются | Город <> "Москва" |
В столбце с примерами показано, как записать сравнение и соединить несколько условий. Перед вводом критерия проверьте тип поля: числа и текст задаются по-разному. Если в условии есть разные операции, используйте скобки, чтобы явно показать нужную группировку.
Нужно получить только записи учеников, у которых в поле «Класс» указано значение 10. Другие признаки проверять не требуется, поэтому составного условия не нужно. Сначала выбираем поле, которое содержит нужные сведения, а затем задаём сравнение с числом.
Ответ: в результат попадут записи учеников 10 класса.
Здесь запись подходит, только если выполняются два требования: ученик учится в десятом классе и его средний балл равен 4 или выше. Между ними нужна операция И, потому что недостаточно соответствовать только одному критерию. В бланке запроса это удобно выразить условиями в одной строке.
Ответ: запрос оставит только учеников десятого класса со средним баллом не ниже 4.
Товар должен относиться к одной из двух категорий, стоить меньше 1000 рублей и быть в наличии. Сначала объединяем названия категорий через ИЛИ, потому что подходит любая из них. Затем применяем И к цене и наличию: эти требования должны выполняться вместе с выбранной категорией.
Ответ: в выборке будут недорогие товары категорий «Книги» или «Диски», которые есть в наличии. Скобки показывают, что сначала выбирается одна из двух категорий, а остальные требования относятся к обеим.
Соединять через И условия, из которых достаточно одного, — значит потребовать их одновременного выполнения. Так бывает, если ученик воспринимает «или» невнимательно или автоматически ставит И. Проверьте себя вопросом: может ли одна запись удовлетворять обоим условиям сразу? Если требуется альтернатива, используйте ИЛИ.
Ещё одна ошибка — помещать альтернативные критерии в одну строку бланка. Access трактует условия одной строки как одновременные, поэтому результат может оказаться пустым или слишком узким. Для ИЛИ размещайте альтернативы в разных строках и перед запуском запроса проверьте, действительно ли достаточно выполнения одной из них.
Если забыть кавычки у текстового значения, Access может принять его за имя поля или сообщить об ошибке. Ошибки также возникают из-за неверного знака сравнения или неподходящего разделителя. Сверьте тип поля и запись критерия: например, текстовое значение указывайте в кавычках, а число обычно записывайте без них.
Наконец, можно не учесть порядок выполнения операций и получить не тот набор записей. Особенно легко ошибиться в выражении, где одновременно есть И и ИЛИ: общая часть критерия может примениться не к тем вариантам. Проверьте смысл выражения на примере одной записи и заключите альтернативные условия в скобки, если они должны рассматриваться как группа.
Чтобы задавать критерии отбора, нужно понимать строение таблицы базы данных: записи содержат данные об объектах, а поля — отдельные характеристики. Также нужно различать типы полей и уметь сравнивать числовые и текстовые значения. Эти знания помогают выбрать подходящий столбец и правильно сформулировать простое условие.
Логические критерии используют в запросах на выборку и при фильтрации данных. Те же правила пригодятся при проектировании форм и отчётов, когда нужно показывать или вводить только определённые сведения. В SQL условия записываются иначе по форме, но смысл операций И, ИЛИ и НЕ остаётся важным для построения отбора.
Чем отличаются условия И и ИЛИ в запросе Access?
При И запись попадёт в результат, только если истинны все соединённые условия. При ИЛИ достаточно, чтобы истинным было хотя бы одно условие.
Почему условия ИЛИ записывают в разных строках бланка запроса?
В бланке запроса Access условия одной строки проверяет одновременно, то есть соединяет операцией И. Размещение критериев в разных строках задаёт альтернативы: достаточно выполнения одной из них.
Как отобрать записи, в которых одновременно выполняются три условия?
Задайте все три условия в одной строке бланка запроса, в соответствующих столбцах. Access соединит их операцией И и оставит записи, для которых истинны все три.
Когда в критерии нужны кавычки и скобки?
Текстовые значения, например "Москва", обычно заключают в кавычки, чтобы Access распознал их как текст, а не имя поля. Скобки нужны, чтобы явно сгруппировать условия и задать нужный порядок выполнения И, ИЛИ и НЕ.
Как Access определяет, какие записи попадут в результат запроса?
СУБД проверяет критерий отбора для каждой записи отдельно. В результат попадают записи, для которых всё условие запроса истинно.
§ 37. Логика СУБД Access