- •8.1. Основные элементы sql Операторы
- •Типы данных
- •Константы
- •Выражения
- •Встроенные функции
- •Отсутствующие, неподходящие или неизвестные данные
- •8.2. Использование sql для выборки (чтения) данных
- •8.3. Отбор строк из таблиц
- •Сравнение
- •Проверка на принадлежность диапазону значений
- •Проверка на членство во множестве
- •Проверка на соответствие шаблону
- •Проверка на равенство значению null
- •Составные условия поиска
- •Вопросы для самоконтроля
Проверка на равенство значению null
Результатом вычисления рассмотренных условий поиска может одно из трех значений: TRUE, FALSE или NULL (например, если один из столбцов содержит значение NULL).
Вряде случаев бывает необходимо проверять значения в столбцах на равенство значениюNULL и помещать соответствующие строки в таблицу результатов. Для этого в языке SQL предусмотрена специальная проверка на равенство значению NULL (рис. 8.10).
В следующем операторе проверка на NULL используется для определения свободных номеров телефонов:
SELECT * FROM TPHONE
WHERE ADR IS NULL
Инвертированная форма проверки на NULL позволяет отыскать строки, которые не содержат значения NULL. Например, список номеров телефонов, установленных в квартирах, формирует оператор
SELECT * FROM TPHONE
WHERE ADR IS NOT NULL
В отличие от условий поиска, рассмотренных ранее, проверка на NULL не может возвратить значение NULL в качестве результата. Она всегда возвращает TRUE или FALSE.
Составные условия поиска
Все описанные простые условия поиска можно объединить в более сложные с помощью ключевых слов AND, OR, NOT. Возможность использования составных условий поиска предусмотрена правилами записи предложения WHERE (рис. 8.11), уточняющими ранее приведенную на рис.8.4 форму этого предложения в составе оператораSELECT.
Ключевые слова AND, OR, NOT являются операторами логических операций И, ИЛИ, НЕ. С помощью этих операторов и круглых скобок можно создавать очень сложные условия поиска. Например, проверку на членство в множестве NOM IN (1,3,5,9) можно задать другим (менее удачным) условием поиска:
(NOM=1) OR (NOM=3) OR (NOM=5) OR (NOM=9)
Таблицы истинности для операторов AND, OR, NOT учитывают наличие значения NULL (см. табл. 8.2).
Таблица 8.2
Таблицы истинности
AND |
TRUE |
FALSE |
NULL |
TRUE FALSE NULL |
TRUE FALSE NULL |
FALSE FALSE FALSE |
NULL FALSE NULL |
OR |
TRUE |
FALSE |
NULL |
TRUE FALSE NULL |
TRUE TRUE TRUE |
TRUE FALSE NULL |
TRUE NULL NULL |
NOT |
FALSE |
TRUE |
NULL |
Вопросы для самоконтроля
Нарисуйте синтаксическую диаграмму для предложения SELECT оператора SELECT.
Нарисуйте синтаксическую диаграмму для предложения FROM оператора SELECT.
Нарисуйте синтаксическую диаграмму для предложения WHERE оператора SELECT.
Нарисуйте синтаксическую диаграмму для предложения GROUP BY оператора SELECT.
Нарисуйте синтаксическую диаграмму для предложения HAVING оператора SELECT.
Нарисуйте синтаксическую диаграмму для предложения ORDER BY оператора SELECT.
Для чего предназначено предложение SELECT оператора SELECT?
Для чего предназначено предложение FROM оператора SELECT?
Для чего предназначено предложение WHERE оператора SELECT?
Для чего предназначено предложение GROUP BY оператора SELECT?
Для чего предназначено предложение HAVING оператора SELECT?
Для чего предназначено предложение ORDER BY оператора SELECT?
Нарисуйте синтаксическую диаграмму для условия поиска "сравнение" и приведите пример использования в операторе SELECT (для учебной БД).
Нарисуйте синтаксическую диаграмму для условия поиска "проверка на принадлежность диапазону" и приведите пример использования в операторе SELECT (для учебной БД).
Нарисуйте синтаксическую диаграмму для условия поиска "проверка на принадлежность множеству" и приведите пример использования в операторе SELECT (для учебной БД).
Нарисуйте синтаксическую диаграмму для условия поиска "проверка на соответствие шаблону" и приведите пример использования в операторе SELECT (для учебной БД).
Нарисуйте синтаксическую диаграмму для условия поиска "проверка на равенство неопределенному значению (NULL)" и приведите пример использования в операторе SELECT (для учебной БД).
Нарисуйте синтаксическую диаграмму для составных условий поиска в языке SQL и приведите пример использования в операторе SELECT (для учебной БД).
Приведите таблицы истинности для операций AND, OR, NOT в языке SQL.