invoices

GROUP BY

BillingCity

ORDER BY

BillingCity

Вопрос 3. Сохраните этот новый запрос как представление с именем V_CityAvgVsGlobalAvg.

Решение. Копируем код из вопроса 2 и в верхнюю часть запроса добавляем оператор CREATEVIEW.

CREATE VIEW V_CityAvgVsGlobalAvg AS

SELECT

BillingCity,

AVG(Total) AS [City Average],

(select

*

from

V_GlobalAverage) AS [Global Average]

FROM

invoices

GROUP BY

BillingCity

ORDER BY

BillingCity

Вопрос 4. Удалите представление V_GlobalAverage. Как будет работать V_CityAvgVsGlobalAvg?

Решение. Чтобы удалить наше представление, воспользуемся условием DROPVIEW. Кроме того, на вкладке Database Structure (Структура базы данных) в DB Browser мы можем щелкнуть правой кнопкой мыши по представлению и удалить его.

DROP VIEW V_GlobalAverage

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

V_CityAvgVsGlobalAvg

SELECT

*

FROM

V_CityAvgVsGlobalAvg

В результате мы получим следующее сообщение об ошибке:

no such table: main.V_GlobalAverage:

(таблица не существует: main.V_GlobalAverage:)

<p id="_16_xhtml_2523toc_marker_16_7"><strong>Глава 10. Контрольные вопросы</strong></p>

Вопрос 1. В таблицу customers добавьте новую запись.

Решение. Сначала необходимо добавить новую запись в таблицу customers. Клиент может существовать сам по себе, не будучи упомянутым в какой-либо другой таблице (если он еще не совершил покупку). Для начала вставьте запись в таблицу customers.

INSERT INTO

customers

VALUES ('60', 'New', 'Customer', '', '123 Day Street', 'New York', 'NY', 'USA', '11201', '(347) 525-8688', '', 'nc@gmail.com', '1');

Примечание

Некоторые поля оставим пустыми, поставив рядом две одинарные кавычки. Запустим запрос на выполнение и проанализируем результаты.

SELECT

*

FROM

customers

WHERE

FirstName = 'New'

Примечание

Если для нового клиента вы использовали другое имя, измените это значение в запросе соответствующим образом.

Рис. 144

Вопрос 2. Создайте счет для этого клиента.

Решение. Чтобы создать запись счета для нашего нового клиента, нам необходимо обратить особое внимание на поля в таблице invoices, которые соответствуют таблице customers. Например, в наших счетах используется тот же адрес, который отображается в таблице customers.

INSERT INTO

invoices

VALUES ('413', '60', '2019-10-04 00:00:00', '123 Day Street', 'New York', 'NY', 'USA', '10201', '50.00')

Вопрос 3. Удалите этого клиента из базы данных.

Решение. Как мы упоминали в главе 10, рекомендуется просмотреть данные, которые необходимо удалить. В этом случае данные, которые мы удаляем, содержатся в двух таблицах, поэтому для просмотра всех необходимых нам данных мы воспользуемся условием INNERJOIN.

SELECT

c. FirstName,

c. LastName,

i. Total,

i. InvoiceId

FROM

invoices i

INNER JOIN

customers c

ON i.CustomerId = c.CustomerId

WHERE c.CustomerId = 60

Теперь, когда мы подтвердили данные, мы можем использовать оператор DELETE.

DELETE FROM

invoices

WHERE CustomerId = 60

DELETE FROM

customers

WHERE CustomerId = 60

<p id="_17_xhtml_2523toc_marker_17"><strong>Приложение II. Список ключевых слов SQL по главам</strong></p><p id="_17_xhtml_2523toc_marker_17_"><strong>Глава 4. Ключевые слова</strong></p>
SELECT, AS, FROM, ORDERBY, ASC, DESC, LIMIT

/*

Многострочные комментарии начинаются с сочетания символов /* и заканчиваются символами */. Как правило, блок комментариев соответствует следующему формату:

CREATED BY: <ФИО>

CREATED ON: <дата>

DESCRIPTION: <краткое описание, что делает запрос>

*/

— В данном примере используются однострочные комментарии:

SELECT — Указывает, какие данные или поля будут получены из базы данных

FirstName AS 'First Name', — Имя поля

LastName AS [Last Name], — С помощью ключевого слова AS можно

переименовать поле

Company AS Co — Псевдоним, состоящий из одного слова, который нет

необходимости заключать в одинарные кавычки или скобки

FROM — Указывает, какие таблицы содержит база данных

customers — Ссылка на таблицу customers

ORDER BY — Указывает порядок сортировки записей по определенному полю;

по умолчанию будет определена сортировка в порядке возрастания (A — Z)

FirstName DESC — сортировка в порядке убывания (Z — A)

LIMIT — Задает ограничение на количество записей, выбираемых из базы данных

10; — Точку с запятой указывать необязательно

<p id="_17_xhtml_2523toc_marker_17_1"><strong>Глава 5. Ключевые слова</strong></p>
WHERE,CASE,WHEN,THEN,ELSE,ENDAS,DATE()

Примечание

Операторы в SQL используются в условиях SQL.

Рис. 145

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

Total = 1.98 — Возвращает только записи, где Total = 1.98

ORDER BY

InvoiceDate

CASE — Перебирает условия и возвращает значение, когда выполняется первое условие

WHEN — Используется для указания условия

THEN — Используется после оператора WHEN

ELSE — Используется, если условие не выполнено в условиях WHEN/THEN

END AS — Создается новое поле

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total,

CASE — Создается четыре условия для отображения различных ценовых диапазонов

WHEN TOTAL < 2.00 THEN 'Baseline Purchase' — Условие 1

Перейти на страницу:

Все книги серии Библиотека программиста

Похожие книги