KnigaRead.com/

W Cat - SQL за 24 часа

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн W Cat, "SQL за 24 часа" бесплатно, без регистрации.
Перейти на страницу:

б ТЫКВЕННЫЕ КОНФЕТЫ 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. Рассмотрим другой пример.

SELECT COST

FROM PRODUCTSJTBL

WHERE EXISTS ( SELECT COST

FROM PRODUCTS_TBL

WHERE COST < 100 );

COST

--------

29.99

7.75

1.1

14.5

10

1.35

1.45

1.05

4.95

5.95

59.99

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

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


UNIQUE

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

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

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

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*