Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SUBD_shpory.docx
Скачиваний:
5
Добавлен:
25.09.2019
Размер:
724 Кб
Скачать
☆
  1. Временные таблицы: назначение, принцип применения, необходимые привилегии, операторы создания, опции on commit delete rows/ on commit preserve rows.

Временные таблицы глобальны: созданную одним пользователем таблицу может использовать другой пользователь (если ему назначены соответствующие привилегии). Привилегии раздает владелец (тот, кто выдал CREATE).

Привилегии для создания временной таблицы: CREATE TABLE.

Временные таблицы – это шаблон, хранящийся в словаре базы данных: для временной таблицы выделяется временный сегмент в (по умолчанию) TEMPORARY-табличном пространстве и для каждого пользователя свой. При желании, можно разместить временную таблицу в заданном табличном пространстве. Каждый пользователь видит только свои данные (свой сегмент данных).

Временные таблицы - статичны: временные таблицы создаются (CREATE) один раз и существуют, пока их не удалят (DROP). В этом смысле они похожи на обыкновенные таблицы. Создавать их динамически – затратная для Oracle операция. В Oracle другая стратегия применения временных таблиц, нежели в MS SQL-Server. DROP не получится, если таблица в этот момент используется другим пользователем.

Временные таблицы бывают: ON COMMIT PRESERVE ROWS – на время сеанса (сессии) и ON COMMIT DELETE ROWS – на время транзакции. В начале сеанса временная таблица всегда пуста.

Временные таблицы ON COMMIT PRESERVE ROWS: данные существуют только на время сеанса, возможны все DML-операторы, TCL-операторы.

Временные таблицы ON COMMIT DELETE ROWS: данные существуют только на время транзакции, возможны все DML-операторы, после выполнения COMMIT или ROLLBACK таблица становится пустой.

Для временных таблиц можно создавать триггеры.

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

Для временных таблиц нельзя: не могут быть индексно-организованными, нельзя секционировать, размещать в кластере, нельзя сгенерировать статистическую информацию.

Применение индексных таблиц: выбор ключей (например, для организации списка просмотра) и SELECT JOIN с основной базой данных.

  1. Порядок создания инфраструктуры базы данных Oracle.

  • создание табличных пространств;

  • создание ролей;

  • назначение ролям системных привилегий;

  • создание профилей безопасности пользователей;

  • создание пользователей (владелец и др. пользователи);

  • назначение пользователям ролей;

  • создание объектов базы данных (таблиц, индексов, представлений, функций, процедур, пакетов,...);

  • назначение ролям объектных привилегий.

  1. PL/SQL: общая характеристика, основные возможности, программные структуры (анонимные блоки, процедуры, функции, пакеты), управление уровнем предупреждений компилятора, представления словаря со спецсимволами и ключевыми словами. Типы данных PL/SQL. Встроенные функции. Операторы (IF, FOR, LOOP, WHILE, CASE,...). Встроенные функции SQLERRM, SQLCODE.

Характеристика языка PL/SQL:

  • процедурное расширение языка SQL;

  • содержит элементы объектно-ориентированного программирования;

  • блоки, процедуры, функции, пакеты, объектные типы;

  • интегрирован с базой данных Oracle;

  • интерпретация (режим по умолчанию):

  • компиляция (промежуточный код на C и конечный объектный код процессора) дает выигрыш в скорости выполнения до 30%;

  • среда выполнения: SQL*Plus, другие пакеты, сервер.

Предупреждения компилятора:

- ALL (все);

- PERFOMANCE (производительность);

- INFORMATIONAL (информационные);

- SEVERE (логика программы);

- Specific error (ошибка)

Типы данных PL/SQL (не путать с типами данных базы данных):

  • скалярные (Scalar);

  • ссылочные (Reference);

  • составные (Composite);

  • большие объекты (LOB).

Скалярные типы данных можно разбить на семейства:

  • символ/строка;

  • число;

  • булев;

  • дата/время.

CHAR(n byte|char)

n <= 2000

VARCHAR2(n)

n <= 4000 bytes

NUMBER(n,s)

n <= 38, s = [-84,127]

LONG

символы до 2GB

RAW(n)

бинарные данные n <= 2000 byte

ROWID

64 byte уникальный адрес строки в таблице, псевдо-столбец

NCHAR(n)

n <= 2000 bytes

NVARCHAR2(n)

n <= 4000 bytes

DATE

01.01.4712 до н.э – 31.12.9999

BINARY_FLOAT

32bit

BINARY_DOUBLE

64bit

TIMESTAMP(n)

дата и время n = [0,9] – точность секунд

TIMESTAMP (n)

WITH TIME ZONE

TIMESTAMP+значение смещение часового пояса

TIMESTAMP WITH(n) LOCAL TIME ZONE

TIMESTAMP нормализованный для локального времени

INTERVAL YEAR(n) TO MOUNT

n = [0,9] период времени в годах и месяцах

INTERVAL DAY(n)

TO SECOND(m)

n = [0,9], m =[0,9] период времени в днях, минутах и секундах

LONG RAW

бинарные данные до 2GB

UROWID(n)

n <= 4000, логический адрес строки в индексно-организованной таблице

CLOB

большой символьный объект до 4GB

NLOB

CLOB для многобайтных символов

BLOB

большой двоичный объект до 4GB

BFILE

указатель на двоичный файл операционной системы

IF-THEN; IF-THEN-ELSE; IF-THEN-ELSEIF; CASE WHEN; LOOP EXIT WHEN; FOR i in от..до LOOP; WHILE(условие)LOOP

SQLERRM – получить сообщение ошибки

SQLCODE – получить код ошибки

  1. PL/SQL: курсоры (неявные и явные), атрибуты курсоров, объявление и схема работы с явным курсором, явные курсоры с параметрами, операторы INSERT, DELETE, UPDATE в PL/SQL, курсорные переменные и их применение, курсорные подзапросы, параметры Oracle, связанные с курсорами, конструкция WHERE CURRENT OF, псевдостолбцы ROWID, ROWNUM .

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

Явные курсоры – объявляем в секции declare cursor… for select …

Курсор Oracle – указатель на область в PGA (контекстная область) в которой хранится: 1)строки запроса, 2)число строк, 2)указатель на разобранный запрос в общем пуле.

Открытие курсора – создание контекстной области PGA (создается моментальный снимок (snapshot) данных запроса).

WHERE CURRENT OF – определяет только что считанную строку.

ROWID-двухбайтовая величина, которая соответствует физическому положению любой строки БД.

ROWNUM-используется для ограничения кол-ва выводимых записей

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]