В следующем примере использовано одно ключевое слово AND и два OR. Обратите внимание на размещение скобок.
SELECT *
FROM PRODUCTS_TBL
WHERE COST >10
AND ( PROD_ID = '222'
OR PROD_ID = '90'
OR PROD_ID = '11235' ) ;
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 29.99
90 ФОНАРИ 14.5
2 строки выбраны.
В этом примере стоимость должна превышать 10, а код товара должен быть любым из трех указанных. В вывод не попала строка для товара с кодом 222 из-за стоимости, которая оказалась не больше 10.
Для всех выше рассмотренных типов операций можно построить их отрицания, чтобы таким образом рассмотреть противоположные условия.
Ключевое слово NOT обращает смысл операции, с которой оно используется. Ключевое слово NOT используется с операциями следующим образом.
• NOT BETWEEN
• IS NOT NULL
• NOT IN
• NOT EXISTS
• NOT LIKE
• NOT UNIIQUE
Все эти возможности будут рассмотрены в следующих разделах.
Вы уже знаете о возможности проверки неравенства с помощью операции о. Неравенство упоминается здесь потому, что при проверке неравенства вы фактически отрицаете операцию проверки равенства. Вот другой метод представления операции проверки неравенства, доступный в некоторых реализациях SQL.
WHERE SALARY о '20000' Зарплата не равна 20000
WHERE SALARY != '20000' Зарплата не равна 20000
Во втором случае для отрицания равенства используется восклицательный знак. В некоторых реализациях SQL в дополнение к стандартному знаку неравенства о используется восклицательный знак ! в совокупности со знаком = как отрицание равенства.
Проверьте по документации используемой вами реализации SQL, допускается ли в ней применение восклицательного знака для отрицания равенства.
Отрицание операции BETWEEN используется следующим образом.
WHERE SALARY NOT BETWEEN Зарплата не должна находиться в диапазоне от
'20000' AND '30000' 20000 до 30000, включая крайние значения
диапазона
SELECT *
FROM PRODUCTS_TBL
WHERE NOT BETWEEN 5.95 AND 14.5;
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 29.99
13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1.1
9 СЛАДКАЯ КУКУРУЗА 1.35
6 ТЫКВЕННЫЕ КОНФЕТЫ 1.45
87 ПЛАСТИКОВЫЕ ПАУКИ 1.05
119 МАСКИ В АССОРТИМЕНТЕ 4.95
2345 ПОЛОЧКА ИЗ ДУБА 59.99
7 строк выбраны.
Не забывайте о том, что BETWEEN предполагает включение в рассмотрение границ диапазона. Именно поэтому в данном примере строки со значениями 5.95 и 14 .5 выведены не были.
Отрицанием IN является NOT IN. В следующем примере любое из возвращенных значений зарплаты не должно равняться какому-нибудь значению из заданного списка.
WHERE SALARY NOT IN ('20000', Зарплата не должна равняться 20000, 30000
'30000', '40000') или 40000
SELECT *
FROM PRODUCTSJTBL
WHERE PROD_ID NOT IN (•13','9•,'87','119');
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 29.99
222 ПЛАСТИКОВЫЕ ТЫКВЫ 7.75
90 ФОНАРИ 14.5
15 КОСТЮМЫ В АССОРТИМЕНТЕ 10
6 ТЫКВЕННЫЕ КОНФЕТЫ 1.45
1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5.95
2345 ПОЛОЧКА ИЗ ДУБА 59.99
7 строк выбраны.
В данном случае не показаны строки для товаров с кодами из списка, указанного после NOT IN.
Ключевое слово NOT LIKE является отрицанием операции подстановки LIKE для нахождения значений, не похожих на заданное. Вот несколько примеров.
WHERE SALARY NOT LIKE '200%' Любое значение, не начинающееся с 200
WHERE SALARY NOT LIKE '%200%' Любое значение, не имеющее 200 ни в какой
позиции
WHERE SALARY NOT LIKE '_00%' Любое значение, не имеющее 00 во второй и
третьей позициях
WHERE SALARY NOT LIKE '2_%_%' Любое значение, не начинающееся с 2 и
состоящее как минимум из трех символов
SELECT PROD_DESC
FROM PRODUCTS_TBL
WHERE PROD_DESC NOT LIKE 'П%';
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 29.99
13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1.1
90 ФОНАРИ 14.5
15 КОСТЮМЫ В АССОРТИМЕНТЕ 10
9 СЛАДКАЯ КУКУРУЗА 1.35
6 ТЫКВЕННЫЕ КОНФЕТЫ 1.45
119 МАСКИ В АССОРТИМЕНТЕ 4.95
1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5.95
8 строк выбраны. В этом примере выбираются описания товаров, не начинающиеся на букву "П".
Ключевое слово IS NOT NULL обозначает отрицание операции is NULL и используется, когда нужно убедиться, что заданное значение не является пустым.
WHERE SALARY is NOT NULL Выбрать только строки с непустыми значениями.
SELECT EMP_XD, LAST_NAME, FIRST_NAME, PAGER
FROM EMPLOYEEJTBL
WHERE PAGER IS NOT NULL;
EMP_ID LAST_NAME FIRST_NAME PAGER
213764555 GLASS BRANDON 3175709980