Компоненты SQL
Создание многотабличного представления
Чтобы получать ответы на имеющиеся вопросы, часто приходится выбирать данные не менее чем из двух таблиц. Скажем, вы работаете в магазине спорттоваров, и для рассылки рекламы по почте вам нужен список клиентов, купивших у вас в прошлом году лыжное снаряжение. Скорее всего, потребуется информация из следующих таблиц: CUSTOMER (клиент), PRODUCT (товар), INVOICE (счет-фактура) и INVOICE_LINE (строка счета-фактуры). На их основе можно создать многотабличное представление, которое покажет нужные данные. Создав представление, его можно использовать снова и снова. При каждом таком использовании представление отображает последние изменения в таблицах, на основе которых это представление создано.
В базе данных магазина спорттоваров имеются четыре таблицы: CUSTOMER, PRODUCT, INVOICE и INVOICE_LINE. Структура каждой из них показана в табл. 3.1.
Таблица 3.1. Таблицы базы данных магазина спорттоваров.
Таблица | Столбец | Тип данных | Ограничение |
---|---|---|---|
CUSTOMER | Customer iD (идентификационный номер клиента) | INTEGER | NOT NULL (не может быть неопределенным значением) |
FirstName (имя) | CHARACTER (15) | ||
LastName (фамилия) | CHARACTER (20) | NOT NULL | |
Street (улица) | CHARACTER (25) | ||
City (ГОРОД) | CHARACTER (20) | ||
State (штат) | CHARACTER (2) | ||
Zipcode (ПОЧТОВЫЙ КОД) | INTEGER | ||
Phone (телефон) | CHARACTER (13) | ||
PRODUCT | Product id (идентификационный номер товара) | INTEGER | NOT NULL |
Name (название) | CHARACTER (25) | ||
Description (описание) | CHARACTER (30) | ||
Сategory (категория) | CHARACTER (15) | ||
Vendor id (идентификационный номер поставщика) | INTEGER | ||
VendorName (наименование поставщика) | CHARACTER (30) | ||
INVOICE | InvoiceNumber (номер счета-фактуры) | INTEGER | NOT NULL |
CustomeriD (идентификационный номер покупателя) | INTEGER | ||
InvoiceDate (дата выписки счета-фактуры) | DATE | ||
Totalsale (всего продано на сумму) | NUMERIC (9.2) | ||
TotalRemitted (всего оплачено) | NUMERIC (9.2) | ||
Formof Payment (форма платежа) | CHARACTER (10) | ||
INVOICE_LINE | LineNumber (номер строки) | INTEGER | NOT NULL |
InvoiceNumber (номер счета-фактуры) | INTEGER | ||
Product id (идентификационный номер товара) | INTEGER | ||
Quantity (количество) | INTEGER | ||
SalePrice (продано по цене) | NUMERIC (9.2) |