Логические операторыЛогические выражения в операторах WHERE и HAVING могут быть сложными, т. е. состоять из двух и более простых выражений, соединенных между собой логическими операторами (союзами) AND и/или OR. Оператор AND выполняет роль логического союза И, а оператор OR — союза ИЛИ. Так, если х и у — два логических выражения, то составное выражение х AND у принимает значение true (ИСТИНА) только тогда, когда х и у одновременно истинны; в противном случае выражение х AND у принимает значение false (ЛОЖЬ). Выражение х oR у истинно, если хотя бы одно из выражений, х или у, истинно; если х и у одновременно ложны, то составное выражение х OR у ложно. Логический оператор NOT применяется к одному выражению (возможно и к сложному), расположенному справа от него. Этот оператор меняет значение выражения на противоположное. Так, если выражение х имеет значение true, то выражение NOT х имеет значение false, и, наоборот, если х ложно, то NOT х истинно. Предположим, из таблицы клиенты требуется выбрать записи о клиентах из Москвы и Северо-Запада. Соответствующий запрос имеет вид: SELECT Регион, Имя, Сумма_заказа FROM Клиенты WHERE Регион ='Москва' OR Регионе='Северо-Запад'; Обратите внимание, что здесь используется логический оператор OR (ИЛИ), а не AND (И), поскольку нам нужны клиенты, проживающие или в Москве, или на Северо-Западе. Если бы вместо оператора OR мы применили AND, то получили бы пустую таблицу, т. к. в исходной таблице нет ни одной записи, в которой один - и тот же столбец имел бы различные значения. Будьте внимательны при формулировке запроса на естественном: языке и при его переводе на SQL. Следующее SQL-выражение эквивалентно рассмотренному ранее. Оно основано на применении оператора IN: SELECT Регион, Имя, Сумма заказа FROM Клиенты WHERE Регион IN ('Москва', 'Северо-Запад'); Если требуется получить данные о всех клиентах, которые не проживают ни в Москве, ни на Северо-Западе, то можно использовать такое SQL-выражение: SELECT Регион, Имя, Сумма_заказа FROM Клиенты WHERE NOT (Регионе'Москва' OR Регионе'Северо-Запад'); Эго выражение эквивалентно следующим двум: SELECT Регион, Имя, Сумма_заказа FROM Клиенты WHERE Регион <> 'Москва' AND Регион <> 'Северо-Запад'; SELECT Регион, Имя, Сумма_заказа FROM Клиенты WHERE Регион NOT IN ('Москва', 'Северо-Запад');
|