- •Серверы баз данных Курс лекций
- •Предисловие
- •Серверы баз данных. Основные понятия
- •История развития субд
- •Перспективы развития субд
- •Трехуровневая архитектура бд. Ее назначение
- •Модели клиент- сервер в технологии бд
- •Пользователи бд
- •Разработчики и администраторы приложений.
- •Контрольные вопросы
- •Двухуровневые модели
- •Модель удаленного доступа к данным
- •Удаленная презентация (Модель сервера бд)
- •Модель распределенной бд
- •Модель сервера приложений
- •Проектирование баз данных
- •Этапы разработки базы данных
- •Критерии оценки качества логической модели данных
- •Алгоритм нормализации (приведение к 3нф)
- •Элементы модели "сущность-связь"
- •Основные понятия er-диаграмм
- •Пример разработки er-модели
- •Описание предметной области
- •Описание сущностей и типов связей
- •П ереход к реляционной модели
- •Концептуальные и физические er-модели
- •Контрольные вопросы
- •Языки бд. Язык определения данных
- •Создание бд. Способы создания бд
- •Создание таблиц базы данных
- •Декларативные ограничения при создании таблиц
- •Задание ограничений ссылочной целостности
- •Изменение таблиц
- •Создание индексов в системе sql-сервер
- •Кластеризованный индекс
- •Контрольные вопросы
- •Языки бд. Язык управления данными
- •Выборка данных
- •Сортировка результатов запроса
- •Вложение запросов
- •Создание таблицы из набора результатов
- •Использование оператора union
- •Запросы на модификацию данных
- •Запросы на удаление
- •Запросы на добавление
- •Вставка записей из другой таблицы
- •Добавление данных в указанные поля
- •Values(‘31.03.03’,’согласен’,3000,4)
- •Запросы на обновление
- •Контрольные вопросы
- •Создание представлений
- •Создание, удаление и обновление представлений
- •Модифицируемые и немодифицируемые представления
- •Контрольные вопросы
- •Хранимые процедуры
- •Элементы Transact sql
- •Оператор условия
- •Циклическое выполнение операций
- •Функции
- •Создание хранимых процедур
- •Выполнение хранимой процедуры.
- •Контрольные вопросы
- •Триггеры
- •Назначение триггеров
- •Создание триггеров
- •Принцип работы триггеров
- •Включение и отключение триггера. Удаление триггера, Просмотр информации о триггерах
- •Контрольные вопросы
- •Транзакции и блокировки
- •Понятие транзакции
- •Свойства транзакций. Способы завершения транзакций
- •Операторы Transact sql для работы с транзакциями
- •Журнал транзакций.
- •Блокировки.
- •Сериалиация транзакций
- •Переопределение блокировок на уровне запроса. Типы блокировок
- •Контрольные вопросы
- •Безопасность данных и привилегии
- •Принципы защиты баз данных от несанкционированного доступа
- •Защита данных в системе ms sql Server
- •Контрольные вопросы
- •Организация доступа к бд из прикладных программ
- •Понятие курсора
- •Интерфейс прикладного программирования
- •Архитектура odbc
- •Архитектура odbc
- •Контрольные вопросы
- •Файловые структуры, используемые для хранения информации в бд.
- •Файлы прямого и последовательного доступа
- •Индексные файлы
- •Файлы с плотным индексом
- •Файлы с неплотным индексом
- •Моделирование отношений 1:м на файловых структурах
- •Моделирование отношений 1:м с использованием однонаправленных указателей
- •Структура записи подчиненного файла.
- •Алгоритм удаление записи из цепочки подчиненного файла.
- •Инвертированные списки
- •К Рисунок 14 онтрольные вопросы
- •Содержание
- •Литература
Функции
Для большинства функций используется следующий синтаксис:
имя функции(аргумент) или @@имя функции.
Например: @@TRANCOUNT возвращает число незавершенных транзакций
IF (@@TRANCOUNT>0)
BEGIN
RAISERROR (‘задание не может быть выполнено в транзакции’, 10,1)
RETURN
END
Оператор RAISERROR возвращает пользовательское сообщение об ошибке, позволяет пользователям получать записи из системной таблицы sysmessages или создавать сообщение динамически, на основе заданного пользователем уровня и кода ошибки.
Синтаксис:
RAISERROR({код ошибки|символьная строка} уровень ошибки, состояние). Сообщение об ошибке можно стандартизировать и использовать многократно. Для этого сообщение следует определить в БД. Синтаксис включения сообщения в БД:
Sp_addmessage код сообщения, код важности, текст сообщения[,язык[FALSE|TRUE],REPLACE]]]
Флаг FALSE|TRUE определяет, должно ли сообщение записываться в журнал ошибок. REPLACE заменяет существующее сообщение с указанным кодом.
Функция @@ROWCOUNT возвращает количество строк, измененных последним запросом.
Например:
UPDATE STAFF SET LastName = ‘Иванов’
WHERE LastName = ‘Иванков’
IF(@@ROWCOUNT=0)
BEGIN
PRINT ‘Внимание : Ни одна запись не была изменена’
RETURN
END
Операторы TRANSACT-SQL могут выполняться разными способами: по одному, пакетами, в составе хранимых процедур или триггеров, как сценарии.
Пакет – это набор операторов TRANSACT-SQL, одновременно передаваемых SQL –серверу и выполняемых как единая группа. Пакеты выполняются интерактивно или в составе сценария. Пакеты являются основой для программ SQL Server. Пакет содержит одну или несколько команд SQL. Команды пакета анализируются, компилируются и выполняются как единая группа. Если вызов хранимой процедуры не является первой командой пакета, перед именем процедуры должно стоять ключевое слово EXEC.
Создание хранимых процедур
Обработка хранимых процедур включает ее создание и перемещение в кэш процедур – область памяти, используемую сервером для хранения скомпилированных планов выполнения сохраненной процедуры. Хранимую процедуру можно создавать в следующем порядке: сначала написать операторы Transact SQL, которые должны быть включены в хранимую процедуру, и проверить и работу, а затем, если нужный результат получен, можно создать хранимую процедуру.
Для создания хранимой процедуры используется оператор SQL CREATE PROCEDURE.
Синтаксис:
CREATE PROCEDURE <имя процедуры> (@<имя перем1> <тип данных>, @<имя перем2> <тип данных>…)
[@параметр тип данных[=значение по умолчанию] [OUTPUT]
[WITH
{ RECOMPILE
|ENCRYPTION
|RECOMPILE,ENCRYPTION}]
[FOR REPLICATION]
AS <тело процедуры>
Ключевое слово RECOMPILE определяет режим компиляции. Если RECOMPILE задано, то процедура будет перекомпилироваться всякий раз, когда она будет передаваться на выполнение (план выполнения не кэшируется, при каждом выполнении создается новый план). Ключевое слово ENCRYPTION определяет режим, при котором исходный текст хранимой процедуры не сохраняется в БД. Кроме имени все остальные параметры являются необязательными.
Каждая хранимая процедура компилируется при первом выполнении. Описание процедуры совместно с планом ее работы хранится в системных таблицах БД.
