SQL: быстрое погружение - [17]

Шрифт
Интервал

Фильтрация записей по дате

Используя все знания как о числах, так и о тексте, вы сможете теперь выполнить поиск счета, выставленного в определенную дату. Рассмотрим следующий пример:

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

InvoiceDate = '2009-01-03 00:00:00'

ORDER BY

Total

Рис. 54

Обратите внимание на способ написания даты. При указании даты в запросе важно сначала проанализировать, каким образом дата хранится в запрашиваемой таблице. Как вы знаете из главы 1, для этого надо перейти на вкладку Browse Data (Просмотр данных), выбрать таблицу invoices и проанализировать формат, в котором столбец InvoiceDate хранит даты. В нашей базе данных даты хранятся в формате гггг-мм-дд 00:00:00. Затем перейдите на вкладку Database Structure (Структура базы данных) и проанализируйте поле InvoiceDate таблицы invoices. Вы видите, что в столбце Type даты имеют тип данных DATETIME.

В условии WHERE дата, как и текст, заключена в одинарные кавычки. При работе с датами используйте те же операторы, что и при работе с числами: =, >, <, BETWEEN и т. д.

Практические задания

• Получите все счета, выставленные в период с 1 января 2009 г. по 31 декабря 2009 г.

• Найдите 10 самых крупных счетов, полученных после 5 июля 2009 г.

Функция DATE()

При работе с датами в SQL можно использовать ряд функций, которые помогают получать более точные результаты. Из предыдущего примера видно, что столбец InvoiceDate таблицы invoices имеет тип данных DATETIME. Поэтому, когда мы указывали значение даты в услови WHERE, мы включали время (2009-01-03 00:00:00). Функция DATE()позволяет исключить время при указании параметров даты.

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

Invoices

WHERE

DATE(InvoiceDate) = '2009-01-03'

ORDER BY

Total

Рис. 55

Результат этого запроса идентичен результату предыдущего запроса. Однако использование функции DATE() позволяет получить результат быстрее, когда параметры времени либо отсутствуют, либо не актуальны.

Примечание

В SQL доступно множество функций. Функция DATE () особенно полезна при использовании условия WHERE для сортировки записей по дате. В главе 7 мы более подробно рассмотрим другие функции.

Использование операторов AND и OR с двумя отдельными полями

В этой главе мы применяли операторы только для выбора подмножества одного поля. Например, мы использовали оператор AND с оператором BETWEEN для фильтрации результатов поля Total с двумя различными числовыми значениями. Мы также можем применить операторы AND и OR для указания параметров нескольких полей. В приведенном ниже запросе оператор AND используется вместе с функцией DATE() для поиска всех счетов, оформленных после 02.01.2010, на общую сумму менее $3,00. Результат этого запроса должен удовлетворять одновременно обоим условиям: (DATE(InvoiceDate)>'2010-01-02'ANDTotal<3).

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

DATE(InvoiceDate) > '2010-01-02' AND Total < 3

ORDER BY

Total

Рис. 56

Из полученных результатов можно увидеть, что возвращаются только счета, оформленные после 2 января 2010 года, общая сумма которых составляет менее $3.

Примечание

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

Практические задания

• Найдите все счета, которые были выставлены в городе, название которого начинается с буквы P, а общая сумма превышает $2.

Оператор OR

Оператор OR позволяет найти записи, соответствующие любому из заданных вами условий. В следующем запросе выполняется поиск всех счетов, выставленных в городах, названия которых начинаются с буквы P или с буквы D.

Рис. 57

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

BillingCity LIKE 'p%' OR BillingCity LIKE 'd%'

ORDER BY

Total

Использование круглых скобок с операторами AND и OR для указания порядка операций

При написании в SQL более длинных условий WHERE, включающих несколько логических операторов, можно определить порядок выполнения операций аналогично правилам базовой арифметики. Возможно, вы встречали аббревиатуру PEMDAS (Parentheses, Exponents, Multiplication, Division, Addition, Subtraction — круглые скобки, экспоненты, умножение, деление, сложение, вычитание) или похожую BEMDAS (Brackets, Exponents, Multiplication, Division, Addition, Subtraction). Первая используется в США, вторая — в странах, где сильно влияние Великобритании. Если не встречали, то не стоит беспокоиться. Способ определения порядка операций очень простой. Но пока рассмотрим работу операторов AND и OR. Допустим, нам необходимо получить все счета на сумму свыше $1,98 из любых городов, названия которых начинаются с буквы P или D. Запрос будет выглядеть следующим образом:

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

Total > 1.98 AND BillingCity LIKE 'p%' OR

BillingCity LIKE 'd%'

ORDER BY

Total

Рис. 58

Когда данный запрос выполняется, браузер SQL сначала объединяет два условия по обе стороны от оператора AND, возвращая счета, общая сумма которых превышает $1,98, и названия городов, где они были выставлены, начинаются с буквы


Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Геймдизайн. Рецепты успеха лучших компьютерных игр от Super Mario и Doom до Assassin’s Creed и дальше

Что такое ГЕЙМДИЗАЙН? Это не код, графика или звук. Это не создание персонажей или раскрашивание игрового поля. Геймдизайн – это симулятор мечты, набор правил, благодаря которым игра оживает. Как создать игру, которую полюбят, от которой не смогут оторваться? Знаменитый геймдизайнер Тайнан Сильвестр на примере кейсов из самых популярных игр рассказывает как объединить эмоции и впечатления, игровую механику и мотивацию игроков. Познакомитесь с принципами дизайна, которыми пользуются ведущие студии мира! Создайте игровую механику, вызывающую эмоции и обеспечивающую разнообразие.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.


В работу с головой. Паттерны успеха от IT-специалиста

Не можете сосредоточиться на работе? Постоянно отвлекаетесь на проверку электронной почты, социальные сети и новостные ленты? Пора воспользоваться советами от ведущих IT-специалистов и погрузиться в работу с головой.Освойте один из самых ценных навыков – умение сосредоточиться на сложной задаче, не отвлекаясь на мелочи. Только так можно справиться со сложной информацией и добиться лучших результатов за минимальное время. Погружение в работу – это суперсила в нашей все более конкурентной экономике XXI века.


Чистый код. Создание, анализ и рефакторинг

Даже плохой программный код может работать. Однако если код не является «чистым», это всегда будет мешать развитию проекта и компании-разработчика, отнимая значительные ресурсы на его поддержку и «укрощение». Эта книга посвящена хорошему программированию. Она полна реальных примеров кода. Мы будем рассматривать код с различных направлений: сверху вниз, снизу вверх и даже изнутри. Прочитав книгу, вы узнаете много нового о коде. Более того, вы научитесь отличать хороший код от плохого. Вы узнаете, как писать хороший код и как преобразовать плохой код в хороший. Книга состоит из трех частей.


Изучаем Python

Книга "Изучаем Python" - это ускоренный курс, который позволит вам сэкономить время и сразу начать писать работоспособные программы (игры, визуализации данных, веб-приложения и многое другое). Хотите стать программистом? В первой части книги вам предстоит узнать о базовых принципах программирования, познакомиться со списками, словарями, классами и циклами, вы научитесь создавать программы и тестировать код. Во второй части книги вы начнете использовать знания на практике, работая над тремя крупными проектами: создадите собственную "стрелялку" с нарастающей сложностью уровней, займетесь работой с большими наборами данных и освоите их визуализацию, и, наконец, создадите полноценное веб-приложение на базе Django, гарантирующее конфиденциальность пользовательской информации. Если вы решились разобраться в том что такое программирование, не нужно ждать.


Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих

Алгоритмы - это всего лишь пошаговые алгоритмы решения задач, и большинство таких задач уже были кем-то решены, протестированы и проверены. Можно, конечно, погрузится в глубокую философию гениального Кнута, изучить многостраничные фолианты с доказательствами и обоснованиями, но хотите ли вы тратить на это свое время? Откройте великолепно иллюстрированную книгу и вы сразу поймете, что алгоритмы - это просто. А грокать алгоритмы - это веселое и увлекательное занятие.