
- •Типы сущностей, типы связей. Модальность связей, кардинальное число связи.
- •Принципы выделения сущностей в предметной области. Выделение связей, рефлексивные связи (отношение сущности к самой себе), бинарные и n-арные связи.
- •Правила формирования диаграммы сущностей и связей с использованием различных нотаций.
- •Преобразование er диаграммы в схему реляционной базы данных.
- •Архитектура базы данных oracle. Табличные пространства. Системная область, область отката.
- •Запуск и останов системы управления базой данных ( startup, shutdown). Состояния базы данных (shutdown, nomount, mount, open). Перевод базы из одного состояния в другой.
- •Основные элементы базы данных. Таблицы, обзоры, последовательности, индексы, синонимы.
- •Создание, изменение и удаление элементов базы данных.
- •Тип данных date, особенности выполнения операций с данными типа дата.
- •Тип данных rowind.
- •Определение табличного пространства
- •Определение ограничений целостности unique, primary key, not null, foreign key, check.
- •Изменение таблиц, ограничение операций изменения таблицы. Добавление и изменение атрибутов таблицы.
- •Выделение привилегий при работе пользователя (grant). Использование ролей.
-
Выделение привилегий при работе пользователя (grant). Использование ролей.
Системные привилегии могут быть предоставлены сервером Oracle двум объектам системы: пользователям (User) и ролям (Role). Роль представляет собой поиме¬нованный набор привилегий.
Для предоставления привилегий пользователю в соответствии с требованиями стандарта используется команда GRANT. Пользователь, выдавший команду GRANT, должен об¬ладать системной привилегией GRANT ANY PRIVILEGE. Эта привилегия предоставляется ему явно или с параметром WITH ADMIN OPTION. Оператор определения системных привиле¬гий Oracle использует следующий синтаксис:
GRANT привилегия {[,привилегия ]...}
ТО [пользователь | PUBLIC] [,пользователь..] [WITH ADMIN OPTION]
Список основных привилегий приведен в таблицах.
Если при выделении привилегий указано ключевое слово ANY, то пользователю выделяются права доступа к объектам любой схемы БД, иначе привилегия распространяется только на схему базы данных пользователя.
Привилегия |
Описание |
CREATE [ANY] TABLE |
Создание таблиц. |
DROP [ANY] TABLE |
Удаление таблиц. |
ALTER [ANY] TABLE |
Изменение структуры таблиц. |
INSERT [ANY] TABLE |
Вставка строк в таблицу или представление. |
UPDATE [ANY] TABLE |
Модификация строк в таблице или представлении. |
DELETE [ANY] TABLE |
Удаление строк из таблицы или представления. |
SELECT [ANY] TABLE |
Выборка из таблицы, представления или снимка базы данных. |
CREATE [ANY] VIEW |
Создание представления. |
DROP [ANY] VIEW |
Удаление представления в схеме базы данных. |
Привилегия |
Описание |
CREATE [ANY] PROCEDURE |
Создание хранимой процедуры, функции или пакета. |
DROP [ANY] PROCEDURE |
Удаление храни¬мой процедуры, функции или пакета. |
EXECUTE [ANY] PROCEDURE |
Выполнение храни¬мой процедуры, функции или пакета |
ALTER [ANY] PROCEDURE |
Изменение храни¬мой процедуры, функции или пакета |
Системная привилегия |
Описание |
CREATE [ANY] TRIGGER |
Создание триггера таблицы. |
DROP [ANY] TRIGGER |
Удаление триггера таблицы. |
ALTER [ANY] TRIGGER |
Включение и отключение триггера или внесение изменений в триггер. |
Привилегия |
Описание |
CREATE USER |
Создание нового пользователя. |
DROP USER |
Удаление пользователей базы данных. |
ALTER USER |
Изменнение характеристик пользователя. |
Роль — это поименованный набор привилегий, который может быть предоставлен пользователю или другой роли.
Описание привилегий, характерных для той или иной роли, готовится заранее. При регистрации нового пользователя в системе администратор выполняет только предоставление пользователю привилегий конкретной роли.
Для работы с ролями в Oracle предусмотрены системные привилегии, приведенные в таблице 1.8.
Ппривилегия |
Описание |
CREATE ROLE |
Разрешает пользователю создавать роли в базе данных. |
GRANT ANY ROLE |
Разрешает пользователю предоставлять произвольную роль произвольному пользователю в базе данных. |
DROP ANY ROLE |
Разрешает пользователю уничтожать произвольную роль в базе данных. |
ALTER ANY ROLE |
Разрешает пользователю изменять привилегии произвольной роли в базе данных. |
-
Типы данных языка PL SQL. Формирование типа переменной на основе типа полей таблицы (%TYPE %ROWTYPE).
Кроме типов данных oracle 7, PLSQL поддерживает:
-
binary_integer, positive, natural
-
Boolean
-
Char, character, string
-
Number(dec, decimal, double, float, int)
-
Record – для создания пользовательских типов записей БД
-
Table
-
Varchar α
Tab%rowtype – используется для определения типа данных записи по типу данных столбцов таблицы, к имени которых (tab) приписан суффикс %
col%type – используется для определения типа данных столбца или переменной по типу данных другого столбца или переменной, к имени которых (col) приписан суффикс %
-
Массивы в PL SQL
Для определения массиванеобходимо описать тип данных в массиве, после чего объявить переменную создания типа:
Declare type array_type is table of SQL_type(size) Index by binary_integer;
Arr array_type;//объявление массива
-
Записи и их использование в PL SQL
Записи объявляются за два шага: сначала объявляется тип записи, а затем переменная этого типа.
TYPE имя_типа IS RECORD (имя_поля тип, имя_поля тип …) ;
имя_переменной имя_типа ;
-
Курсоры и их использование.
CURSOR имя IS тело запроса;
Под курсором понимают получаемый при выполнении запроса результирующий набор и связанный с ним указатель текущей записи.
В PL/SQL поддерживается 2 типа: явные и неявные. Явные объявляет разработчик, неявный – не требует объявления. Возвращает >=0 строк.
-
Структура блока программы PL SQL.
Процедура :
CREATE OR REPLACE PROCEDURE имя (список параметров) IS
Объявление локальных переменных ;
BEGIN
Тело ;
EXCEPTION
Обработка исключительных ситуаций
END;
Параметры
Имя [ IN | OUT | IN OUT ] тип [:= DEFAULT | значение]
Функции :
CREATE OR REPLACE FUNCTION имя (список параметров) RETURN тип IS
Объявление локальных переменных ;
BEGIN
Тело ;
EXCEPTION
Обработка исключительных ситуаций
END;
Параметры
Имя [ IN | OUT | IN OUT ] тип [:= DEFAULT | значение]
-
Секция описания данных, секция реализации, секция обработки исключительных ситуаций.
DECLARE
Операторы объявления
BEGIN
Операторы исполнения
EXCEPTION
Операторы обработки исключительных ситуаций
END;
«- -» комментарии
Переменные объявляются после ключевого слова DECLARE
ИМЯ [CONSTANT] ТИП [:=значение];
-
Стандартные и пользовательские исключительные ситуации.
Стандартные ИС:
NO_DATA_FOUND – не возвращает ни одной строки
TOO_MANY_ROWS – возвращает больше 1 строки (слишком много)
INVALID_NUMBER – неудачная попытка преобразования строки в число
NOT_LOGGED_ON – программа обращается к БД, не подключённой к ORACLE
ZERO_DIVIDE – попытка деления на 0
Пользовательские ИС – условия, которые разработчик считает ошибкой. Исключение должно быть объявлено в декларативной секции, требует явного вызова.
Name_exception EXCEPTION;
-
Оператор ветвления (IF)
IF условие THEN
Тело ;
ELSE
Тело ;
END IF;
IF условие THEN
Тело;
ELSEIF условие THEN
Тело ;
ELSE
Тело;
END IF;
-
Оператор циклов (WHILE)
While условие
Loop
Тело цикла;
End loop
-
Оператор перехода (GOTO) и метки в программе
Позволяет осуществлять безусловный переход к метке, имя которой должно быть уникальным внутри программы или блока.
Переход GOTO метка
Метка <<метка >>
-
Оператор присваивания
:= оператор присваивания
Пример: a NUMBER:=3
Присвоение значения может происходить немедленно после того, как объявлен тип переменной. Также присвоение может происходить в разделе выполняемого кода.
-
Организация циклов в PL SQL
LOOP Тело END LOOP; |
When Условие LOOP Тело END LOOP; |
FOR счетчик IN [REVERSE] От .. До LOOP Тело END LOOP; |
Выход из цикла EXIT или EXIT WHEN условие.
Пример:
Declare
i number :=1;
begin
loop
insert into table values(i, i+1);
i:=i+1;
exit when i>5;
end loop;
end;
run;
-
Возбуждение исключительных ситуаций.
Стандартные ИС возбуждаются автоматически (неявно) системой исполнения. Пользовательские ИС возбуждаются явно посредством команды Raise, которая также может вызывать предопределённые исключения.
После возбуждения исключения программа прекращает нормальную работу, переходя в блок обработки исключения, а затем возвращается в окружающую среду.
Raise _application_error()
-
Процедуры и функции, их объявление и использование при программировании программ.
Процедура :
CREATE OR REPLACE PROCEDURE имя (список параметров) IS
Объявление локальных переменных ;
BEGIN
Тело ;
EXCEPTION
Обработка исключительных ситуаций
END;
Параметры
Имя [ IN | OUT | IN OUT ] тип [:= DEFAULT | значение]
Функции :
CREATE OR REPLACE FUNCTION имя (список параметров) RETURN тип IS
Объявление локальных переменных ;
BEGIN
Тело ;
EXCEPTION
Обработка исключительных ситуаций
END;
Параметры
Имя [ IN | OUT | IN OUT ] тип [:= DEFAULT | значение]
-
Определение входных и выходных параметров.
Параметры
Имя [ IN | OUT | IN OUT ] тип [:= DEFAULT | значение]
Оператор возврата RETURN имя или RETURN выражение
-
Создание пакета процедур и функций.
Объявление спецификаций:
Create [or replace] package [имя_схемы] имя_пакета
AS
Объявление подпрограмм, констант, переменных
END[имя_пакета];
Пример:
Create or replace package asd AS
X NUMBER(5);
Function f(f1 number) return number;
Procedure aaa;
END asd;
Объявление тела пакета
Create [or replace] package body имя_пакета
AS
Тело пакета
END;
Константы и переменные, описанные в спецификации, являются глобальными и в теле пакета повторно не объявляются.
-
Триггеры и использование триггеров для работы с базой данных. Триггеры на вставку, удаление и изменение записей.
CREATE [OR REPLACE] TRIGGER [Имя_схемы.]имя { BEFORE | AFTER}
{INSERT | DELETE | UPDATE [OF Имя_столбца [,Имя столбца …]]}
[OR{INSERT | DELETE | UPDATE [OF Имя_столбца [,Имя столбца …]]}...]
ON [Имя_схемы.]{Имя_таблицы | представление}
[ REFERENCING new | old AS имя ]
[FOR EACH ROW] [ WHEN условие]
DECLARE
Описание переменных, констант и курсоров
BEGIN
Тело триггера
END;
OR REPLACE – замещение старого текста триггера.
BEFORE или AFTER – на выполнение кода триггера до или после операторов манипулирования данными.
INSERT, DELETE или UPDATE действие над таблицей. Для оператора UPDATE могут быть указаны столбцы, изменение которых запускает триггер.
ON задает имя таблицы или пред¬ставления, ассоциированного с триггером.
REFERENCING переопределяет имена new old в теле триггера.
FOR EACH ROW опре¬деляет триггер как строчный.
WHEN задает допол¬нительное условие на значение полей таблицы.
-
Триггеры, вызываемые перед операцией над таблицей и вызываемые после операции.
Триггеры могут вызывать перед совершением операции и после него. Это свойство описывается при объявлении в заголовке триггера с помощью слов BEFORE или AFTER.
-
Доступ к новым данным при вставке записи (NEW) и доступ к старым данным при изменении или удалении записей (OLD).
OLD для обращения с старым значениям и NEW для новых.
Триггеры INSERT имеют доступ лишь к новым значениям - NEW.
Триггеры UPDATE имеют доступ к новым и старым – NEW и к OLD.
Триггеры DELETE имеют доступ лишь к старым значениям – OLD.
Например, оператор :
IF :new.pole1 >100 THEN …
проверяет новое значение, которое вставляется или на которое заменяется старое значение.
Если поле таблицы имеет имя OLD или NEW может возникнуть неоднозначность доступа. Для решения этой проблемы может использоваться опция REFERENCING. Для old и new после ключевого слова AS задается новое имя для использования вместо old и new при обращении к старым и новым значениям. Доступ к полям таблицы остается через использование действительных имен.