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:)
Глава 10. Контрольные вопросы
Вопрос 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
Приложение II. Список ключевых слов SQL по главам
Глава 4. Ключевые слова
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; — Точку с запятой указывать необязательно
Глава 5. Ключевые слова
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