- •Иерархия элементов реляционной модели и способов их представления на уровне хранения
- •Предложение select
- •Предложения модификации Предложение delete имеет формат
- •Into {базовая таблица | представление} [(столбец [,столбец] ...)]
- •Values ({константа | переменная} [,{константа | переменная}] ...);
- •Into {базовая таблица | представление} [(столбец [,столбец] ...)]
- •Системный каталог
- •Управление доступом (предложения grant / revoke )
- •Модификация структуры таблицы (атрибутов):
- •Предложения модификации данных средствами sql Предложение delete имеет формат
- •Into {базовая таблица | представление} [(столбец [,столбец] ...)]
- •Values ({константа | переменная} [,{константа | переменная}] ...);
- •Into {базовая таблица | представление} [(столбец [,столбец] ...)]
- •Ddl: Операторы создания/удаления индексов.
- •Особенности обновления представлений
- •Ограничения (constraints) логической целостности
- •Целостность сущностей.
- •Объявление первичного ключа :
- •Целостность ссылок
- •Объявление внешнего ключа:
- •Триггеры.
- •Любое клиентское приложение может быть подключено к бд одним из двух способов:
- •С использованием специализированной библиотеки доступа (db-dll);
- •С использованием odbc-драйвера (см. Далее).
- •Into переменная [[indicator] индикаторная_переменная]
- •Into переменная [[indicator] индикаторная_переменная]
- •1. «Тупой» : объявление курсора в режиме «только чтение»
- •2. «Продвинутый» : объявление «нечувствительного» курсора (для нашей таблицы s ):
- •Безопасность и управление доступом средствами sql.
- •Понятие транзакций. Уровни изоляции. Проблема отката (rollback) результатов выполнения транзакций.
- •If (обнаружена_ошибка) rollback;
- •If (обнаружена_ошибка) rollback;
- •Структура защищенного хранилища документов «dokyment» Физическая организация нулевого служебного трека нд типа dokyment
- •Физическая организация рабочего трека нд типа dokyment
- •Физическая организация первого трека фд dokyment
- •Физическая организация файлов данных многосуточных архивов arxiv
- •Метод многоуровневого динамического хранения данных .
- •Иерархия объектов системы хранения
- •Приемы сегментирования записей переменной длины Пример физической организации блока, содержащего несегментированные записи на дорожке (треке) бд
- •Пример физической организации блока, содержащего сегментированные записи на дорожке (треке) бд
- •Описание структуры индексов (первичных)
- •Структуры вторичных индексов (прямые указатели на запись по каждому ключу)
- •(Последовательный доступ)
- •(Произвольный доступ)
- •(Последовательно- произвольный доступ)
- •1.3. Операции поиска / вставки / удаления записей в блоках k-d-дерева
- •Клиентская библиотека (sql-интерфейс к odbc-источнику данных)
- •I. Организация сеанса
- •II. Прием и компиляция запроса:
- •Агент_субд (локальный процесс – мультиплексирование обслуживания локальных запросов к удаленному sql-источнику данных)
- •Клиент_субд (локальный процесс – мультиплексирование приема и организации выполнения запросов к локальному sql-источнику данных)
- •Сервер_субд (операции с локальными бд)
- •2.1 Без оптимизации 2.2 Оптимизация плана
- •Индексирование элементов данных. Проблема выбора индексов.
- •1.1. Особенности логической организации (временнОй модели данных)
- •Темпоральные свойства данных, учитываемые при организации хранения
- •1.2. Особенности физической организации
- •1.3. Особенности выполнения запросов с использованием атрибута-времени
- •1.3.1. Выборка данных
- •1.3.2. Модификации данных
- •2.1. Первичные и вторичные индексы в темпоральных бд
- •2.2. Моделирование и анализ данных. Парадоксы времени.
- •Распределение бд в пространственно-временном континууме.
- •1. Использование Proxy-шлюза
- •2. Использование Proxy-шлюзования и мсэ
Into переменная [[indicator] индикаторная_переменная]
[,переменная [[INDICATOR] индикаторная_переменная]] ...
FROM базовая_таблица | представление [псевдоним]
[,базовая_таблица | представление [псевдоним]] ...
[WHERE фраза]
[GROUP BY фраза [HAVING фраза]];
Пример синтаксиса выражения явного объявления курсора:
DECLARE <имя_курсора> CURSOR
FOR <подзапрос>
OPEN <имя_курсора>
Описанные с помощью DECLARE CURSOR множества используются рядом предложений SQL для удаления отмеченных строк (DELETE), их модификации (UPDATE) или присвоения значений перечисленных в SELECT столбцов переменным, список которых указывается в предложении FETCH (вызвать). Однако перед выполнением этих команд необходимо активизировать курсор, который в этот момент не должен быть открыт. Для этого используется предложение OPEN (OPEN имя_курсора).
Предложение FETCH используется для выборки той записи активного множества, на которую указывает курсор, для присвоения значений столбцов этой записи переменным, перечисленным во фразе INTO, и для перемещения курсора на следующую строку активного множества. При перемещении за последнюю строку переменная SQLCODE примет значение +100.
FETCH имя_курсора
Into переменная [[indicator] индикаторная_переменная]
{,переменная [[INDICATOR] индикаторная_переменная]} ...
Команды завершения работы с курсором:
Дезактивация курсора : CLOSE <имя_курсора>
Уничтожение курсора : DROP CURSOR <имя_курсора>.
Проблемы модификации данных в курсорах
Реализация
Способы реализации поддержки статических и динамических
курсоров
1. «Тупой» : объявление курсора в режиме «только чтение»
DECLARE Cur1 CURSOR FOR READ ONLY
2. «Продвинутый» : объявление «нечувствительного» курсора (для нашей таблицы s ):
DECLARE Cur1 INSENSITIVE CURSOR
FOR SELECT * FROM S;
Хранимые процедуры.
Практический опыт создания приложений обработки данных показывает, что ряд операций над данными, реализующих общую для всех пользователей логику и не связанных с пользовательским интерфейсом, целесообразно вынести на сервер. Однако, для написания процедур, реализующих эти операции стандартных возможностей SQL не достаточно, поскольку здесь необходимы операторы обработки ветвлений, циклов и т.д. Поэтому многие поставщики СУБД предлагают собственные процедурные расширения SQL (PL/SQL компании Oracle и т.д.). Эти расширения содержат логические операторы (IF ... THEN ... ELSE), операторы перехода по условию (SWITCH ... CASE ...), операторы циклов (FOR, WHILE, UNTIL) и операторы предачи управления в процедуры (CALL, RETURN). С помощью этих средств создаются функциональные модули, которые хранятся на сервере вместе с базой данных. Обычно такие модули называют хранимые процедуры. Они могут быть вызваны с передачей параметров любым пользователем, имеющим на то соответствующие права. В некоторых системах хранимые процедуры могут быть реализованы и в виде внешних по отношению к СУБД модулей на языках общего назначения, таких как C или Pascal.
Пример для СУБД PostgreSQL:
CREATE FUNCTION
<имя_функции> ([<тип_параметра1>,<тип_параметра2>,...])
RETURNS <возвращаемые_типы>
AS [ <SQL_оператор> | <имя_объектного_модуля> ]
LANGUAGE 'plpgsql' | 'C' | 'internal'
Вызов созданной функции осуществляется из оператора SELECT (так же, как вызываются функции агрегирования)
SELECT <имя_функции> ([<параметр1>,<параметр2>,...])
Безопасность и авторизация пользователей в SQL. Понятие транзакций. Уровни изоляции. Проблема отката (rollback) результатов выполнения транзакций.