- •1.Основные понятия и определения курса. Традиционные файловые системы.
- •5 История развития субд Oracle.
- •6 Общие сведения об инструкциях sql. Правила именования таблиц и столбцов
- •7 Общие сведения о dml.
- •8 Общий синтаксис инструкции select
- •9 Предложения select и from. Предикаты и вычисляемые столбцы (пример).
- •10 Предложение where и классификация условий отбора (привести примеры).
- •11 Составные условия отбора. Влияние значений null на результат отбора.
- •12 Многотабличные запросы и их особенности (привести пример).
- •13 Операторы комбинирования результирующих таблиц в многотабличных запросах (привести примеры).
- •14 Предложение group by. Статистические (агрегативные) функции в sql (примеры).
- •15 Условия отбора групп (предложение having)
- •16 Сортировка результатов запроса (предложение order by).
- •17 Подзапросы: типы, примеры, правила и ограничения, ключевые слова any, all, exist, not exist
- •18 Добавление данных (инструкции insert, merge).
- •19 Модификация и удаление данных (инструкции update, merge и delete).
- •20 Общие сведения о ddl.
- •21 Типы данных sql.
- •22 Создание таблиц (инструкция create table).
- •23 Изменение определения и удаление таблицы (инструкции alter ,drop table).
- •24 Создание псевдонимов и индексов таблиц (инструкции create/drop alias, create/drop index)
- •25 Создание представлений (инструкция create view). Преимущества и недостатки использования, основные виды
- •26 Проблемы обновления и удаление представлений.
- •27 Принципы защиты данных в sql: аутентификация пользователей, защищаемые объекты, использование привилегий и другие возможности обеспечения безопасности
- •28 Аутентификация. Создание и изменение пользователей. Аутентификация пользователей
- •29 Профили. Создание, изменение, удаление.
- •30 Привилегии. Системные привилегии.
- •31 Привилегии доступа к объектам схемы. Правила предоставления привилегий
- •32 Предоставление и отмена привилегий (инструкция grant и revoke).
- •33 Работа с привилегиями при помощи ролей. Системные роли, определение, изменение, удаление ролей
- •34 Аудит. Типы и применение аудита.
- •Типы аудита. В диспетчере авторизации можно использовать два вида аудита: аудит времени выполнения и аудит изменения хранилища данных авторизации. Аудит времени выполнения
- •Аудит изменений хранилища данных авторизации
- •35 Условия целостности данных
- •36 Правила добавления и удаления. Проблемы ссылочных циклов
- •37 Понятие транзакций. Инструкции обработки транзакций (commit и rollback)
- •38 Модель транзакции в стандарте ansi/iso
- •39 Журнал транзакций. Проблемы обработки параллельных транзакций.
- •40 Блокировки транзакций: уровни и виды, тупиковые ситуации.
- •41 Преимущества pl/sql и общие сведения о структуре pl/sql программ
- •42 Классификация блоков pl/sql.
- •43 Управление блоками в sql*Plus.
- •44 Лексические единицы pl/sql
- •45 Синтаксис объявления переменных, инициализация.
- •46 Скалярные типы pl/sql.
- •48 Коллекции (составные типы pl/sql).
- •Методы, применяемые при работе с коллекциями
- •Инициализация коллекций
- •50 Массовое связывание.
- •51 Преобразование типов данных. Область действия и область видимости переменных. Выражения и операции.
- •52 Управляющие структуры pl/sql. Область действия счетчика цикла, ограничения безусловных переходов условное управление
- •Итерационное управление
- •53 Понятие транзакции и виды блокировок Oracle
- •54 Операторы управления транзакциями в Oracle (commit, rollback, savepoint, set transaction, lock table).
- •55 Многоверсионная модель согласованности Oracle.
- •56 Автономные транзакции. Понятие прагмы.
- •57 Записи pl/sql. Использование %rowtype
- •58 Курсорные типы, переменные и выражения. Виды и назначение курсоров.
- •59 Обработка явных и неявных курсоров.
- •61 Динамический sql: использование пакета dbms_sql.
- •62 Алгоритма обработки данных в dbms_sql
- •63 Встроенный динамический sql (nds). (операторы execute immediate, open … for).
- •65 Классификация и определение программных единиц. Общие ключевые слова.
- •66 Создание и использование процедур
- •Вызов процедур и функций
- •67 Создание и использование (вызов) функций.
- •Вызов процедур и функций
- •68 Структура и определение пакета.
- •69 Триггеры бд: виды и создание
- •70 Последовательность событий и предикаты триггеров.
- •71 Пакет dbms_output.
- •72 Пакет utl_file(файловый ввод/вывод)
- •Безопасность
- •73 Пакет dbms_pipe: посылка и получение сообщений
- •74 Пакет dbms_pipe: создание программных каналов и управление ими.
- •75 Архитектура odbc и коды возврата
- •76 Основной алгоритм программ odbc. Инициализация и завершение.
- •77 Выполнение операторов: функции управления каталогом.
- •78 Непосредственное и подготавливаемое выполнение.
- •79 Выборка результатов.
- •80 Подробный алгоритм использования odbc в прикладных программах.
78 Непосредственное и подготавливаемое выполнение.
непосредственное
Непосредственное выполнение целесообразно использовать в следующих случаях:
• SQL– операторы, которые должны быть выполнены, выполняются только один раз;
• не требуется информация о результирующем множестве до выполнения оператора.
Непосредственное выполнение реализуется с помощью функции SQLExecDirect()и представляет наиболее быстрый способ запускаSQL– оператора при одноразовом выполнении.
Синтаксис функции имеет вид:
RETCODESQLExecDirect(hstmt,szSqlStr,sbSqlStr)
подготавливаемое выполнение
Данный способ выполнения оператора предпочтителен в случае, если оператор предполагается выполнять несколько раз и требуется предварительная информация о результирующем множестве. Для подготавливаемого выполнения необходимы две функции: SQLPrepare()иSQLExecute().
SQLPrepare() подготавливаетSQL– строку для выполнения. Синтаксис её ничем не отличается от синтаксисаSQLExecDirect(). СинтаксисSQLExecute() следующий:
RETCODESQLExecute(hsmt)
где HSMT– предварительно назначенный идентификатор оператора.
SQLPrepare() отличается отSQLExecDirect() тем, что при вызовеSQLPrepare() оператор на самом деле не выполняется. Вместо этого определяется путь доступа к данным и информация о результирующем множестве становится доступной для использования. Так функцииSQLNumResultCols()иSQLRowCount()при вызове возвращают количество столбцов и строк результирующего множества. Так как план выполнения оператора после его подготовки известен, то его выполнение может выполняться несколько быстрее, чем при использованииSQLExecDirect(). Кроме того, каждый вызовSQLExecute() передает базе данных только идентификатор, а не строку запроса, что может несколько снизить сетевой трафик.
79 Выборка результатов.
Результат может быть либо результирующим множеством, либо числом строк, на которые воздействовал оператор.
Результирующее множество представляет собой набор строк и столбцов, которые были определены SQL– оператором или функцией каталога.
После создания, результирующее множество, тем не менее, располагается на сервере базы данных и требует извлечения прикладной программой клиента. Продвижение по строкам результирующего множества возможно посредством курсора.
Курсор автоматически генерируется для каждого результирующего множества. Непосредственно после создания результирующего множества, курсор устанавливается перед первой строкой данных. Для продвижения курсора следует вызывать функцию SQLFetch(). Данная функция продвигает курсор вперед на одну строку до тех пор, пока он не будет установлен за последней строкой результирующего множества.
Для определения числа столбцов, которые были возвращены с помощью подготовленного или выполненного оператора, прикладная программа выполняет функцию SQLNumResultCols(), которая имеет следующий синтаксис:
RETCODE SQLNumResultCols (hstmt, pccol)
Для возвращения числа строк, на которые воздействовал SQL– оператор, прикладная программа вызывает функциюSQLRowCount(). Данная функция возвращает число строк на которые воздействовал операторupdate,insertилиdeleteи имеет следующий синтаксис:
RETCODESQLRowCount(hstmt,pcrow)
В ODBCсуществует две функции базового уровня для выборки результатов:SQLBindCol()иSQLFetch().ФункцияSQLBindCol() определяет область хранения данных результирующего множества, аSQLFetch() осуществляет выборку данных в области хранения. Алгоритм программы предполагает выполнение следующих шагов:
1. Вызов SQLBindCol() один раз для каждого столбца, который должен быть возвращен из результирующего множества,
2. Вызов SQLFetch() для перемещения курсора на следующую строку и возврата данных из связанных столбцов,
3. Повторение шага 2 до тех пор пока SQLFetch() не возвратитSQL_NO_DATA_FOUND. Это указывает на то, что был достигнут конец результирующего множества.
Функция SQLFetch() извлекает строку данных из результирующего множества для выполненногоSQL– оператора. Драйвер возвращает данные для всех столбцов, которые были связаны для предварительного хранения данных с помощью функцииSQLBindCol(). Синтаксис функцииSQLFetch():
RETCODESQLFetch(hstmt)
Здесь HSTMT– идентификатор выполненного оператора.
Функция SQLBindCol() назначает область хранения в памяти и тип данных для столбца результирующего множества. Она определяет:
• Буфер хранения для получения содержимого столбца данных в результирующем множестве,
• Длину указанного буфера хранения,
• Область памяти для хранения длины столбца выборки
• Преобразование типа данных.
Синтаксис данной функции имеет следующий вид:
RETCODE SQLBindCol (hstmt, icol, fcType, rgbValue, cbValueMax,pcbValue)