Компоненты 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) |
