Программирование >>  Понятие sql 

1 ... 6 7 8 [ 9 ] 10 11 12 ... 95


SELECT * FROM Customers WHERE rating > 200;

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

SQL Execution Log ============

SELECT * FROM Customers WHERE rating > 200;

snum

2004

2008

cname

city

rating

snum

Crass Berlin 300 Cirneros San Jose 300

1002 1007

Рисунок 4.1: Использование больше чем (>)

Конечно, если бы мы захотели увидеть еще и заказчиков с оценкой, равной 200, мы стали бы использовать предикат

rating >= 200

БУЛЕВЫ ОПЕРАТОРЫ

Основные Булевы операторы также распознаются в SQL. Выражения Буля - являются или верными или неверными, подобно предикатам. Булевы операторы связывают одно или более верных/неверных значений и производят едиственное верное/или/неверное значение. Стандартными операторами Буля, распознаваемыми в SQL, являются: AND, OR, и NOT.

Существуют другие, более сложные, операторы Буля (типа исключенный или ), но они могут быть сформированы из этих трех простых операторов - AND, OR, NOT.

Как вы можете понять, Булева верная / неверная логика - основана на цифровой компьютерной операции; и фактически, весь SQL (или любой другой язык) может быть сведен до уровня Булевой логики.

и оценивает их по отно-

на правиль-

Операторы Буля и как они работают:

AND берет два Буля (в форме AAND B) как аргументы шению к истине, верны ли они оба.

OR берет два Буля (в форме AOR B) как аргументы и оценивает ность, верен ли один из них.

NOT берет одиночный Булев (в форме NOT A) как аргументы и заменяет значение с неверного на верное или верное на неверное.

Связывая предикаты с операторами Буля, вы можете значительно увеличить их возможности. Предположим вы хотите видеть всех заказчиков в San Jose которые имеют оценку (рейтинг) выше 200:

SELECT *

FROM Customers

WHERE city = San Jose

AND rating > 200;

Вывод для этого запроса показан на Рисунке 4.2. Имеется только один заказчик, который удовлетворяет этому условию.



=============== SQL Execution Log ============

SELECT *

FROM Customers

WHERE city = San Jose

AND rating > 2 00;

сnum cname city rating snum

2008 Cirneros San Jose 300 1007

Рисунок 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

1001

2002

Giovanni

Rome

1003

2003

San Jose

1002

2006

Clemens

London

1001

2008

Cirneros

San Jose

1007

2007

Pereira

Rome

1004

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

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

rating NOT > 200

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

SELECT *

FROM Customers

WHERE NOT city = San Jose OR rating > 200;

NOT применяется здесь только к выражению city = SanJose, или к выражению rating > 200 тоже? Как и написано, правильный ответ будет прежним.SQL может применять NOT с выражением Буля только сразу после него. Вы можете получить другой результат при команде:

SELECT *

FROM Customers

WHERE NOT( city = San Jose OR rating > 200 );

Здесь SQL понимает круглые скобки как означающие, что все внутри них будет оцениваться первым и обрабатываться как единое выражение с помощью всего что снаружи них (это является стандартной интерпретацией в математике). Другими сло-вами,SQL берет каждую строку и определяет, соответствует ли истине равенство city = San Jose или равенство rating > 200. Если любое условие верно, выражение Буля внутри круглых скобок верно. Однако, если выражение Буля внутри круглых скобок верно, предикат как единое целое неверен, потому что NOT преобразует верно в неверно и наоборот.

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



1 ... 6 7 8 [ 9 ] 10 11 12 ... 95

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика