
- •Лабораторная работа №3 определение данных и манипулирование данными
- •Инструкции языка определения данных
- •Базы данных
- •Базовые таблицы Инструкция create table
- •Инструкция create table as
- •Инструкция drop table
- •Инструкция alter table
- •Индексы
- •Представления
- •Преимущество использования представлений
- •Модифицируемые и не модифицируемые представления
- •Задания для самостоятельной работы
- •Инструкции языка манипулирования данными
- •Инструкция insert
- •Инструкция delete
- •Инструкция update
- •Задания для самостоятельной работы
- •Контрольное задание.
- •Контрольные вопросы
Представления
Представления – это виртуальные таблицы, формируемые из столбцов и строк других таблиц. Они работают в запросах и командах манипулирования данными точно так же, как и базовые таблицы, но, в отличие от последних, не содержат никаких собственных данных. Представления подобны окнам, через которые пользователь просматривает информацию, которая физически хранится в базовой таблице. Другими словами, представление это фактически запрос, который выполняется всякий раз, когда представление упоминается в инструкции, при этом результаты этого запроса в каждый момент и составляют содержание представления.
Представление создается с помощью инструкции CREATE VIEW, синтаксис которой имеет следующий вид:
CREATE [OR REPLACE] [TEMP | TEMPORARY] VIEW имя_представления [ (столбец [, ...] ) ] AS запрос
где запрос, следующий за AS и являющийся определением данного представления, не исполняется, а просто сохраняется в системном каталоге. Список имен столбцов должен быть обязательно определен лишь в тех случаях, когда хотя бы один из столбцов запроса не имеет имени (создается с помощью выражения, SQL-функции или константы) или два (или более) столбцов подзапроса имеют одно и то же имя. Если же список отсутствует, то представление наследует имена столбцов из подзапроса.
При использовании CREATE OR REPLACE, если представление с таким же именем уже существует в данной схеме, оно будет переопределено.
С помощью TEMP или TEMPORARY создаются временные представления. Если представление определяется на основе только временных таблиц, оно автоматически становится временным, независимо от того, указано ли TEMP/TEMPORARY при его создании.
Синтаксис инструкции удаления представления подобен синтаксису удаления базовых таблиц:
DROP VIEW имя_представления
Преимущество использования представлений
По сравнению с базовой таблицей преимущество представления заключается в том, что представление будет модифицировано автоматически всякий раз, когда таблица, лежащая в его основе изменяется. Содержание представления не фиксировано, и переназначается каждый раз, когда какая-то инструкция ссылается на представление.
В представлениях можно использовать модификатор GROUP BY, и тогда они называются групповыми представлениями. Представления не требуют, чтобы их вывод осуществлялся из одной базовой таблицы. Так как почти любой допустимый запрос SQL может быть использован в представлении, он может выводить информацию из любого числа базовых таблиц, или из других представлений. Представления могут также использовать и подзапросы, включая коррелированные подзапросы.
Наконец, одна из основных задач, которую позволяют решать представления, – обеспечение независимости пользовательских программ от изменения логической структуры базы данных при ее расширении и/или изменении размещения столбцов, возникающего, например, при разбиении таблиц на две таблицы. В последнем случае можно создать представление-соединение с именем и структурой исходной таблицы, позволяющее сохранить программы, существовавшие до изменения структуры базы данных.