Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по бд.doc
Скачиваний:
0
Добавлен:
24.02.2020
Размер:
4.79 Mб
Скачать

Отрицание условий с помощью операции отрицания

Для всех выше рассмотренных типов операций можно построить их отрицания, чтобы таким образом рассмотреть противоположные условия.

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

Не забывайте о том, что BETWEEN предполагает включение в рассмотрение границ диапазона. Именно поэтому в данном примере строки со значениями 5.95 и 14 .5 выведены не были.

NOT IN

Отрицанием IN является NOT IN. В следующем примере любое из возвращенных значений зарплаты не должно равняться какому-нибудь значению из заданного списка.

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

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

'30000', '40000')                                             или  40000

SELECT *

FROM PRODUCTS_TBL 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

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

В этом примере выбираются описания товаров, не начинающиеся на букву "П".

 

IS NOT NULL

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

Пример__________________________Значение____________________

 WHERE SALARY is NOT NULL    Выбрать только строки с непустыми значениями.

SELECT EMP_XD, LAST_NAME, FIRST_NAME, PAGER FROM EMPLOYEE_TBL WHERE PAGER IS NOT NULL;

EMP_ID    LAST_NAME    FIRST_NAME    PAGER

213764555 GLASS        BRANDON    3175709980 

313782439 GLASS        JACOB      8887345678

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  FROM EMPLOYEE_PAY_TBL;     

SELECT SALARY FROM EMPLOYEE_PAY_TBL WHERE SALARY + BONUS > '40000';                   

Значение SALARY складывается со значением BONUS  для каждой строки данных. Выбор строк, для которых сумма SALARY и BONUS превышает 40000.

Вычитание

Вычитание представлено знаком "-".

Пример________________________Значение________________

SELECT SALARY - BONUS          Значение BONUS вычитается из значения SALARY

FROM EMPLOYEE_PAY_TBL;    

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