|
Программирование >> Руководство по sql
в результате получится следующий список:
Порядок выполнения логических операторов. Аналогично операторам сравнения, логические операторы также выполняются в строго определенной последовательности. Если в выражении присутствуют оба типа операторов, первыми выполняются арифметические операторы. Если в выражении используется несколько логических операторов, они выполняются в следующей последовательности: сначала NOT, затем AND и наконец OR. Эта иерархия представлена на рис. 4.3. Рассмотрим несколько примеров. Следующий запрос используется для поиска всех книг по бизнесу в таблице titles, независимо от величины затрат на них, а также книги по психологии с затратами больще $5500. Офаничение на зафаты применяется только к книгам по психологии, так как оператор AND выполняется перед оператором OR. SQL: select title id, type, advance from titles where type = business or type = psychology and advance > $5500 Результат: titles id BU1032 BUllll BU2075 PS2106 BU7832 PS1372 ty pe business business business psychology business psychology advance lobo 5000 10125 6000 5000 7000
Поскольку логические операторы выполняются в on- р с. 4.3. Порядок выполне-ределенной последовательности, в результирующий спи- ния логических операторов сок будут включены три книги по бизнесу с расходами меньще $5500. Другими словами, сначала будут найдены все книги по психологии с расходами больше $5500, а затем все без офаничений книги по бизнесу. Чтобы первым выполнялся оператор OR, в запросе нужно использовать скобки. В результате выполнения следующего запроса будут найдены все книги по бизнесу и психологии с затратами выше $5500: SQL: select title id, type, advance from titles where (type = business or type = psychology) and advance > $5500 Результат: title id type advance BU2075 business 10125 PS2106 psychology 6000 PS1372 psychology 7000 Благодаря скобкам сначала осуществляется поиск всех книг по бизнесу и психологии, а затем из них выбираются книги с затратами больще $5500. Ниже приводится пример запроса, в котором одновременно используются арифметические, логические и операторы сравнения. Этот запрос используется для поиска книг, затраты на которые не окупились. Другими словами, находятся все книги, доход от продажи которых (т.е. произведение ytdsales на price) меньше удвоенной суммы, выплаченной авторам. Кроме того, в нашем случае за точку отсчета берется 15 октября 1985 года, чтобы зафиксировать достаточный срок, в течение которого должен быть разойтись тираж. Это условие присоединяется к запросу с помощью оператора AND и в соответствии с правилами вычисляется после арифметических операций. SQL: select title id, type, price, advance, ytd sales from titles where price * ytd sales < 2 * advance and pubdate < 10/15/85 Результат: title id type price advance ytd sales PS2106 psychology 7 6000 111 Диапазоны (BETWEEN и NOT BETWEEN) Другим средством реализации условий являются диапазоны. Определить диапазон можно двумя способами: с помощью операторов сравнения > и <; с помощью ключевого слова BETWEEN. Ключевое слово BETWEEN можно использовать для задания включающего диапазона (inclusive range), если в искомые значения должны включаться и границы диапазона. Например, для поиска всех книг с количеством проданных экземпляров между 4095 и 12000 (включительно) можно использовать следующий запрос: SQL: select title id, ytd sales from titles where ytd sales between 4095 and 12000 Результат: title id ytd sales PC8888 4095 BU1032 4095 ТС7777 4095 РС1035 8780 BU7832 4095 Обратите внимание, что в результат включаются книги с 4095 проданными экземплярами. Также туда были бы включены и книги с 12000 проданными экземплярами, если бы в таблице имелись соответствующие данные. В этом смысле диапазон BETWEEN отличается от диапазона больше-меньше (><). При выполнении предыдущего запроса с использованием диапазона больше-меньше получаются другие результаты, так как при поиске не учитываются фаницы диапазона: SQL: select title id, ytd sales from titles where ytd sales > 4095 and ytd sales < 12000 Результат: title id ytd sales PC1035 8780 При использовании консфукции NOT BETWEEN находятся все сфОКи, не входящие по своим значениям в указанный диапазон. Так, для поиска всех книг с количеством проданных экземпляров вне диапазона от 4095 до 12000 можно использовать следующий запрос: SQL: select title id, ytd sales from titles where ytd sales not between 4095 and 12000
Tot же результат можно получить с помошью операторов сравнения, однако обратите внимание, что в следующем запросе вместо оператора AND используется оператор OR: SQL: select title id, ytd sales from titles where ytd sales < 4095 or ytd sales > 12000
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |