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

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

Читать: SQL: быстрое погружение - Уолтер Шилдс на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:

Операторы — это специальные ключевые слова в SQL, которые мы используем вместе с условиями для сравнения значений полей, выбора подмножеств полей или выполнения арифметических операций.*** В отличие от уже изученных нами ключевых слов, таких как SELECT, операторы не могут существовать как самостоятельные условия SQL, их следует использовать с другими условиями, такими как SELECT и WHERE (которые мы рассмотрим в этой главе). На рис. 41 показаны три типа операторов, которые мы будем использовать далее в этой главе.

Рис. 41

Примечание

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

В следующем примере мы рассмотрим, как арифметические операторы используются вместе с условием SELECT для увеличения значения поля Total из таблицы invoices базы данных sTunes. Арифметические операции полезны, когда необходимо считать налоги, надбавки и др.

SELECT

Total AS [Original Amount],

Total + 10 AS [Addition Operator],

Total — 10 AS [Subtraction Operator],

Total / 10 AS [Division Operator],

Total * 10 AS [Multiplication Operator],

Total % 10 AS [Modulo Operator]

FROM

invoices

ORDER BY

Total DESC

Рис. 42

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

• Используя приведенный выше пример запроса, отобразите поле Total из таблицы invoices с добавленным налогом в размере 15 %.

Фильтрация данных (WHERE)

Помимо условия SELECT операторы чаще всего используются в условии WHERE. С помощью WHERE мы можем добавлять к нашим запросам определенные условия, например ограничивать результаты наших запросов в соответствии с необходимыми задачами. Некоторые распространенные типы данных, которые мы можем фильтровать, содержат числа, текст и даты. Для фильтрации данных мы будем использовать WHERE вместе с операторами.

Рассмотрим следующий пример. Предположим, что отдел продаж компании sTunes хочет знать, сколько клиентов купили две песни стоимостью по $0,99 каждая. Как ответить на этот вопрос? В главе 3 в разделе «Контрольные вопросы» мы показывали таблицу tracks. Из нее мы знаем, что наша компания продает отдельные песни по цене $0,99 и $1,99 (рис. 43).

Если мы проанализируем таблицу invoices (рис. 44), то увидим общую стоимость заказов в поле Total.

Если бы нам понадобилось узнать количество клиентов, которые приобрели всего две песни по $0,99, мы бы отобразили в таблице invoices запись на общую сумму $1,98 — за две песни.

Рис. 43

Рис. 44

Используя инструменты, которые вы изучили в предыдущей главе, можно написать запрос, который осуществляет выборку всех счетов, а затем упорядочивает их по общей сумме, но для этого необходимо выполнить расчет вручную. Но можно и вставить условие WHERE между условиями FROM и ORDERBY для поиска только тех счетов, которые равны $1,98. Вместе с итоговой суммой добавим несколько других полей, таких как дата выставления счета и адрес, что поможет нам идентифицировать каждый счет. Получим следующий запрос:

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

Total = 1.98

ORDER BY

InvoiceDate

Рис. 45

Примечание

Условие WHERE всегда следует после условия FROM, но всегда находится перед ORDER BY. В приведенном выше примере условие WHERE добавлено для возврата всех счетов на сумму $1,98. Знак = — это оператор сравнения.

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

Используя операторы сравнения, напишите следующие запросы:

• запрос, возвращающий все счета, превышающие значение $1,98;

• запрос, возвращающий все счета, которые больше или равны $1,98;

• запрос, возвращающий все счета, кроме $1,98.

Другой полезный вид операторов — логические. Используя логические операторы, вы можете создавать более сложные и конкретные запросы, которые трудно выполнить с помощью операторов сравнения. Предположим, что вас попросили узнать, какое количество счетов имеется в определенном диапазоне, например от $1,98 до $5.

В данном случае целесообразно использовать оператор BETWEEN. Оператор BETWEEN задает диапазон для проверки условия. Для определения необходимого диапазона значений вместе с оператором BETWEEN используется оператор AND. Рассмотрим следующий запрос, который возвращает счета, находящиеся в диапазоне от $1,98 до $5,00.

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

Total BETWEEN 1.98 AND 5.00

ORDER BY

InvoiceDate

Проанализируем первые десять результатов этого запроса (рис. 46). Итоговые суммы счетов находятся в диапазоне от $1,98 до $5. Оператор BETWEEN включает

Рис. 46

в диапазон и параметры, которые вы ему зададите. Другими словами, здесь он будет включать любые значения между 1,98 и 5,00 и равные этим значениям. Для достижения того же результата, используя условие WHERE и операторы сравнения, вы можете написать следующее: Total>=1.98ANDTotal<=5.00. Однако в данном случае гораздо проще использовать оператор BETWEEN.

Примечание

Хотя в предыдущем примере мы используем оператор AND вместе с BETWEEN, оператор AND имеет более широкое применение в качестве логического оператора. Его мы рассмотрим позже.

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

• Используя предыдущий запрос, выполните сортировку по полю Total. Выясните, какая сумма счета в этом наборе данных максимальная.

Еще один очень важный оператор SQL — оператор IN. Он позволяет определить, совпадает ли значение в условии WHERE с какими-то значениями в списке. В предыдущем примере оператор BETWEEN возвращал каждое значение в нашей таблице invoices, находящееся в диапазоне от 1,98 до 5,00. Оператор IN позволяет нам находить указанные значения в наборе данных. Значения разделены запятой и заключены в круглые скобки. Следующий запрос возвращает только суммы счетов-фактур, равные $1,98 или $3,96 (рис. 47).

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

Total IN (1.98, 3.96)

ORDER BY

InvoiceDate

Примечание

С помощью оператора = мы можем добавить только одно значение. С помощью оператора IN мы можем добавить сколько угодно значений, разделенных запятыми. Также мы можем использовать оператор IN с текстом (описано в следующем разделе).

Рис. 47

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

• Сколько записей возвращает указанный выше запрос?

• Напишите запрос, в котором перечислены все счета на сумму $13,86, $18,86 и $21,86.

Фильтрация строк

Мы также можем использовать операторы для возврата определенного текста подобно тому, как мы делали с числами. Рассмотрим пример с использованием операторов сравнения. Ответим на следующий вопрос: сколько счетов было выставлено в городе Тусон (Tucson)?

Для этого необходимо структурировать наш оператор SELECT. Следующий запрос возвращает все счета, выставленные в городе Тусон:

SELECT

InvoiceDate,

BillingAddress,

BillingCity,



Поделиться книгой:

На главную
Назад