Часто в жизни мы размышляем следующим образом: съесть шоколадку и мороженое? А может шоколадку или мороженое? А может не шоколадку и не мороженое? Казалось бы, всё просто, однако для того чтобы сделать выбор мы с вами используем основные логические операции.
С такими логическими операциями вы уже встречались на уроках математики, при изучении программирования и табличных процессоров и в других областях.
На этом уроке мы с вами будем разбираться, как используются логические условия выбора данных в базах данных.
Сегодня на уроке мы с вами узнаем:
· Какое выражение называется логическим?
· Какие существуют логические операции?
· А также с помощью конструктора запросов, реализуем запросы, используя логические условия выбора данных.
Вспомним основные определения математической логики.
Логическое выражение, выполняется или вычисляется подобно математическому выражению, но в результате получается не число, а логическое значение: истина (TRUE) или ложь (FALSE).
Например, два плюс три больше чем три плюс один (2+3 > 3+1) - да – это истина. Или ноль меньше чем минус пять (0 < -5) - нет – это ложь.
Логическая величина – это всегда ответ на вопрос, истинно ли данное высказывание.
Логическая величина – это величина, которая может принимать одно из двух значений – Истина или Ложь.
В базах данных поле логического типа – это логическая величина.
Логическое выражение – это либо истинное, либо ложное утверждение.
Логическое выражение включает логические константы, логические переменные, операции отношений и логические операции.
Операции отношения сравнивают значения двух величин. Они определяются следующими знаками: равно, не равно, больше, меньше, больше либо равно, меньше либо равно.
Например, пять больше трёх, или с не равно 7, или a меньше b – всё это логические выражения.
Числовые величины сравниваются по арифметическому смыслу, а символьные величины сравниваются с учётом порядка символов в таблице кодировки. Например, «кот» равно «кот», «кот» меньше чем «лис», так как первая буква слова кот – буква к имеет меньшее числовое значение в кодировочной таблице, чем первая буква слова лис – буква л, или «кот» больше чем «дом».
Величины типа дата и время по их последовательности во времени.
Например, 15.00 меньше чем17.00 или 12.06.2016 больше чем 12.06.2010.
В жизни мы встречаемся с подобными ситуациями. Например, я хочу купить в магазине кеды, чтобы они были 38 размера, зелёного цвета, и чтобы они стоили не более 1500 рублей.
Или другая ситуация: в магазине я могу купить за 1500 рублей кеды или рюкзак.
Это задачи, в которых используются не отдельные условия, а совокупность связанных между собой условий (отношений).
В первом примере мы имеем дело с тремя отношениями, связанными между собой союзом «и» и частицей «не», во втором – с двумя отношениями, связанными союзом «или».
Так условия наших примеров могут выглядеть таким образом:
Первое: (размер 38) И (цвет – зелёный) И (НЕ (цена больше 1500));
Второе: (покупка кеды) или (покупка рюкзак).
Существуют три основные логические операции: отрицание – НЕ (или NOT), конъюнкция – И (или AND), дизъюнкция – ИЛИ (или OR).
Объединение двух (или нескольких) высказываний в одно с помощью союза «и» называется операцией логического умножения или конъюнкцией.
Объединение двух (или нескольких) высказываний с помощью союза «или» называется операцией логического сложения или дизъюнкцией.
Присоединение частицы «не» к высказыванию называется операцией логического отрицания или инверсией.
Их правила выполнения отражаются в таблице истинности.
Например. Пусть a, b и c – логические величины, которые имеют следующие значения: a – истина, b – ложь, c – истина. Необходимо определить результаты вычисления следующих логических выражений:
a и b
a или b
не a или b
a и b или c
Чтобы узнать результат вычисления первого логического выражения (А И В) нужно: найти в таблице строку, в которой значение А – истина, а В – ложь. Теперь для того чтобы найти результат А И В находим ячейку на пересечении данной строки и столбца А И В. Получаем ответ: Ложь.
Аналогично находим результат вычисления второго логического выражения А ИЛИ В. Ответ: Истина.
Следующее логическое выражение содержит две логические операции. Результат будем находить по порядку. Сначала находим результат выражения НЕ А. На пересечении строки А Истина и Не А, получаем Ложь. Теперь у нас получается, что А – Ложь и В – Ложь. Находим значение (не a или b). Получаем ответ: Ложь.
Аналогично найдём значение следующего логического выражения. Ответ: Истина.
Для того чтобы указать последовательность выполнения операций в логических выражениях могут употребляться круглые скобки.
Рассмотрим простой пример на составление логических выражений – то есть условий выбора записей из БД.
Перед нами однотабличная база данных, в которой А, В, С – это числовые поля, а К1, К2 (читать: Ка один, Ка два. Здесь и далее) и так далее – это идентификаторы или ключи записей.
Рассмотрим следующие примеры:
А=1 И В=2 (читать здесь и далее А равно единице И В равно двум). Оба этих числовых поля находятся в ключе записи К1. В остальных ключах записей таких совпадений нет. Следовательно, результатом этого логического выражения будет К1.
Следующее выражение А=1 ИЛИ А=3. Числовой поле А=1 находятся в ключах записей К1 и К2, а числовое поле А=3 – в ключах записей К4 и К5. Значит результатами логического выражения будут значения ключей записей К1, К2, К4 и К5.
Следующее условие: НЕ А=1. Здесь результатом выбора будут все ключи, в которых А не рано 1, то есть К3, К4 и К5.
Каждая из операций конъюнкция (И) или дизъюнкция (ИЛИ) объединяет два условия.
Операция И работает следующим образом: сначала выбираются все записи, которые удовлетворяют первому условию, а потом, из отобранных, выбираются те, которые удовлетворяют второму условию.
Операция ИЛИ в одну выборку объединяет записи, которые удовлетворяют каждому из условий.
Рассмотрим пример, в котором логические выражения содержат разные логические операции.
Первое условие: А=1 И В=2 ИЛИ С=3. Здесь результатом выбора будут все ключи, в которых А=1 и В=2 к ним нужно добавить ключи, в которых С=3, то есть ответ: К1, К4 и К5.
Второе условие: НЕ А=1 ИЛИ В=2 И С=3. Результатом выбора будут ключи в которых А не равно 1 – это К3, К4, К5 к ним нужно добавить ключи в которых В=2 – это К1, К3, К5 и С=3 – это К1, К3, К5. Следовательно, ответ: К1, К3, К4 и К5.
Теперь рассмотрим примеры, в которых значения одних полей сравниваются со значениями других. И содержат арифметические выражения.
Первое условие:
В больше либо равно А. Нам нужно найти все ключи записей в которых В будет больше либо равно А. Первый ключ 2 больше либо равно 1, подходит, второй ключ, 3 больше либо равно 1 – подходит, ключ К3: 2 больше либо равно 2 – подходит, К4: 3 больше либо равно 3 также подходит. И в последнем условие не выполняется, так как 2 меньше либо равно трём. Следовательно, ответ: К1, К2, К3, К4.
В больше либо равно А И В больше либо равно С. По первому условию нам подходят ключи К1, К2, К3, К4. По второму условию К2, К3 и К4. Теперь нам нужно выбрать те ключи, которые удовлетворяют обоим условиям. То есть ответ: К2, К3, К4.
Следующее условие: С равно А плюс В (С=А+В). Здесь нам нужно найти те ключи записей, подставив значения, которых мы получим верное арифметическое выражение. Итак, первый ключ: 3=2+1. Подходит, так как получается верное арифметическое выражение 3=3. Далее ключ К2: 1 не равно 1+3, не подходит. И так далее. Получим ответ: К1.
Теперь разберёмся с тем, как в конструкторе запросов представляются логические выражения.
В ячейках таблицы конструктора запросов записываются условия, для значений соответствующих полей.
Если условия записаны в одной строке, то они соединяются между собой операцией И и выполняются одновременно.
Итак, первый пример А=1 И В=2.
Откроем базу данных «Значения». Нам нужно создать запрос, содержащий логическое условие выбора данных. Нажимаем Создать запрос в режиме дизайна. Заполним таблицу запроса. Теперь указываем критерий запроса. А=1, в этой же строке В=2. Закрываем окно запроса и сохраняем его под именем Запрос 1. Нажимаем за Запрос 1 два раза левой кнопкой мыши. Перед нами открывается окно с результатами выбора данных. Ответ: К1.
Если условия записаны в разных строках, то они соединяются операцией ИЛИ.
Здесь сначала отбираются записи, которые удовлетворяют условиям первой строки, затем к ним добавляются записи, удовлетворяющие условиям второй строки, и т. д.
Рассмотрим пример А=1 ИЛИ А=3. Нажимаем Создать запрос в режиме дизайна и заполняем таблицу. Теперь указываем условия выбора данных. А=1, а во второй строке А=3. Закрываем окно запроса и сохраняем его под именем Запрос 2. Откроем запрос. Перед нами результат выбора данных. Ответ: К1, К2, К4 и К5.
Рассмотрим следующий пример: НЕ А=1. В поле Критерий нужно записать неравно 1. Закрываем окно конструктора запроса и посмотрим результат. Ответ: К3, К4 и К5.
Теперь рассмотрим пример неравенства. В больше либо равно А. В окне конструктора запроса в строке Критерий столбца В необходимо записать больше либо равно А. Закрываем конструктор запроса и посмотрим результат. Ответ: К1, К2, К3, К4.
Во всех условных выражениях в конструкторе можно использовать записи в квадратных скобках. Например, отношение А=1 в конструкторе запроса в столбце А можно записать в двух вариантах: 1) [А] А в квадратных скобках =1, 2) =1. Второй вариант короче, поэтому обычно пользуются им.
Подведём итоги урока.
Условие выбора – это логическое выражение.
Существуют три основные логические операции: отрицание – НЕ (NOT), конъюнкция – И (AND), дизъюнкция – ИЛИ (OR).
В ячейках таблицы конструктора запросов записываются условия, для значений соответствующих полей.
Если условия записаны в одной строке, то они соединяются между собой операцией И (не большая пауза) и выполняются одновременно.
Если условия записаны в разных строках, то они соединяются операцией ИЛИ. Здесь сначала отбираются записи, которые удовлетворяют условиям первой строки, затем к ним добавляются записи, удовлетворяющие условиям второй строки, и т. д.