x <���Оператор сравнения> ALL <���Вложенный запрос>
может быть одно из следующих значений:
• 1 (TRUE) – если условие х <���Оператор сравнения> у выполнено для всех у, выданных подзапросом, а также в случае, если подзапрос возвращает пустой результат;
• 0 (FALSE) – если среди выданных подзапросом значений есть такое значение у, для которого выражение х <���Оператор сравнения> у ложно (FALSE);
• NULL – в остальных случаях.
Например, запрос
SELECT * FROM Customers WHERE 5000 < ALL (SELECT amount FROM Orders WHERE Customers.id = customer_id);
выведет информацию не только о тех клиентах, у которых в каждом из заказов сумма превышает 5000, но и о тех, кто не сделал ни одного заказа, ведь в последнем случае результат запроса окажется пустым и условие отбора во внешнем запросе будет выполнено. Таким образом, запрос возвращает результат, представленный в табл. 3.15. Чтобы исключить клиентов, для которых нет зарегистрированных заказов, можно ввести дополнительное условие отбора, например
SELECT * FROM Customers
WHERE 5000 < ALL
(SELECT amount FROM Orders
WHERE Customers.id = customer_id)
AND EXISTS
(SELECT amount FROM Orders
WHERE Customers.id = customer_id);
Как и при использовании ключевого слова ANY, в запросе с ключевым словом ANY вложенный запрос может быть только правым операндом для оператора сравнения.
Итак, вы рассмотрели операторы сравнения и научились применять их для обработки результатов вложенных запросов. Теперь перейдем к изучению логических операторов, с помощью которых можно создавать составные условия отбора.
Логические операторы
Логические операторы позволяют построить сложное условие отбора на основе операторов сравнения. Операнды логических операторов рассматриваются как логические значения: TRUE, FALSE и NULL. При этом число 0 и нулевая дата и/или время («0000-00-00 00:00:00») считаются ложными значениями (FALSE), а отличные от нуля числа и даты – истинными значениями (TRUE) (более подробно об этом рассказывалось в пункте «Оператор х IS у, где у – TRUE, FALSE, UNKNOWN или NULL»). Начнем с изучения оператора AND.
Оператор x AND y
Оператор AND («и») возвращает следующие значения:
• 1 (TRUE) – если оба операнда – истинные значения;
• 0 (FALSE) – если один или оба операнда – ложные значения;
• NULL – в остальных случаях.
Иными словами, если вы соединили два условия отбора с помощью оператора AND, то составное условие выполняется только тогда, когда выполняются одновременно оба составляющих условия.
Например, запрос
SELECT * FROM Customers WHERE name LIKE \'ООО%\' AND rating>1000;
не выводит ни одной строки. В таблице Customers (Клиенты) есть имена, начинающиеся с «ООО», и рейтинги, превышающие 1000, но ни одна из строк не удовлетворяет обоим этим условиям одновременно.
Пара символов && является синонимом оператора AND. Следующий оператор, который мы рассмотрим, – это оператор OR.
Оператор x OR y
Оператор OR («или») возвращает следующие значения:
• 1 (TRUE) – если один или оба операнда – истинные значения;
• 0 (FALSE) – если оба операнда – ложные значения;
• NULL – в остальных случаях.
Иными словами, если вы соединили два условия отбора с помощью оператора OR, то составное условие выполняется, если выполняется хотя бы одно из составляющих условий.
Например, запрос
SELECT * FROM Customers WHERE name LIKE \'ООО%\' OR rating>1000;
выводит строки таблицы Customers (Клиенты), в которых имя начинается с «ООО», а также строки, в которых рейтинг больше 1000 (см. табл. 3.6). Пара символов | |является синонимом оператора OR. Следующий оператор, который мы рассмотрим, – это оператор XOR. Оператор x XOR y
Оператор XOR («исключающее или») возвращает следующие значения:
• 1 (TRUE) – если один из операндов – истинное значение, а другой – ложное;
• 0 (FALSE) – если оба операнда либо истинные значения, либо ложные;
• NULL – если хотя бы один из операндов равен NULL.
Иными словами, если вы соединили два условия отбора с помощью оператора XOR, то составное условие выполняется, если выполняется ровно одно из составляющих условий.
Например, запрос
SELECT * FROM Customers WHERE name LIKE \'ООО%\' XOR rating>500;
выводит строки таблицы Customers, в которых имя начинается с «ООО», а также те строки, в которых рейтинг больше 500, за исключением тех строк, в которых эти условия выполняются одновременно (см. табл. 3.15). Наконец, рассмотрим последний логический оператор – NOT. Оператор NOT x
Оператор NOT («не», то есть «отрицание») возвращает следующие значения:
• 1 (TRUE) – если операнд – ложное значение;
• 0 (FALSE) – если операнд – истинное значение;
Читать дальше
Конец ознакомительного отрывка
Купить книгу