|
Программирование >> Понятие sql
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;
Рисунок 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.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |