Операторы сравнения и логические операторы


Содержание лекционного занятия:

  • Компоненты TQuery и TDataSource
  •   Операторы сравнения
  • Логические операторы IS NULL, BETWEEN...AND, IN, LIKE, EXISTS, UNIQUE, ALL, ANY 

Операторы сравнения используются в SQL-запросах для наложения ограничений на информацию, возвращаемую в результате выполнения запроса. Это типичные операторы, существующие во всех алгоритмических языках:

  • оператор равенства (=) используется для отбора записей, в которых значение определенного поля точно соответствует заданному;
  • оператор неравенства (<>) возвращает значение true, если значение поля не со­впадает с заданным значением;
  •  операторы «меньше» (<) и «больше» (>) позволяют отбирать записи, в кото­рых значение определенного поля меньше или больше некоторой заданной величины;
  • операторы «меньше или равно» (<=) и" «больше или равно» (>=) представляют собой объединение операторов «меньше» и «равно», «больше» и «равно» (в от­личие от операторов < и >, операторы <= и >= возвращают значение true, если значение поля совпадает с заданным значением).

В качестве примера рассмотрим запрос, выбирающий из таблицы Товары только те записи, категория товаров в которых равна 2:

SELECT * FROM Товары WHERE Категория=2

Результат выполнения данного запроса показан на рис.7.

Рис.7. Результат выполнения запроса с условием

Логические операторы

К логическим относятся операторы, в которых для задания ограничений на от­бор данных используются специальные ключевые слова. В SQL определены следующие логические операторы: Is null, BETWEEN...AND, IN, LIKE, EXISTS, UNIQUE, ALL, ANY.

Оператор IS NULL

Оператор IS NULL предназначен для сравнения текущего значения поля со значе­нием NULL. Он используется для отбора записей, в некоторое поле которых не за­несено никакого значения.

Для иллюстрации использования этого оператора воспользуемся таблицей Клиен­ты. С помощью приведенного ниже запроса произведем выборку из нее записей, в которых не указано название предприятия:

SELECT Фамилия. Имя. Отчество. Телефон. Город. Адрес

FROM Клиенты

WHERE Предприятие IS NULL

Результат выполнения запроса показан на рис.8.

Рис. 8. Пример использования оператора IS NULL

Оператор BETWEEN...AND

Оператор BETWEEN.. .AND применяется для отбора записей, в которых значения поля находятся внутри заданного диапазона. Границы диапазона включаются в усло­вие отбора.

Чтобы продемонстрировать работу этого оператора, вернемся к таблице Товары и выберем в ней товары, цена которых находится в диапазоне от 200 до 2000. Для этого сформируем следующий запрос:

SELECT *

FROM Товары

WHERE Цена BETWEEN 200 AND 2000

Результаты, возвращенные при выполнении данного запроса, приведены на рис. 9.

Рис. 9. Пример использования оператора BETWEEN...AND

Оператор IN

Оператор IN используется для выборки записей, в которых значение некоторого поля соответствует хотя бы одному из значений заданного списка.

Выберем из таблицы Клиенты клиентов, которые живут в Беларуси, Украине или Казахстане:

SELECT Фамилия. Имя. Отчество. Страна

FROM Клиенты

WHERE Страна IN ('Беларусь'.'Украина'.'Казахстан')

Результат выполнения данного запроса показан на рис. 10.

Рис. 10. Пример использования оператора IN

Оператор LIKE

Оператор LIKE применяется для сравнения значения поля со значением, за­данным при помощи шаблонов. Для задания шаблонов используются два сим­вола:

     знак процента (%) — заменяет последовательность символов любой (в том чис­ле и нулевой) длины;

     символ подчеркивания (_) — заменяет любой символ.

Найдем в таблице Клиенты записи, в которых фамилия клиента начинается с бук­вы «М»:

SELECT Фамилия, Имя. Отчество. Телефон FROM Клиенты WHERE Фамилия LIKE  'МГ

В результате выполнения этого запроса будет выбрано 4 записи (рис. 11).

Рис. 11. Использование оператора LIKE с шаблоном в виде символа процента

А теперь найдем в этой же таблице записи, для которых номер телефона начинает­ся с символов (816)025-61, а две последние цифры неизвестны:

SELECT Фамилия. Имя. Отчество, Телефон

FROM Клиенты

WHERE Телефон LIKE  '(816)025-61    '

При выполнении данного запроса будут отобраны две записи (рис. 12).

Рис. 12. Использование оператора LIKE с шаблоном в виде символа подчеркивания

Оператор EXISTS

Оператор EXISTS используется для отбора записей, соответствующих заданному критерию.

Для иллюстрации работы оператора EXISTS рассмотрим следующий пример. Из таблицы Товары требуется отобрать товары, количество продаж которых превыша­ет 10. Сведения о продажах содержатся в поле Продано таблицы Продажи. Для по­лучения необходимой выборки воспользуемся оператором EXISTS:

SELECT Наименование, Цена

FROM Товары

WHERE EXISTS (SELECT [Код товара]

FROM Продажи

WHERE (Продажи.Продано>10) AND

Товары.[Код товара]=Продажи.[Код товара])

В этом запросе после ключевого слова EXISTS следует оператор SELECT, отбираю­щий из таблицы Продажи записи, для которых количество продаж превышает 10. Оператор EXISTS отбирает из таблицы Товары записи, в которых значение поля Код товара соответствует записям, отобранным из таблицы Продажи. Результат выпол­нения данного запроса приведен на рис.13.

Рис.13. Пример использования оператора EXISTS

При использовании оператора EXISTS (а также еще трех логических операторов: UNIQUE, ALL и ANY) применяется подзапрос — оператор SELECT, следующий за ключевым словом EXISTS и заключенный в круглые скобки. Более подробно под­запросы будут рассмотрены далее.

Оператор UNIQUE

Оператор UNIQUE используется для проверки записи таблицы на уникальность. По своему действию он аналогичен оператору EXISTS. Единственное отличие заключа­ется в том, что подзапрос, задаваемый после ключевого слова UNIQUE, не должен возвращать более одной записи.

Оператор ALL

Оператор ALL используется для сравнения исходного значения со всеми другими значениями, входящими в некоторый набор данных.

Например, для того чтобы выбрать из таблицы Товары те товары, которые имеют цену большую, чем цена всех товаров, проданных в количестве более 10, использу­ется следующий запрос:

SELECT *

FROM Товары

WHERE Цена>АLL (SELECT Продажи.Цена

FROM Продажи

WHERE Продажи.Продано>10)

Результат выполнения данного запроса приведен на рис. 14.

Рис. 14. Пример использования оператора ALL

Оператор ANY

Оператор ANY применяется для сравнения заданного значения с каждым из значе­ний некоторого набора данных. Если в предыдущем примере заменить оператор ALL оператором ANY, то будет возвращен список товаров, цена которых больше, чем хотя бы у одного из товаров, проданных в количестве больше 10. Результат выпол­нения такого запроса показан на рис. 15.

.

Рис. 15. Пример использования оператора ANY

Вопросы для самоконтроля:

  1. Какими средствами SQL реализуются следующие операции реляционной алгебры: ограничение, декартово произведение, выбор, пересечение, объединение, разность, соединение?
  2. Что такое внешнее соединение?

Рекомендуемая литература:

  1. Конноли Т., Бегг К., Страган А. Базы данных: проектирование, реализация и сопровождение. Теория и практика, 2 – е изд.: Уч. пос. – М.: Изд. дом «Вильямс», 2000. – 1120с.
  2. Компьютерные технологии обработки информации: Учебное пособие.– М.: Финансы и статистика. 1995. – 248с.