Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа КИС .doc
Скачиваний:
6
Добавлен:
17.11.2019
Размер:
633.86 Кб
Скачать

Изменение таблиц

Для изменения таблицы, а именно: для включения новых столбцов и ограничений, а также удаления ограничений, используется оператор ALTER TABLE, имеющий следующий синтаксис:

<оператор изменения таблицы>::= ALTER TABLE <имя таблицы> {ADD <элемент таблицы>[{,<элемент таблицы>}...] | DROP CONSTRAINT <имя ограничения>[{,<имя ограничения>}...]}

Пример включения нового столбца в таблицу:

ALTER TABLE names2 ADD middle_name VARCHAR(20) NULL, fax VARCHAR(15) NULL

 

Создание представлений

Механизм представлений является мощным средством языка SQL, позволяющим скрыть реальную структуру БД от некоторых пользователей за счет определения представления БД. Представление реально является некоторым хранимым в БД запросом с именованными столбцами, а для пользователя ничем не отличается от базовой таблицы БД. Представляемая таблица является виртуальной. Обычно вычисление представляемой таблицы производится каждый раз при использовании представления.

Оператор определения представления имеет следующий синтаксис:

 

<оператор создания представления>::= CREATE VIEW <имя таблицы>[(список столбцов)] AS <спецификация запроса> [WITH CHECK OPTION]

<спецификация запроса>::= SELECT [ALL | DISTINCT] <список выборки><табличное выражение>

<список столбцов>::=<имя столбца>[{,<имя столбца>}...]

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

Примеры создания представлений:

CREATE VIEW ta_limited AS

SELECT au_id, title_id, au_ord FROM titleauthor

CREATE VIEW cal_publishers AS

SELECT * FROM publishers WHERE state="CA"

 

Операторы, связанные с курсором

Курсор - это механизм языка SQL, предназначенный для того, чтобы позволить прикладной программе последовательно, строка за строкой, просмотреть результат связанного с курсором запроса. Курсор можно представить как “буфер” с указателем на текущую строку. Ниже приводится синтаксис операторов, связанных с курсором и их краткая характеристика.

 

<оператор объявления курсора>::= DECLARE <имя курсора> [SCROLL] CURSOR FOR <спецификация курсора>

<спецификация курсора>::= SELECT [ALL | DISTINCT] <список выборки> <табличное выражение>[ORDER BY <спецификация сортировки>]

Этот оператор не является выполняемым, он только связывает имя курсора со спецификацией курсора. Если задан описатель SCROLL, то курсор является “скроллируемым”, то есть допускает прокрутку результирующей таблицы как вниз, так и вверх на любое число строк.

 

<оператор открытия курсора>::= OPEN <имя курсора>

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

 

<оператор чтения>::= FETCH <имя курсора> INTO <список спецификаций целей>

<список спецификаций целей>::= <спецификация цели>[{,<спецификация цели>}..]

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

 

<оператор позиционного удаления>::= DELETE FROM <имя таблицы> WHERE CURRENT OF <имя курсора>

Данный оператор удаляет строку таблицы. Изменяемая таблица, указанная в разделе FROM оператора DELETE, должна быть таблицей, указанной в самом внешнем разделе FROM спецификации курсора.

 

<оператор позиционной модификации>::= UPDATE <имя таблицы> SET <предложение установки> [{,<предложение установки>}...] WHERE CURRENT OF <имя курсора>

<предложение установки>::= <имя столбца> = {<арифметическое выражение> | NULL}

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

 

<оператор закрытия курсора>::= CLOSE <имя курсора>

 

Примеры работы с курсором:

DECLARE mycursor SCROLL CURSOR FOR

SELECT au_lname FROM authors

OPEN mycursor

FETCH FIRST FROM mycursor /* первая строка */

FETCH ABSOLUTE 10 FROM mycursor

FETCH NEXT FROM mycursor /* следующая строка */

FETCH RELATIVE 2 FROM mycursor

FETCH PRIOR FROM mycursor /* предыдущая строка */

FETCH LAST FROM mycursor /* последняя строка */

CLOSE mycursor