- •Н.И. Коваленко
- •Коваленко н.И., Банчук г.Г.
- •Коваленко Надежда Ивановна
- •Тема I. Общие сведения о ms sql Server 2000
- •1. Базы данных типа клиент/сервер
- •Система типа клиент/сервер
- •2. История sql Server
- •Основные количественные показатели системы sql – сервер
- •3. Обзор sql Server 2000
- •4. Стандартные объекты sqlServer
- •ТемаIi. Работа с ms sqlServer2000 и его компонентами
- •1. Запуск, приостановка и завершение работы sqlServer
- •2. SqlServerEnterpriseManager
- •3. Программа sqlServerQueryAnalyzer
- •Панель инструментов утилиты Query Analyzer
- •4. Обслуживание баз данных
- •Файлы операционной системы, используемые sql Server 2000:
- •Структура базы данных
- •5. УстановкаMicrosoftSqlServer2000
- •Ограничения инсталляции sql-сервера
- •ТемаIii. Работа с базой данных создание и использование индексов и ключей
- •1. Базы данных и их свойства
- •Описание ролей, используемых для доступа к базе данных и серверу баз данных
- •Дополнительные опции настройки базы данных
- •Настройка параметров доступа к базе данных
- •2. Таблицы базы данных.
- •3. Типы данных, используемые в sql-сервере
- •Текстовые типы данных
- •Типы данных даты и времени
- •Типы данных для хранения больших объемов информации
- •Типы данных специального назначения:
- •4. Основные операции с базами данных
- •5. Восстановление бд (администрированиеSqlServer2000)
- •6. Создание и использование индексов и ключей в системе sql Server.
- •7. Использование ограничений
- •8. Использование диаграмм для разработки структуры базы данных
- •9. Создание представлений (видов)
- •ТемаIv. Правила и создание значения
- •1. Инструменты контроля целостности данных
- •2. Создание правил и стандартных значений
- •ТемаV. Триггеры в системеSql–сервер
- •1. Понятие триггера. Типы триггеров
- •2. Создание триггеров
- •3. Использование триггеров. Виды триггеров
- •ТемаVi. Оптимизация запросов и основы sql
- •1. Оптимизация запросов
- •2. Основные операторы sql в sql Server 2000
- •3. Объединение таблиц в операторе select
- •From titles
- •4. Использование директив group by иHaving
- •5. Оператор insert
- •6. ОператорUpdate
- •7. ОператорDelete
- •8. ОператорCreatetable
- •ТемаVii. Создание и работа с представлениями
- •1. Основные сведения о представлениях
- •2. Создание представлений. Отображение представлений
- •3. Редактирование представлений. Отображение зависимостей представлений. Создание представлений и представлений
- •4. Переименование столбцов представлений. Переименование представлений. Удаление представлений
- •5. Изменение данных посредством представлений. Обновление данных с помощьюSqlServerEnterpriseManager
- •ТемаViii. Создание и использование курсоров
- •1. Понятие курсора
- •2. Выборка данных из курсора
- •3. Операторы и глобальные переменные для работы с курсорами
- •4. Примеры использования курсоров
- •ТемаIx. Использование хранимых процедур
- •1. Достоинства и недостатки хранимых процедур
- •2.Создание хранимой процедуры
- •3. Операторы языка управления программой. Оператор declare
- •4. Операторы goto, begin…end и if…else
- •5. Операторы waitfor, return, while, break и continue
- •6. Операторы print и raiserror
- •7. Использование параметров в хранимых процедурах
- •8. Глобальные переменные. Отладка хранимых процедур
- •Тема X. Транзакции и блокировки
- •1. Определение транзакции. Ограничения для транзакций. Уровни изоляции транзакций
- •2. Базовая информация о блокировках. Типы блокировок
- •3. Создание транзакций и работа с ними. Точки сохранения
- •4.Отображение информации о блокировках. Явное задание блокировки
- •Описание параметров для явного задания блокировок
- •ТемаXi. Система безопасностиSqlServer2000
- •1. Типы безопасности. Создание и управление бюджетами пользователей
- •Стандартные роли сервера
- •Стандартные роли базы данных
- •2. Добавление новых пользователей. Удаление идентификаторов и пользователей
- •3. Создание ролей. Удаление ролей
- •4. Права доступа. Управление правами доступа
- •ТемаXii. Использование распределенных объектов управления.
- •1.Sql-dmo. Назначение, возможности
- •2. Экспорт данных с помощью команды вср
- •3. Использование объектовSql-dmOв хранимых процедурах
- •ТемаXiii. Основные сведения о хранилищах данных
- •1. Хранилища данных. Системы поддержки принятия решений (dss). Интерактивная аналитическая обработка (olap)
- •Сравнение субд и хранилища данных
- •2. Компоненты хранилища данных. Хранилища данных и магазины данных
- •3. Преобразование данных. Метаданные
- •4. Разработка плана хранилища данных
- •Microsoft Repository
- •С помощью мастера dts можно выполнять также простые преобразования данных, сложные преобразования выполняются с помощью dts Designer.
- •ТемаXiv. Использование служб преобразования данных
- •1. Службы преобразования данных (dts).DtSи хранилища данных
- •2. СредствоDtsDataPump
- •3. МастераDts
- •4. ИспользованиеDtsDesigner
- •Тема XV. Службы olap Microsoft sql Server
- •1.OlaPи многомерные данные
- •2. Хранение данных в бдolap
- •3. Оптимизация базы данныхOlap
- •4. Доступ к многомерным данным
2. Выборка данных из курсора
После объявления курсор нужно открыть, т.е. за оператором DECLARE должен следовать оператор OPEN, имеющий следующий синтаксис:
OPEN [Global] имя_курсора
Пример:
OPEN pub_crsr
Из открытого курсора можно прочитать данные построчно. В SQL Server предусмотрены курсоры с прокруткой вперёд (forward_scrolling cursor) и с прокруткой назад (backward_scrolling cursor) .
Синтаксис оператора FETCH:
FETCH[INEXT | PRIOR | FIRST | LAST | ABSOLUTEn | RELATIVEn]
FROM [GLOBAL] имя_курсора
[INTO@ имя_переменной1, @ имя_переменной2,…]
Элементы синтаксиса:
NEXT – считывает следующую строку;
PRIOR - считывает предыдущую строку;
FIRST – считывает первую строку;
LAST – считывает последнюю строку; ABSOLUTEn – считывает строку с указанным абсолютным номером из результирующего набора;
RELATIVEn – считывает строку, номер которой указан относительно текущей позиции внутри результирующего набора;
INTO @имя_переменной1, @имя_переменной2 и т.д. – копирует содержимое столбцов в указанные переменные.
Для ABSOLUTE и RELATIVE величина перемещения в обратном направлении задается с помощью отрицательных чисел, для ABSOLUTE отсчет начинается с последней строки набора записей, для RELATIVE - с текущей строки набора.
Примеры:
1) Прочитать следующую строку из результирующего набора:
FETCH NEXT FROM pub_crsr
2) Прочитать строку 5 из результирующего набора:
FETCH ABSOLUTE 5 FROM pub_crsr
3) Скопировать содержимое следующей строки в переменные:
FETCH NEXT FROM pub_crsr INTO @ pub_id, @ pub_name
Завершив обработку данных курсора, необходимо закрыть курсор (оператором CLOSE) освободить занимаемые им системные ресурсы (оператором DEALLOCATE), т.к. оператор CLOSE закрывает курсор, но не освобождает используемые им структуры данных. Этот оператор используется, если планируется в дальнейшем повторно открывать курсор. Оператор DEALLOCATE закрывает курсор и освобождает структуры используемых им данных. Курсоры потребляют значительные системные ресурсы, блокируют данные, занимают оперативные данные. Если эти ресурсы вовремя не освободить, может снизиться быстродействие системы в целом.
Синтаксис операторов CLOSE и DEALLOCATE:
CLOSE [GLOBAL] имя_курсора
DEALLOCATE [GLOBAL] имя_курсора
Примеры:
1) Закрыть курсор:
CLOSE pub_crsr
2) Освободить курсор:
DEALLOCATE pub_crsr
3. Операторы и глобальные переменные для работы с курсорами
Помимо считывания информации из курсора можно выполнять построчное обновление и удаление содержащихся в нем данных. При модификации курсора соответствующие изменения будут автоматически распространяться на источник данных курсора.
Синтаксис операторов UPDATE и DELETE:
UPDATE имя_таблицы
SET имя_столбца1={выражение1 | NULL | (оператор_SELECT)}
[,имя_столбца2={выражение2 | NULL | (оператор_SELECT)}…]
WHERE CURRENT OF имя_курсора
DELETE FROM имя_таблицы
WHERE CURRENT OF имя_курсора
Пример: Обновить столбец pub_name в таблице publishers
UPDATE publishers
SET pub_name=’Cпутник’
WHERE CURRENT OF pub_crsr
Здесь выполнено обновление текущей строки в курсоре.
Пример: Удалить строку в таблице publishers.
DELETE FROM publishers
WHERE CURRENT OF pub_crsr
Здесь удаляется текущая строка в курсоре.
Для контроля за состоянием курсора можно использовать две глобальные переменные @@FETCH_Status и @@Cursor_Rows.
В первой переменной сохраняется состояние последней команды FETCH. Некоторые значения @@FETCH_Status:
0 – успешная выборка;
-1 – неудачное выполнение выборки или попытка прочитать данные за пределами результирующего набора;
-2 – выбираемая строка выпадает из набора данных.
Пример использования переменной:
WHILE @@FETCH_Status=0
…выполняем обработку данных курсора.
Во второй переменной сохраняется количество строк в результирующем наборе курсора, ее используют после открытия курсора.
Возможные значения:
-n – курсор загружается данными, значение означает текущее количество строк в результирующем наборе, однако это число увеличивается по мере обработки оператора SELECT;
n – количество строк в результирующем наборе;
- 0 – результирующий набор не содержит строк;
- 1 – динамический тип курсора, поэтому количество записей неизвестно.