Логические операторы

Оценить
(0 голоса)

Условия в предложении where могут быть либо простыми, либо содержать множество условий. Множественные условия могут быть созданы с помощью операторов and, or и not. Поведение этих операторов было описано с использованием таблиц истинности.

Если два условия соединяются оператором and, то выбираются строки, соответствующие обоим условиям. Если два условия соединены оператором or, то выбираются все строки таблицы, для которых истинны либо первое условие, либо второе, либо оба вместе, как показано в примере 6.5.

Логические операторы

 

Результат примера 6.5 содержит некоторые дубликаты значений столбца emp по. Если лишнюю информацию нужно устранить, то должна быть использована опция distinct, как показано здесь:

 

Логические операторы

 

В этом случае результатом будет:

 

Логические операторы

 

Логические операторы

 

Заметьте, что опция distinct может быть использована только один раз в списке оператора select, и она должна предшествовать всем именам столбцов в этом списке. Поэтому пример 6.6 ошибочен.

 

Логические операторы

 

Предложение where может включать любое количество одних и тех же или различных логических операций. Вы должны помнить, что все три логические операции имеют различные приоритеты выполнения: операция not имеет наивысший приоритет, and вычисляется следующей, а операция or имеет самый низший приоритет. Если вы не можете запомнить все эти отличия приоритетов логических операций, то можете получить неожиданный результат, как показано в примере 6.7.

 

Логические операторы

 

Логические операторы

 

Здесь два оператора select отображают два различных набора данных результатов. В первом операторе select система вычисляет в первую очередь оба оператора and (слева направо), затем вычисляется оператор or. Во втором операторе select использование скобок изменяет порядок выполнения операций: все выражения внутри круглых скобок выполняются первыми в порядке слева направо. Как вы можете видеть, первый оператор возвращает одну строку, в то время как второй возвращает ноль строк.

Существование нескольких логических операций в предложении where усложняет соответствующий оператор select и делает его подверженным ошибкам. В таких случаях очень рекомендуется использовать круглые скобки, даже если в них и нет особой необходимости. Читаемость таких операторов select будет сильно улучшена, а вероятность ошибок уменьшится. Вот первый оператор select из примера 6.7, измененный с использованием рекомендованной формы:

use sample;

select emp_no, emp_fname, emp_lname from employee

where  (emp_no = 25348 and emp_lname = 'Smith') or (emp_fname = 'Matthew' and dept_no = 'dl');

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

В примере 6.8 показано использование оператора отрицания.

 

Логические операторы

 

Логические операторы

 

В этом случае оператор not может быть заменен оператором сравнения о (не равно).


Операторы IN и BETWEEN
Запросы, включающие пустые значения NULL
Оператор LIKE
Подзапросы
Подзапросы и операторы сравнения

Добавить комментарий


Защитный код
Обновить

© 2018 www.serversql.ru. Все права защищены.