Основы SQL


БУЛЕВЫ ОПЕРАЦИИ - часть 2


Рисунок 4.2 SELECT, использующий AND

Если же вы используете OR, вы получите всех заказчиков, которые находились в San Jose или (OR) которые имели оценку выше 200.

SELECT * FROM Customers WHERE city = " San Jose' OR rating > 200;

Вывод для этого запроса показан на Рисунке 4.3.

=============== SQL Execution Log ============ | | | SELECT * | | FROM Customers | | WHERE city = 'San Jose' | | OR rating > 200; | | ============================================= | | сnum cname city rating snum | | ----- ------- -------- ----- ------ | | 2003 Liu San Jose 200 1002 | | 2004 Grass Berlin 300 1002 | | 2008 Cirneros San Jose 300 1007 | =============================================

Рисунок 4.3 SELECT, использующий OR

NOT может использоваться для инвертирования булевых значений.

Имеется пример запроса с NOT:

SELECT * FROM Customers WHERE city = " San Jose' OR NOT rating > 200;

Вывод этого запроса показан на Рисунке 4.4.

=============== SQL Execution Log ============ | | | SELECT * | | FROM Customers | | WHERE city = 'San Jose' | | OR NOT rating > 200; | | ============================================= | | cnum cname city rating snum | | ------ -------- ------ ----- ----- | | 2001 Hoffman London 100 1001 | | 2002 Giovanni Rome 200 1003 | | 2003 Liu San Jose 200 1002 | | 2006 Clemens London 100 1001 | | 2008 Cirneros San Jose 300 1007 | | 2007 Pereira Rome 100 1004 | =============================================

Рисунок 4.4 SELECT, использующий NOT

Все записи, за исключением Grass, были выбраны. Grass не был в San Jose, и его оценка была больше, чем 200, так что он потерпел неудачу при обеих проверках. В каждой из других строк встретился тот или другой, или оба критерия.

Обратите внимание, что операция NOT должна предшествовать булевой операции, чьё значение должно измениться, и не должна помещаться перед реляционной операцией. Например: неправильным вводом предиката оценки будет:

rating NOT > 200

Он выдаст другую отметку. А как SQL оценит следующее?




Начало  Назад  Вперед