- •1. Определение информации. Основные проблемы, возникающие при хранении информации.
- •2. Отличительные особенности субд как программного продукта. Понятие экземпляра и базы данных.
- •3. Категории пользователей субд. Функциональные требования различных категорий пользователей к субд.
- •4. История развития субд. Особенности не реляционных моделей данных.
- •5. Общая характеристика моделей данных. Основные свойства. Понятие атрибутов, доменов.
- •6. Отношения модели данных. Понятия сущности и связи.
- •7. Ограничение целостности модели данных. Трехуровневая архитектура ansi/sparc.
- •8. Структурные компоненты модели данных в нотации idef1x. Понятия сущность, связь. Типы сущностей и связей.
- •9. Реляционная модель данных. Базовые структурные компоненты реляционной модели данных. Основные свойства.
- •10. Свойства реляционной модели данных. Представление сущности.
- •11. Свойства реляционной модели данных. Представление связи.
- •12. Требования целостности в реляционной модели данных.
- •13. Язык определения данных в реляционной модели данных. Основные возможности. Примеры.
- •14. Типы ограничений целостности, основные типы данных, основные операции реляционной модели данных.
- •15. Проектирование реляционных баз данных. Цели проектирования, основные этапы.
- •16. Проектирование реляционных баз данных. Проблемы обновления, удаления, добавления данных. Типы ограничений целостности.
- •17. Функциональная зависимость. Нормализация отношений. Концепция нормальных форм.
- •18. Первая и вторая нормальные форма. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •19. Третья нормальная форма. Нормальная форма Бойса-Кодда. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •20. Понятие многозначной зависимости. Примеры.
- •21. Четвертая и пятая нормальные формы. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •22. Основные свойства sql, как языка программирования. Отличие от других языков программирования.
- •23. Основы построения sql- запросов. Источники данных запроса. Условия выборки кортежей. Примеры.
- •24. Левые, правые и полные соединения. Функции для работы с null значениями. Выборка уникальных записей. Примеры.
- •25. Использование подзапросов. Типы подзапросов. Примеры.
- •26. Коррелированные подзапросы. Особенности использования in, not in,exists, not exists.
- •27. Теоретико-множественные операции в sql-запросах. Примеры.
- •28. Агрегирующие функции. Группировка кортежей. Примеры.
- •29. Представления. Особенности использования. Примеры.
- •30. Триггеры в Transact sql. Пример реализации триггера.
- •31. Курсоры. Основные функции. Правила применения. Примеры.
- •32. Внутренние структуры данных. Двухуровневая система доступа к данным. Отношения каталогов.
- •33. Методы доступа к данным. Бинарные деревья.
- •34. Методы доступа к данным. Многоходовые деревья.
- •35. Методы доступа к данным. Сбалансированные деревья. Структура, правила следования. Основные свойства.
- •36. Операция вставки элемента в в-дерево. Проблема переполнения, методы решения. Пример.
- •37. Операция удаления элемента из в-дерева. Проблема антипереполнения. Методы решения. Пример
- •42. Индекс на основе битовых карт. Основные свойства.
- •43. Индекс на основе битовых карт. Структура листового блока. Операция добавления элемента.
- •44. Индекс на основе битовых карт. Операция обновления элемента. Блокировка записей.
- •45. Методы доступа к данным. Основные операции выполнения sql-выражения.
- •46. Методы доступа к данным. Типы соединений таблиц.
31. Курсоры. Основные функции. Правила применения. Примеры.
Курсор позволяет программе на базовом языке построчно обрабатывать результаты выполнения запроса. С точки зрения программы курсор представляет собой указатель на определенную строку в результирующем наборе данных. Курсор можно передвигать с одной строки на другую и после обработки предыдущей строки переходить к следующей. Прежде чем курсор можно будет использовать, его следует объявить и открыть, а после завершения работы с ним — закрыть для освобождения занимаемых им ресурсов, если он больше не потребуется. После того как курсор открыт, строки результирующего набора данных запроса могут выбираться из него по одной с помощью оператора FETCH, а не SELECT.
Функции выполняемые курсором:
• Обрабатывать последовательно, строка за строкой, наборы строк возвращаемые запросом.
• Контроль текущей обрабатываемой строки запроса, на основе которого сформирован курсор.
• Возможность программисту управлять курсором в процедурах или функциях
Управление курсором:
DECLARE – Объявление курсора, создание именованной SQL-области.
OPEN – Выполнение запроса. Установка указателя активного набора на первую строку.
FETCH – Считывание текущей строки из курсора в переменную(ые).
CLOSE – закрыть курсор, освободить ресурсы выделенные курсору.
Оператор DECLARE CURSOR описывает конкретный оператор SELECT, который должен быть выполнен, и связывает имя курсора cursorName с запросом select statement. Формат: DECLARE cursorName CURSOR FOR select Statement
Оператор OPEN вызывает запрос на выполнение, в результате чего определяются все строки, соответствующие условию поиска; после этого курсор устанавливается перед первой строкой результирующей таблицы. Если оператор SELECT содержит ошибку, например, в нем использовано имя реально не существующего столбца, то в этот момент активизируется ошибка. Формат: OPEN cursorName
Оператор FETCH предназначен для выборки очередной строки из активного набора. Формат: FETCH [FIRST |NEXT | LAST | ...] FROM <имя_курсора> INTO <имя_переменной>, <имя_переменной>, ....
<имя_курсора> - имя открытого курсора.
FIRST/NEXT – возвращает первую/последнюю строку и делает её текущей
NEXT - Возвращает строку результата сразу же за текущей строкой и перемещает указатель текущей строки на возвращенную строку. Если инструкция FETCH NEXT выполняет первую выборку в отношении курсора, она возвращает первую строку в результирующем наборе. NEXT является параметром по умолчанию выборки из курсора.
<имя_переменной> - позволяет поместить данные из столбцов выборки в локальные переменные. Каждая переменная из списка, слева направо, связывается с соответствующим столбцом в результирующем наборе курсора. Тип данных каждой переменной должен соответствовать типу данных соответствующего столбца результирующего набора, или должна обеспечиваться поддержка неявного преобразования в тип данных этого столбца. Количество переменных должно совпадать с количеством столбцов в списке выбора курсора.
Функция @@FETCH_STATUS возвращает состояние последней инструкции FETCH. Эти сведения о состоянии должны использоваться для определения действительности данных, возвращаемых инструкцией FETCH перед попыткой выполнения любой операции над этими данными. Первоначально значение не определено. Значения:
=0 - инструкция FETCH выполнена успешно.
= -1 - выполнение инструкции FETCH завершилось неудачно или строка оказалась вне пределов результирующего набора.
= -2 - выбранная строка отсутствует.
Оператор CLOSE закрывает открытый курсор, высвобождая текущий результирующий набор. Инструкция CLOSE оставляет структуры данных доступными для повторного открытия, но данные без повторного открытия недоступны. Формат: CLOSE cursorName. Здесь параметр cursorName представляет собой имя курсора, который открыт в настоящее время.
Инструкция DEALLOCATE удаляет только ссылку именованной переменной на курсор. Если это последнее имя или переменная, ссылающаяся на курсор, сам курсор удаляется и освобождаются все используемые им ресурсы. После выполнения инструкции DEALLOCATE cursorName эту переменную можно связать с другим курсором, используя инструкцию SET. Формат: DEALLOCATE cursorName.
Пример. Открывается курсор и выбираются все его строки:
DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName
FROM AdventureWorks2012.HumanResources.vEmployee
WHERE LastName like 'B%';
OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor;
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Employee_Cursor
END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;