Пример: SELECT * FROM Customers
WHERE city = ‘London’
AND rating > 200;
Пример на OR:
SELECT * FROM Customers
WHERE city = ‘London’
OR NOT rating > 200;
Или записи у которых город Лондон, или если rating не больше 200.
NOT должен предшествовать булеву выражению, значение которого он должен изменить (но не перед оператором сравнения rating NOT >200 ). SQL применяет NOT только к тому выражению, которое непосредственно следует за ним. Если нужно охватить больше, то ставятся круглые скобки:
… WHERE NOT (city = ‘London’ OR rating > 200);
Проследим логику в намеренно усложненном примере:
SELECT *
FROM Orders
WHERE NOT ((odate = 10/03/1990 AND snum > 1002)
OR amt > 2000.00);
Способ оценки сложного выражения следующий: оценить булево выражение, имеющее наибольшую глубину вхождения в круглые скобки, скомбинировать результаты в одно булево выражение, а затем связать его значение со значением выражений, имеющих меньшую глубину вхождения в скобки.
Рассмотрим приведенный пример:
Наибольшая глубина вхождения у предиката:
odate = 10/03/1990 AND snum > 1002, который дает “истину” для строк, удовлетворяющим обоим условиям. Обозначим его как В1. Это выражение соединено с amt > 2000,00 В2 с помощью OR и образует выражение В3. Оно полностью в круглых скобках перед NOTи вместе с ним образует В4 – предикат запроса.