Выбрать главу

SELECT *

FROM PRODUCTS_TBL

WHERE COST > 20;

PROD_ID PROD_DESC COST

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

2345 ПОЛОЧКА ИЗ ДУБА 59.99

2 строки выбраны.

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

SELECT *

FROM PRODUCTS_TBL

WHERE COST < 24.99;

PROD_ID PROD_DESC COST

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

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

90 ФОНАРИ 14.5

15 КОСТЮМЫ В АССОРТИМЕНТЕ 10

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

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

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

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

1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5.95

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

Примеры комбинирования операций сравнения

Знак равенства можно комбинировать со знаками "меньше" и "больше", как в следующих примерах.

WHERE SALARY <= '20000' Зарплата меньше или равна 20000

WHERE SALARY >= '20000' Зарплата больше или равна 20000

"Меньше или равно" включает значение 20000 и все значения, меньшие 20000. Любое такое значение вернет TRUE, а любое значение, большее 20000, вернет FALSE. Подобным образом определяется "больше или равно". В данном случае, в отличие от строгих неравенств, значение 20000 возвращает TRUE.

SELECT *

WHERE COST <= 24.99;

PROD__ID PROD_DESC COST

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

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

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

90 ФОНАРИ 14.5

15 КОСТЮМЫ В АССОРТИМЕНТЕ 10

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

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

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

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

1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5.95

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

Логические операции

Логические операции в SQL задаются ключевыми словами, а не символами. Ниже мы рассмотрим следующие логические операции.

• IS NULL . EXISTS

• BETWEEN

• UNIQUE

• IN

• ALL И ANY

• LIKE

IS NULL

Ключевое слово is NULL используется для проверки равенства данного значения значению NULL. Например, если требуется узнать, кто из сотрудников не имеет пейджера, можно искать значения NULL в столбце PAGER таблицы EMPLOYEEJTBL.

Вот пример проверки равенства значения значению NULL.

WHERE SALARY is NULL Для зарплаты не задано значение

Вот пример, в котором значение NULL не будет найдено.

WHERE SALARY = NULL Зарплата имеет значение, равное

строке символов N-U-L-L

SELECT EMP_ID, LAST NAME, FXRST_NAME, PAGER

FROM EMPLOYEE_TBL

WHERE PAGER IS NULL;

EMP_ID LAST_NAME FIRST_NAME PAGER

311549902 STEPHENS TINA

442346889 PLEW LINDA

220984332 WALLACE MARIAH

443679012 SPURGEON TIFFANY

4 строки выбраны.

Вы должны понимать, что буквальная строка 'NULL' отличается от значения NULL. Посмотрите на следующий пример.

SELECT EMP_ID, LAST_NAME, FIRST_NAME, PAGER

FROM EMPLOYEE_TBL

WHERE PAGER = NULL;

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

BETWEEN

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

Пример__________________________________Значение___________

WHERE SALARY BETWEEN '20000' Зарплата должна находиться в диапазоне

AND '30000' от 20000 до 30000, включая крайние значения диапазона

SELECT *

FROM PRODUCTS_TBL

WHERE BETWEEN 5.95 AND 14.5;

PROD_ID PROD_DESC COST

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

90 ФОНАРИ 14.5

15 КОСТЮМЫ В АССОРТИМЕНТЕ 10

1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5.95

4 строки выбраны.

Обратите внимание на то, что в вывод включены крайние значения 5. 95 и 14 .5.

BETWEEN предполагает включение минимального и максимального значений диапазона в результаты запроса.

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

4 строки выбраны.

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

LIKE

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

• знак процента (%);

• знак подчеркивания (_).

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

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

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

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

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

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

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

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

4 строки выбраны.

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

SELECT PROD_DESC

FROM PRODUCTS_TBL

WHERE PROD_DESC LIKE '_Ы%';

PROD_DESC

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

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

EXISTS

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

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

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

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

WHERE EMPLOYEE_ID = '333333333') -

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

SELECT COST

FROM PRODUCTSJTBL

WHERE EXISTS ( SELECT COST

FROM PRODUCTS_TBL

WHERE COST > 100 );

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

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