- •Тема 1) Введение в sql
- •Операторы ddl (Data Definition Language) - операторы определения объектов базы данных
- •Операторы dml (Data Manipulation Language) - операторы манипулирования данными
- •Операторы защиты и управления данными
- •К операторам определения объектов базы данных можно отнести следующие операторы…
- •2.2) Создание/уничтожение таблиц базы данных
- •2.3) Создание (удаление) индексов
- •Тема 3) Определение ограничений для таблиц бд
- •Тема 4) Действие ограничений целостности
- •Тема 5) Выборка данных (предложение select)
- •Тема 8) Выборка с упорядочением и агрегированием данных
- •Тема 8) Запросы с использованием нескольких таблиц
- •Тема 9) Реализация операций реляционной алгебры предложением select
- •Тема 10) Создание представлений
- •Тема 11) Предложения модификации данных
- •Тема 12) Безопасность и санкционирование доступа
- •Тема 13) Обработка транзакций
Тема 10) Создание представлений
Представление - это виртуальная таблица, которая сама по себе не существует, но для пользователя выглядит таким образом, как будто она существует. Представление не поддерживаются его собственными физическими хранимыми данными. Вместо этого в каталоге таблиц хранится определение, оговаривающее, из каких столбцов и строк других таблиц оно должно быть сформировано при реализации SQL-предложения на получение данных из представления или на модификацию таких данных.
Синтаксис предложения CREATE VIEW имеет вид
CREATE VIEW имя_представления
[(столбец[,столбец] ...)]
AS подзапрос
[WITH CHECK OPTION];
где подзапрос, следующий за AS и являющийся определением данного представления, не исполняется, а просто сохраняется в каталоге;
необязательная фраза "WITH CHECK OPTION" (с проверкой) указывает, что для операций INSERT и UPDATE над этим пред-ставлением должна осуществляться проверка, обеспечивающая удовлетворение WHERE фразы подзапроса;
список имен столбцов должен быть обязательно определен лишь в тех случаях, когда:
а) хотя бы один из столбцов подзапроса не имеет имени (создается с помощью выражения, SQL-функции или константы);
б) два или более столбцов подзапроса имеют одно и то же имя;
если же список отсутствует, то представление наследует имена столбцов из подзапроса.
Например, создадим представление Товары_шт
CREATE VIEW Товары_шт
AS SELECT Код товара, Наименование, Ед_изм
FROM Товары
WHERE Ед_изм = 'Шт';
которое может рассматриваться пользователем как новая таблица в базе данных.
Уничтожение ненужных представлений выполняется с помощью предложения DROP VIEW (уничтожить представление), имеющего следующий формат:
DROP VIEW представление;
Создав представление Товары_шт пользователь может считать, что в базе данных реально существует такая таблица и дать, например, запрос на получение из нее всех данных:
SELECT *
FROM Товары_шт;
результат которого имеет вид
Код товара |
Наименование |
Ед_изм |
1 |
Товар_1 |
шт |
2 |
Товар_2 |
шт |
5 |
Товар_5 |
шт |
Поскольку при определении представления может быть использован любой допустимый подзапрос, то выборка данных может осуществляться как из базовых таблиц, так и из представлений.
Задание к теме 10:
Создать представления для реализации отчетов 1-3 согласно индивидуального варианта задания
2. Какое из этих представлений - модифицируемое ?
#1 CREATE VIEW Dailyorders
AS SELECT DISTINCT cnum, snum, onum,
odate
FROM Orders;
#2 CREATE VIEW Custotals
AS SELECT cname, SUM (amt)
FROM Orders, Customers
WHERE Orders.cnum = customer.cnum
GROUP BY cname;
#3 CREATE VIEW Thirdorders
AS SELECT *
FROM Dailyorders
WHERE odate = 10/03/1990;
#4 CREATE VIEW Nullcities
AS SELECT snum, sname, city
FROM Salespeople
WHERE city IS NULL
OR sname BETWEEN 'A' AND 'MZ';