All и ANY

EXISTS

UNIQUE

LIKE

IN

Ключевое слово IN используется для сравнения значения с заданным списком буквальных значений. Чтобы возвратилось TRUE, сравниваемое значение должно совпадать хотя бы с одним значением из списка.

Пример __________________________________________ Значение ______

WHERE SALARY IN ('20000', Зарплата должна равняться 20000, 30000 или

'30000', '40000') 40000

SELECT * FROM PRODUCTS_TBL WHERE PROD_ID IN ('13','9','87','119');

PROD_ID PROD_DESC COST

13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1.1

9 СЛАДКАЯ КУКУРУЗА 1.35

87 ПЛАСТИКОВЫЕ ПАУКИ 1.05

119 МАСКИ В АССОРТИМЕНТЕ 4.95

То же самое можно получить, комбинируя условия с помощью ключевого слова OR, но с помощью IN результат получается быстрее.

Ключевое слово LIKE используется для нахождения значений, похожих на заданное значение. В данном случае предполагается использование следующих двух знаков подстановки:

  1. знак процента (%);
  2. знак подчеркивания (_).

Знак процента представляет ноль, один или несколько символов. Знак подчеркивания представляет один символ или число. Знаки подстановки могут использоваться в комбинации.

Вот несколько примеров.

Пример _________________________ Значение _________________

WHERE SALARY LIKE '200%' Любое значение, начинающееся с 200

WHERE SALARY LIKE ' %200% ' Любое значение, имеющее 200 в любой позиции

WHERE SALARY LIKE '_00%' Любое значение, имеющее 00 во второй и третьей позициях

WHERE SALARY LIKE ' 2_%_%' Любое значение, начинающееся с 2 и состоящее как минимум из трех символов

WHERE SALARY LIKE '%2' Любое значение, заканчивающееся 2

WHERE SALARY LIKE '_2%3' Любое значение, имеющее 2 во второй позиции и заканчивающееся 3

WHERE SALARY LIKE '2__3' Любое значение длиной 5 символов, начинающееся с 2 и заканчивающееся 3

В следующем примере выбираются описания для тех товаров, описания которых заканчиваются на «ы».

SELECT PROD_DESC FROM PRODUCTS_TBL WHERE PROD_DESC LIKE '%Ы';

PROD_DESC

КОСТЮМ ВЕДЬМЫ

ПЛАСТИКОВЫЕ ТЫКВЫ

ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ

ТЫКВЕННЫЕ КОНФЕТЫ

В следующем примере выбираются описания товаров с буквой "Ы" во второй позиции.

SELECT PROD_DESC FROM PRODUCTS_TBL WHERE PROD_DESC LIKE '_Ы%';

PROD_DESC

ТЫКВЕННЫЕ КОНФЕТЫ

Ключевое слово UNIQUE используется для проверки строк заданной таблицы на уникальность (т. е. отсутствие повторений).

Пример _____________________________ Значение ____________

WHERE UNIQUE (SELECT SALARY Проверка SALARY на наличие повторе-

FROM EMPLOYEE_TBL ний

WHERE EMPLOYEE_ID = '333333333')

Предикат exists имеет следующий синтаксис:

<exists predicate>::= EXISTS <subquery>

Значением этого предиката всегда является true или false, и это значение равно true тогда и только тогда, когда результат вычисления подзапроса не пуст.

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

Пример ______________________________ Значение ______

WHERE EXISTS (SELECT EMP_ID Проверка наличия EMP_ID со значени-

FROM EMPLOYEE_TBL ем 333333333 в таблице EMPLOYEE_TBL

WHERE EMPLOYEE_ID = '333333333')

В следующем примере в операторе используется подчиненный запрос, обсуждение которых планируется провести в ходе урока 14, «Использование подзапросов».

SELECT COST

FROM PRODUCTS_TBL

WHERE EXISTS (SELECT COST FROM PRODUCTS_TBL WHERE COST > 100);

0 строк выбраны.

В данном случае не выбрано ни одной строки, поскольку в таблице нет записей для товаров с ценой, большей 100. Рассмотрим другой пример.

SELECT COST

FROM PRODUCTS_TBL

WHERE EXISTS (SELECT COST FROM PRODUCTS_TBL WHERE COST < 100);

COST

--------

29.99

7.75

1.1

14.5

1.35

1.45

1.05

4.95

5.95

59.99

Теперь показаны цены для всех тех строк таблицы, для которых эти цены меньше 100.

Ключевое слово 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

В этом выводе представлены все четыре записи для товаров, стоимость которых превышает стоимость товаров стоимостью меньше 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

Этот запрос возвращает больше строк, чем предыдущий запрос с использованием ALL, поскольку в данном случае стоимость должна превышать стоимость какого-нибудь товара стоимостью, меньшей 10. Единственной не показанной записью оказалась запись для товара стоимостью 1.05, для которого не нашлось товара с меньшей стоимостью из тех, что стоят меньше 10.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: