Оператор SQL NOT служит для задания противоположно заданного условия. Является эквивалентом операции инверсии в математической логике и может применяется только для булевых значений.
Оператор SQL NOT имеет следующий синтаксис:
[ NOT ] boolean_expression
Примеры оператора SQL NOT. Имеется следующая таблица Artists:
Singer | Album | Year | Sale |
The Prodigy | Invaders Must Die | 2008 | 1200000 |
Drowning Pool | Sinner | 2001 | 400000 |
Massive Attack | Mezzanine | 1998 | 2300000 |
The Prodigy | Fat of the Land | 1997 | 600000 |
The Prodigy | Music For The Jilted Generation | 1994 | 1500000 |
Massive Attack | 100th Window | 2003 | 1200000 |
Drowning Pool | Full Circle | 2007 | 800000 |
Massive Attack | Danny The Dog | 2004 | 1900000 |
Drowning Pool | Resilience | 2013 | 500000 |
Пример 1. Используя оператор SQL NOT вывести записи таблицы, без исполнителя Drowning Pool и Massive Attack:
SELECT * FROM Artists WHERE Singer NOT IN ('Drowning Pool', 'Massive Attack')
Результат:
Singer | Album | Year | Sale |
The Prodigy | Invaders Must Die | 2008 | 1200000 |
The Prodigy | Fat of the Land | 1997 | 600000 |
The Prodigy | Music For The Jilted Generation | 1994 | 1500000 |
Очевидно, что в нашем случае, с такой небольшой таблицей удобней было бы использовать запрос:
SELECT * FROM Artists WHERE Singer = "The Prodigy"
Однако, в случае огромных таблиц с тысячами записей где надо получить выборку исключающего множества, оператор SQL NOT подходит как нельзя лучше.
Пример 2. Вывести записи таблицы, в которых название альбома содержит одно слово:
SELECT * FROM Artists WHERE Album NOT LIKE "% %"
Результат:
Singer | Album | Year | Sale |
Drowning Pool | Sinner | 2001 | 400000 |
Massive Attack | Mezzanine | 1998 | 2300000 |
Drowning Pool | Resilience | 2013 | 500000 |