русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Представления


Дата добавления: 2015-07-09; просмотров: 643; Нарушение авторских прав


 

Представление, или VIEV, - некоторое подобие таблицы, содержание которого выбирается из других таблиц с помощью выполнения запроса, причем при изменении значений в этих таблицах, данные автоматически меняются и представлении.

Представление – это фактически тот же запрос, который выполняется всякий раз, когда представление участвует в какой-либо команде. Вывод этого запроса при этом в каждый момент времени становится содержанием представления.

Имеются две возможности реализации представления:

1. простое определение, то есть система формирует каждую запись представления по мере необходимости, постепенно считывая исходные данные с базовых таблиц;

2. сложное определение, то есть СУБД приходится сначала выполнить такую операцию, как материализация представления, т.е. сохранение информации, из которой состоит представление во временной таблице. Затем система приступает к выполнению пользовательской команды и формированию ее результатов, а после этого временная таблица удаляется.

 

18.1. Представление создаетсякомандой CREATE VIEV, после которой указывается его имя, а далее следует запрос, формирующий тело представления.

 

Пример 1. Создать представление OTLSTUD, которое содержит информацию о студентах, получающих стипендию в размере 25.50.

 

CREATE VIEVOTLSTUD

AS SELECT*

FROMSTUDIENTS

WHERESTIP=25.50;

 

Теперь полученное представление можно использовать как любую другую таблицу: она может быть запрошена, модифицирована, в нее могут быть ставлены записи, она может быть удалена из БД или соединена с другими таблицами и представлениями.

 

Пример 2.Вывести результат запроса

 

SELECT *

FROMOTLSTUD

 

Результат запроса:

 

SNUM SFAM SIMA SOTCH STIP

-------------------------------------------------------------------------------------------



3412 Поляков Анатолий Алексеевич 25.50

3416 Нагорный Евгений Васильевич 25.50

 

Представления значительно расширяют возможности управления данными, например в случае когда необходимо скрыть часть информации.

 

Пример 3. Создать представление, в котором скрывается от пользователя размер стипендии.

 

CREATE VIEVSTIPOFF

AS SELECTSNUM, SFAM, SIMA, SOTCH

FROMSTUDIENTS

Пример 4. Вывести содержимое таблицы STIPOFF

 

SELECT *

FROMSTIPOFF

Результат запроса:

 

SNUM SFAM SIMA SOTCH

-------------------------------------------------------------

3412 Поляков Анатолий Алексеевич

3413 Старова Любовь Михайловна

3414 Гриценко Владимир Николаевич

3415 Котенко Анатолий Николаевич

3416 Нагорный Евгений Васильевич

 

Представление теперь может изменяться командами модификации DML, но модификация не будет воздействовать на само представление. Фактически команды будут перенаправлены к базовой таблице.

 

Пример 5. какая из команд будет отвергнута системой.

 

UPDATESTIPOFF UPDATESTIPOFF

SETSIMA=’Василий’ SETSTIP=25.50

WHERE SNUM=3415; WHERESNUM=3415;

 

В представлениях нередко возникает необходимость называть столбцы новыми именами. Это может потребоваться в случае, если столбцы являются вводимыми, и поэтому не имеющими имен, или если два или более столбцов в объединении имеют те же имена, что и в базовой таблице. Имена, которые необходимо присвоить полям, записываются в круглых скобках после имени таблиц. Они могут не указываться, если совпадают с именами полей запрашиваемой таблицы.

 

Пример 6. Объясните, почему данные команды являются единичными:

SELECT * SELECT *

FROMOTLSUD FROMSTUDIENTS

WHERESNUM>3412; WHERESTIP=25.50

ANDSNUM>3412;

Пример 7. Создать представление, которое содержит данные о количестве студентов, получающих стипендию.

 

CREATE VIEVSTIPCOUNT (STIP, COL)

AS SELECTSTIP, COUNT(*)

FROMSTUDIENTS

GROUP BYSTIP;

 

18.2. Групповые представления – это представления которые содержат предложение GROUP BY или которые основаны на других групповых представлениях. Представления могут быть основаны сразу на нескольких базовых таблицах.

 

Пример 1. Создать представление, которое показывало бы оценки студента по учебному предмету, причем содержало бы не коды, а полные названия.

CREATE VIEVSTUDOSEN

AS SELECTTHIRD.UNUM, FIRST.SEAM, SECOND.PNAME, THIRD.OCENCA

FROMSTUDIENTS FIRST, PREDMET SECOND, USP THIRD

WHEREFIRST.SNUM=THIRD.SNUM

ANDSECOND.PNUM=THIRD.PNUM;

После этого легко ориентироваться в полученных оценках.

 

Пример 2. Получить подробную информацию об оценках студента Полякова.

 

SELECT *

FROMSTUDOSEN

WHERESFAM=’Поляков’;

 

Результат запроса:

 

UNUM SFAM PNAME OCENKA

--------------------------------------------------------------------

1001 Поляков Физика 5

1004 Поляков Математика 4

 

Так же допускается объединение представления с другими базовыми таблицами или представлениями.

 

Пример 3. Вывести информацию об оценках и дате их получения студента Полякова.

 

SELECTSFAM, PNAME, OCENCA,UDATE

FROMSTUDOSEN FIRST, USP SECOND

WHEREFIRST.SFAM=’Поляков’

AND FIRST.UNUM=SECOND.UNUM;

 

Результат запроса:

 

SFAM PNAME OCENCA UDATE

-----------------------------------------------------------------

Поляков Физика 5 10/06/1999

Поляков Математика 4 12/06/1999

 

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

 

Пример 4. создать представление, в котором выводятся оценки по дисциплине выше средней по той же дисциплине.

 

CREATE VIEVAVGOC

AS SELECT *

FROMUSP FIRST

WHEREOCENKA >

(SELECT AVG(OCENKA)

FROMUSP SECOND

WHERE SECOND.PNUM=FIRST.PNUM);

 

Пример 5. извлечь данные из таблицы AVGOC.

 

SELECT *

FROMAVGOC;

 

Ограничения:

 

1. Представление должно основываться на одиночном запросе, поэтому объединение UNION не разрешается.

2. В представлениях не используется упорядочение ORDER BY.

 

18.3. Представление удаляетсякомандой

 

DROP VIEV<VIEV NAME>

 

При удалении представления пользователь должен являться его владельцем.

18.4. Модификация представленияпроисходит под управлением команд модификации языка DML – INSERT, UPDATEиDELETE.Если команды модификации языка представлении, то оно считается модифицируемым; в противном случае оно предназначено только для чтения при запросе.

Модифицируемое представление – это представление, в котором команда модификации может выполниться так, чтобы изменить только одну запись основной таблицы в каждый момент времени, не воздействуя на другие строки любой таблицы

 

Критерии, по которым определяют, является ли представление модифицируемым в SQL, следующие:

§ Представление должно основываться только на одной базовой таблице;

§ Оно должно содержать первичный ключ этой таблицы;

§ Оно не должно иметь никаких полей, которые бы являлись агрегатными функциями;

§ Оно не должно содержать DISTINCT в своем определении;

§ Представление не должно использовать GROUP BY или HAVING в своем определении;

§ Желательно, чтобы оно не использовало в своем определении подзапросы;

§ Оно не может быть использовано в другом представлении, но это представление должно также быть модифицируемым;

§ Оно не должно использовать константы, строки или выражения значений среди выбранных полей вывода;

§ Для команды INSERT оно может содержать любые поля основной таблицы, которые имеют ограничение NOT NULL, если другое ограничение по умолчанию не определенно.

 

Пример 1. определите, почему следующее представление является представлением только для чтения. Определите содержание таблицы.

 

CREATE VIEVPRCOUNT (UDATE, COL)

AS SELECTUDATE, COUNT (*)

FROMUSP

GROUP BYUDATE;

 

Пример 2. Определите, почему следующее представление является модифицируемым представлением. Определите содержание таблицы.

 

CREATE VIEVMATEMUSP

AS SELECT *

FROMUSP

WHEREPNUM=2003;

 

Пример 3. Определите характер представления и содержание таблицы.

 

CREATE VIEVIDXSTIP (SNUM, SFAM, NEWSTIP)

AS SELECTSNUM, SFAM, STIP*2

FROMSTUDIENTS

WHERESTIP=25.50;

 

Пример 4. Определите характер представления и содержание таблицы.

 

CREATE VIEVDATEOS

AS SELECT *

FROMSTUDENTS

WHERESNUM IN

(SELECTSNUM

FROMUSP

WHEREUDATE=10/06/1999);

 

Пример 5. Определите характер представления и содержание таблицы.

 

CREATE VIEW DATEOC2

AS SELECT *

FROM USP

WHERE UDATE IN (10/06/1999,11/06/1999);

 

Пример 6. Определите характер представления и содержание таблицы.

 

CREATE VIEVONLY 5

AS SELECTSNUM, OCENKA

FROMUSP

WHEREOCENKA=5;

 

18.5. Фраза WITH CHCK OPTIONпроизводит действие в режиме «все или ничего», так как она размещается в определении представления, и все команды модификации будут подвергаться проверке. Таким образом можно регулировать процесс ввода значений, которые пользователь впоследствии сам не в состоянии корректировать. Эта фраза применяется только в представлениях, которые основаны на базовых таблицах, а не на других представлениях.

 

Пример 1. создать представление о студентах, имеющих отличные оценки с использованием режима «все или ничего».

 

CREATE VIEVONLY5

AS SELECTSNUM, OCENCA

FROMUSP

WHEREOCENKA=5

WITH CHECK OPTION;

18.6. Курсор – это вид переменной, которая связана с запросом. Значением этой переменной может быть каждая строка, которая выводится при запросе и он должен быть объявлен командой DECLARE CURSOR.

Например, запрос

 

EXEC SQL DECLARE CURSORSTIPCUR

FOR SELECTSNUM, SFAM, STIP

FROMSTUDENTS

WHERESTIP=25.50;

Не выполняется немедленно, так как в данном случае представлено только его определение. В отличии от базовых таблиц и представлений, строки курсора упорядочены и имеются первая, вторая и т.д., а так же последняя строка. Этот порядок может быть произвольным с явным управлением при помощи фразы ORDER BY в запросе. Когда в программе необходимо выполнить запрос, то открывается курсор с помощью команды.

 

EXEC SQL OPEN CURSORSTIPCUR;

 

И только тогда передаются значения в курсор.

 

Команда FETCH используется для того, чтобы извлечь вывод из запроса по одной строке в каждый момент времени .

 

Следующая конструкция присвоит значения из первой выбранной сртоки в переменные памяти.

 

EXEC SQL FETCH STIPCURINTO STUDENTSID, : STUDENTSFAM,: STUDENTSSTIP;

 

Как правило, команду FETCHпомещают внутрь цикла так, чтобы выбрав строку из курсора, можно было осуществить перемещение набора значений из этой строки в переменные, возвратиться обратно в цикл и переместить следующий набор значений в те же самые переменные.

 

Оператор CLOSE CURSORосвобождает курсор значений, поэтому после него запрос нужно будет выполнить повторно с оператором OPEN CURSOR,прежде чемперейти квыбору следующих значений.

 

В нашем случае этот оператор имеет вид:

 

EXEC SQL CLOSE CURSORSTIPCUR;

 

 



<== предыдущая лекция | следующая лекция ==>
Методы блокировки | Безопсность баз данных и привилегии


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.008 сек.