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. Обратите внимание на размещение скобок.
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, допускается ли в ней применение восклицательного знака для отрицания равенства.
NOT BETWEEN
Отрицание операции 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 выведены не были.
NOT IN
Отрицанием 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
Ключевое слово 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 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
313782439 GLASS JACOB 8887345678
2 строки выбраны.
NOT EXISTS
Ключевое слово NOT EXISTS используется как отрицание EXISTS.
Пример___________________________Значение_________________
WHERE NOT EXISTS (SELECT EMP_ID Проверка отсутствия ЕМР ID со зна
FROM EMPLOYEE TBL чением 333333333333 в таблице
WHERE EMPLOYEE_ID = -333333333') EMPLOYEE_TBL
SELECT MAX(COST)
FROM PRODUCTS_TBL
WHERE NOT EXISTS ( SELECT COST
FROM PRODOCTS_TBL
WHERE COST > 100 ) ;
MAX(COST)
---------
59.99
В данном случае выведено максимальное из значений цен в таблице, поскольку не оказалось цен, превышающих 100.
NOT UNIQUE
Ключевое слово NOT UNIQUE используется как отрицание UNIQUE.
Пример_____________________________________Значение______
WHERE NOT UNIQUE (SELECT SALARY Проверка SALARY на наличие неуни-
FROM EMPLOYEE_TBL) кальных значений
Арифметические операции
Арифметические операции используются в SQL точно так же, как и в большинстве других языков. Таких операций четыре:
• + (сложение);
• * (умножение);
• - (вычитание);
• / (деление).
Сложение
Сложение представлено знаком "+".
Пример_____________________________Значение__________________
SELECT SALARY + BONUS Значение SALARY складывается со значе-
FROM EMPLOYEE_PAY_TBL; нием BONUS для каждой строки данных
SELECT SALARY FROM EMPLOYEE_PAY_TBL Выбор строк, ДЛЯ которых сумма
WHERE SALARY + BONUS > '40000'; SALARY И BONUS Превышает 40000
Вычитание
Вычитание представлено знаком "-".
Пример________________________Значение________________
SELECT SALARY - BONUS Значение BONUS вычитается из зна-
FROM EMPLOYEE_PAY_TBL; чения SALARY
SELECT SALARY FROM EMPLOYEE_PAY_TBL Выбор строк, для которых разность
WHERE SALARY - BONUS > '40000'; SALARY И BONUS Превышает 40000
Умножение
Умножение представлено знаком "*".
Пример_______________________Значение_______________________
SELECT SALARY * 10 Значение SALARY умножается на 10
FROM EMPLOYEE_PAY_TBL;
SELECT SALARY FROM EMPLOYEE_PAY_TBL Выбор строк, для которых значение
WHERE SALARY * 10 > '40000',- SALARY, умноженное на 10, превышает
40000
В следующем примере текущее значение зарплаты умножается на 1.1, что означает увеличение на 10%.
SELECT EMP_ID, PAY_RATE, PAY_RATE * 1.1
FROM EMPLOYEE_PAY_TBL
WHERE PAY_RATE IS NOT NULL;
EMP_ID PAY_RATE PAY_RATE*1.1
44234688Э 14.75 16.225
220984332 11 12.1
443679012 15 16.5
3 строки выбраны.
Деление
Деление представлено знаком "/" (косой чертой).
Пример________________________________Значение_______
SELECT SALARY /10 Значение SALARY делится на 10
FROM EMPLOYEE_PAY_TBL;
SELECT SALARY FROM EMPLOYEE_PAY_TBL Выбор строк, для которых значение
WHERE SALARY / 10 > '40000'; SALARY, деленное на 10, превышает 40000