разделены оператором
and
, то неза
висимо от их количества строка попадет в результирующий набор,
только если все условия для нее будут истинны.
Если все условия в блоке
where
разделены оператором
or
, то чтобы стро
ка вошла в результирующий набор, должно выполниться (принять зна
чение
true
) хотя бы одно из них. Рассмотрим следующие два условия:
WHERE title = 'Teller' OR start_date < '20030101'
Теперь есть несколько вариантов условий, по которым строка
employee
может быть включена в результирующий набор:
• Сотрудник является операционистом и был принят на работу до
2003 года.
• Сотрудник является операционистом и был принят на работу после
1 января 2003.
• Сотрудник не является операционистом, но был принят на работу
до 2003 года.
В табл. 4.1 показаны возможные результаты вычисления блока
where
,
содержащего два условия, разделенных оператором
or
.
Таблица 4.1. Результаты вычисления выражений с двумя условиями, разделенными оператором or В предыдущем примере единственный вариант исключения строки из
результирующего набора – если сотрудник не является операциони
стом и был принят на работу начиная с 1 января 2003 года.
Скобки Если блок включает три или больше условий с использованием как
оператора
and
, так и
or
, следует применять круглые скобки. Это сдела
ет намерения запроса понятными и для сервера БД, и для всех, кто бу
дет читать код. Вот блок
where
, расширяющий предыдущий пример.
Он проверяет, работает ли сотрудник в банке до сих пор:
WHERE end_date IS NULL
AND (title = 'Teller' OR start_date < '20030101')
Теперь имеем три условия. Чтобы строка попала в конечный результи
рующий набор, первое условие для нее должно быть истинным (
true
),
а также истинным должно быть второе
или третье условие (или оба).