Пример_____________________________Значение____________
WHERE UNIQUE (SELECT SALARY Проверка SALARY на наличие повторе-
FROM EMPLOYEEJTBL ний
WHERE EMPLOYEE_ID = '333333333')
ALL И ANY
Ключевое слово ALL используется для сравнения заданного значения со всеми значениями из некоторой другой выборки значений.
Пример _____________________________ Значение___________
WHERE SALARY > ALL (SELECT SALARY Проверка значения SALARY на предмет
FROM EMPLOYEE_TBL превышения им всех значений зарпла-
WHERE CITY - ' INDIANAPOLIS ' ) ты служащих из Индианаполиса
SELECT *
FROM PRODUCTS_TBL
WHERE COST > ALL ( SELECT COST
FROM PRODUCTS_TBL
WHERE COST < 10 );
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 29.99
90 ФОНАРИ 14.5
15 КОСТЮМЫ В АССОРТИМЕНТЕ 10
2345 ПОЛОЧКА ИЗ ДУБА 59.99
4 строки выбраны.
В этом выводе представлены все четыре записи для товаров, стоимость которых превышает стоимость товаров стоимостью меньше 10.
Ключевое слово ANY используется для сравнения заданного значения с любым из значений некоторой другой выборки значений.
Пример___________________________________Значение___________
WHERE SALARY > ANY (SELECT SALARY Проверка значения SALARY на Пред-
FROM EMPLOYEE_TBL мет превышения им какого-нибудь из
WHERE CITY = 'INDIANAPOLIS') значений зарплаты для служащих из
Индианаполиса
SELECT *
FROM PRODUCTS_TBL
WHERE COST > ANY ( SELECT COST
FROM PRODUCTS_TBL
WHERE COST < 10 );
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 29.99
222 ПЛАСТИКОВЫЕ ТЫКВЫ 7.75
13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1.1
90 ФОНАРИ 14.5
15 КОСТЮМЫ В АССОРТИМЕНТЕ 10
9 СЛАДКАЯ КУКУРУЗА 1.35
6 ТЫКВЕННЫЕ КОНФЕТЫ 1.45
119 МАСКИ В АССОРТИМЕНТЕ 4.95
1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5.95
2345 ПОЛОЧКА ИЗ ДУБА 59.99
10 строк выбраны.
Этот запрос возвращает больше строк, чем предыдущий запрос с использованием ALL, поскольку в данном случае стоимость должна превышать стоимость какого-нибудь товара стоимостью, меньшей 10. Единственной не показанной записью оказалась запись для товара стоимостью 1.05, для которого не нашлось товара с меньшей стоимостью из тех, что стоят меньше 10.
Операции конъюнкции и дизъюнкции
Как быть, если необходимо использовать несколько условий, чтобы сузить набор возвращаемых запросом данных? Нужно скомбинировать условия с помощью операций конъюнкции и дизъюнкции. Эти операции задаются с помощью ключевых слов AND и OR.
AND
Ключевое слово AND позволяет связать логическим умножением два условия в выражении ключевого слова WHERE. Чтобы оператор SQL, представляющий транзакцию или запрос, выполнил заданное действие, оба связанные ключевым словом AND условия должны возвратить TRUE.
Пример _________________________________ Значение ______________
WHERE EMPLOYEE_ID = '333333333' Значение EMPLOYEE_ID должно быть
AND SALARY = '20000' равным 333333333, а значение SALARY
должно быть равным 20000
SELECT *
FROM PROOCTS_TBL
WHERE COST > 10
AND COST < 30;
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 29.99
90 ФОНАРИ 14.5
2 строки выбраны.
В данном случае требуется, чтобы для показанных товаров стоимость была больше 10 и меньше 30.
SELECT *
FROM PRODUCTS_TBL
AND PROD_ID = '2345';
О строк выбраны.
Здесь вывод не содержит данных, поскольку каждая строка данных имеет только один код товара.
OR
Ключевое слово OR позволяет связать логическим сложением условия в выражении ключевого слова WHERE. Чтобы оператор SQL, представляющий транзакцию или запрос, выполнил заданное действие, хотя бы одно из связанных ключевым словом AND условий должно возвратить TRUE.
Пример ______________________ Значение ___________________
WHERE SALARY = ' 20000 ' Значение SALARY должно быть равным ли-
OR SALARY = '30000' бо 20000, либо 30000
Операции сравнения и логические операции в выражениях могут использоваться самостоятельно или в комбинации с другими подобными операциями.
SELECT *
FROM PRODUCTS_TBL
WHERE PROD_ID = '7725'
OR PROD_ID = '2345';
PROD_ID PROD_DESC COST
2345 ПОЛОЧКА ИЗ ДУБА 59.99
1 строка выбрана.
В данном случае для внесения данных в результат запроса хотя бы одно из условий должно возвратить TRUE. Найдена одна подходящая запись.
При использовании в операторе SQL нескольких условий для зрительного разделения условий на логично связанные группы можно использовать круглые скобки, что существенно облегчает чтение и понимание оператора. Но не забывайте о том, что неправильно расставленные скобки могут привести к неверным результатам при выводе.
В следующем примере использовано одно ключевое слово AND и два OR. Обратите внимание на размещение скобок.
Читать дальше