Разделы презентаций


SQL

Содержание

Хранимые процедурыХранимая процедура – это последовательность компилированных операторов Transact-SQL, выполняемых в виде пакета и хранящихся в системной базе данных SQL Server.

Слайды и текст этой презентации

Слайд 1SQL
часть II

SQLчасть II

Слайд 2Хранимые процедуры
Хранимая процедура – это последовательность компилированных операторов Transact-SQL, выполняемых

в виде пакета и хранящихся в системной базе данных SQL

Server.

Хранимые процедурыХранимая процедура – это последовательность компилированных операторов Transact-SQL, выполняемых в виде пакета и хранящихся в системной

Слайд 3Хранимые процедуры сложнее, чем представления.
Хранимые процедуры содержат как входные,

так и выходные параметры.
Хранимые процедуры могут содержать инструкции, которые

управляют потоком кода, например IF и WHILE.
Хранимые процедуры сложнее, чем представления. Хранимые процедуры содержат как входные, так и выходные параметры. Хранимые процедуры могут

Слайд 4Первоначальное выполнение хранимой процедуры:
Лексический анализ разбивает ХП на отдельные компоненты.
Разрешение

ссылок – компоненты,ссылающиеся на объекты БД, сопоставляются с этими объектами.
В

таблице syscomments сохраняется исходный текст ХП, а в sysobjects – ее название.
Создается предварительный план выполнения запроса (нормализованный план или дерево запроса) и сохраняется в sysprocedures.

Первоначальное выполнение хранимой процедуры:Лексический анализ разбивает ХП на отдельные компоненты.Разрешение ссылок – компоненты,ссылающиеся на объекты БД, сопоставляются

Слайд 5
Дерево запроса считывается и окончательно оптимизируется.
При последующих вызовах ХП выполняется

только шаг 5.
План выполнения ХП после первого выполнения хранится в

быстродействующем процедурном кэше.
ХП могут принимать аргументы при запуске и возвращать значения.

Дерево запроса считывается и окончательно оптимизируется.При последующих вызовах ХП выполняется только шаг 5.План выполнения ХП после первого

Слайд 6Преимущества использования ХП
Выполняются быстрее, чем последовательность отдельных операторов;
Необходимые для выполнения

операторы уже содержатся в БД;
Они находятся в исполняемом формате;
Поддерживается модульное

программирование;


Преимущества использования ХПВыполняются быстрее, чем последовательность отдельных операторов;Необходимые для выполнения операторы уже содержатся в БД;Они находятся в

Слайд 7 Преимущества использования ХП (продолжение):
Могут вызывать другие ХП и функции;
Могут быть

вызваны из прикладных программ других типов;
Уменьшается нагрузка на сеть, т.к.

для запуска достаточно передать иногда только имя ХП.
Преимущества использования ХП (продолжение): Могут вызывать другие ХП и функции;Могут быть вызваны из прикладных программ других

Слайд 8Создание и запуск ХП.
CREATE PROC имя-процедуры
[параметры]
AS
Запрос SQL

Запуск
EXEC имя-процедуры
[параметры]





Создание и запуск ХП.CREATE PROC имя-процедуры[параметры]ASЗапрос SQLЗапускEXEC имя-процедуры[параметры]

Слайд 9Пример 1 – процедура без параметров
Вывести, когда и какой предмет

сдавал студент Иванов ВВ.
CREATE PROC my_proc1
AS
SELECT Предмет.Название,Ведомость.Дата
FROM

Студенты INNER JOIN (Предметы INNER JOIN Ведомость ON Предметы.КодПредмета=Ведомость.КодПредмета) ON Студент.НомерЗачетки=Ведомость.НомерЗачетки
WHERE Студент.ФИО=‘Иванов ВВ’;
Запуск:
EXEC my_proc1

Пример 1 – процедура без параметровВывести, когда и какой предмет сдавал студент Иванов ВВ. CREATE PROC my_proc1AS

Слайд 10Пример 2 – процедура с входным параметром
Тоже, только для любого

студента
CREATE PROC my_proc2
@F varchar(20)
AS
SELECT Предмет.Название,Ведомость.Дата
FROM Студенты INNER JOIN

(Предметы INNER JOIN Ведомость ON Предметы.КодПредмета=Ведомость.КодПредмета) ON Студент.НомерЗачетки=Ведомость.НомерЗачетки
WHERE Студент.ФИО= @F;
Запуск:
EXEC my_proc2 ‘Сидоров ВВ’ или
EXEC my_proc2 @F= ‘Сидоров ВВ’

Пример 2 – процедура с входным параметромТоже, только для любого студентаCREATE PROC my_proc2@F varchar(20)AS SELECT Предмет.Название,Ведомость.Дата FROM

Слайд 11Пример 3 – процедура с входными параметрами
Для некоторого студента снизить

оплату на 5%.
CREATE PROC my_proc3
@N varchar(5), @P float
AS
UPDATE Оплата


SET Сумма= Сумма*(1- @P )
WHERE Оплата.НомерЗачетки=@N;
Запуск:
EXEC my_proc3 ‘ИС230’, 0.05 или
EXEC my_proc3 @N= ‘ИС230’, @P= 0.05


Пример 3 – процедура с входными параметрамиДля некоторого студента снизить оплату на 5%.CREATE PROC my_proc3@N varchar(5), @P

Слайд 12Пример 4 – процедура с входными параметрами и значениями по

умолчанию
CREATE PROC my_proc4
@N varchar(5)= ‘ИС230’,
@P float=0.05
AS
UPDATE Оплата
SET

Сумма= Сумма*(1- @P )
WHERE Оплата.НомерЗачетки=@N;
Запуск:
EXEC my_proc4 ‘ИС450’, 0.1 или
EXEC my_proc4 @N=‘ИС450’, @P = 0.1
EXEC my_proc4 @P = 0.1
EXEC my_proc4

Пример 4 – процедура с входными параметрами и значениями по умолчаниюCREATE PROC my_proc4@N varchar(5)= ‘ИС230’, @P float=0.05AS

Слайд 13Пример 5 – процедура с входными и выходными параметрами
Вывести общую

сумму, уплаченную студентами за конкретный месяц
CREATE PROC my_proc5
@m int
@S float

output
AS
SELECT @S=SUM(Оплата.Сумма)
FROM Оплата
GROUP BY Month(Оплата.Дата)
HAVING Month(Оплата.Дата)= @m;
Запуск:
DECLARE @SS float
EXEC my_proc5 10, @SS output
SELECT @SS
Пример 5 – процедура с входными и выходными параметрамиВывести общую сумму, уплаченную студентами за конкретный месяцCREATE PROC

Слайд 14Использование хранимых процедур для всех повторяющихся действий в базе данных

является хорошим стилем программирования.

Использование хранимых процедур для всех повторяющихся действий в базе данных является хорошим стилем программирования.

Слайд 15Триггеры
- это особые хранимые процедуры, автоматически выполняемые при обращении к

БД с целью изменения данных.
Т могут быть связаны с

выполнением операций INSERT, UPDATE, DELETE или их комбинаций.
Т определяются для конкретных таблиц.
таблица может иметь любое количество любых триггеров.
Триггеры- это особые хранимые процедуры, автоматически выполняемые при обращении к БД с целью изменения данных. Т могут

Слайд 16Триггеры
Все производимые Т модификации рассматриваются как одна транзакция (срабатывает как

транзакция).
Создает Т только владелец БД.
При выполнении команд модификации данных сервер

создает две таблицы:inserted и deleted, где хранятся списки соответствующих строк. Они связаны только с Т их создавшим, никакой другой Т не имеет к ним доступа.


ТриггерыВсе производимые Т модификации рассматриваются как одна транзакция (срабатывает как транзакция).Создает Т только владелец БД.При выполнении команд

Слайд 17Триггеры чаще всего используются для:
Проверки корректности введенных данных и выполнении

сложных ограничений целостности данных, которые трудно, если вообще возможно, поддерживать

с помощью ограничений целостности, установленных для таблиц;
Для выполнения действий по отношению к другим таблицам, основанных на изменениях которые были сделаны в какой-то таблице;
Триггеры чаще всего используются для:Проверки корректности введенных данных и выполнении сложных ограничений целостности данных, которые трудно, если

Слайд 18Триггеры чаще всего используются для:
Для выполнения дополнительной проверки и отмены

введения данных (например, чтобы удостоверится, что разрешенная для клиента сумма

кредита не превышена, в противном случае операция блокируется);
Для подсчета значений вычисляемых полей или обновления меток даты/времени.
Триггеры чаще всего используются для:Для выполнения дополнительной проверки и отмены введения данных (например, чтобы удостоверится, что разрешенная

Слайд 19Создание триггера
CREATE TRIGGER [владелец.]имя_триггера
ON [владелец.]имя таблицы или представления
FOR {AFTER INSTEAD

OF} {INSERT UPDATE DELETE} [WITH ENCRYPTION]
AS оператор_SQL

Создание триггераCREATE TRIGGER [владелец.]имя_триггераON [владелец.]имя таблицы или представленияFOR {AFTER INSTEAD OF} {INSERT UPDATE DELETE} [WITH ENCRYPTION]AS оператор_SQL

Слайд 20Триггеры
По умолчанию триггер выполняется после изменения данных, но если указать

параметр INSTEAD OF, то такой триггер будет выполняться вместо изменения

данных.
В Т можно использовать функцию @@ROWCOUNT,
которая возвращает количество строк обработанных последней командой.

ТриггерыПо умолчанию триггер выполняется после изменения данных, но если указать параметр INSTEAD OF, то такой триггер будет

Слайд 21Пример 1
Создать триггер, который будет при каждом добавлении или изменении

данных таблицы «Преподаватели» возвращать сообщение о количестве измененных записей.
CREATE

TRIGGER tr_ПРЕП
ON Преподаватели
FOR INSERT, UPDATE
AS raiserror (‘Произведено изменений таблицы’,0,1 @@rowcount)
RETURN

Пример 1Создать триггер, который будет при каждом добавлении или изменении данных таблицы «Преподаватели» возвращать сообщение о количестве

Слайд 22Запуск
INSERT (Табельный Номер, ФИО, Должность)
VALUES (’33п28’,’Иванов ВВ’,’доцент’)

ЗапускINSERT (Табельный Номер, ФИО, Должность)VALUES (’33п28’,’Иванов ВВ’,’доцент’)

Слайд 23Пример 2
Триггер срабатывает при удалении экземпляра некоторой книги, например, в

случае утери. Он проверяет остался ли хотя бы один экземпляр

этой книги, если нет, то книга удаляется из каталога.
CREATE TRIGGER DEL_EXEMP ON Экземпляры
FOR DELETE
AS
DECLARE @Ntek int (кол-во оставшихся экземпляров книги)
DECLARE @DEL_EX varchar(12) (шифр удаленного экземпляра)
BEGIN
SELECT @DEL_EX=ISBN FROM deleted
EXEC @Ntek = COUNT_EX @DEL_EX (вызов ХП, определяющей кол-во экземпляров книги с зад. шифром)
IF @Ntek =0 DELETE FROM Книги WHERE Книги.ISBN= @DEL_EX END
GO

Пример 2Триггер срабатывает при удалении экземпляра некоторой книги, например, в случае утери. Он проверяет остался ли хотя

Слайд 24Задание
Создать триггер, который срабатывает при удалении из учебного плана некоторой

дисциплины, он проверяет осталась ли хотя бы еще одна дисциплина

у преподавателя, который ее читал. Если нет, то преподавателя увольняют, т.е. удаляют соответствующую запись в таблице преподаватель.
ЗаданиеСоздать триггер, который срабатывает при удалении из учебного плана некоторой дисциплины, он проверяет осталась ли хотя бы

Слайд 25Индексы
это набор ссылок, упорядоченных по определенному столбцу таблицы,
это наборы

уникальных значений для некоторой таблицы с соответствующими ссылками на данные,
это

средство логической сортировки данных для повышения скорости поиска и выполнения в последующем сортировки.
Индекс также ускоряет поиск, как предметный указатель в книге.

Индексыэто набор ссылок, упорядоченных по определенному столбцу таблицы, это наборы уникальных значений для некоторой таблицы с соответствующими

Слайд 26Файлы
Индексированный файл – это основной файл, содержащий данные отношения, для

которого создан индексный файл.
Индексный файл – это файл, в котором

каждая запись состоит из двух значений: данных поля по которому индексировали и указателя, который связывает с соответствующим кортежем индексированного файла
ФайлыИндексированный файл – это основной файл, содержащий данные отношения, для которого создан индексный файл.Индексный файл – это

Слайд 27Индексы (создание)
CREATE INDEX имя_индекса
ON имя_таблицы (столбцы для индексации)

Индексы (создание)CREATE INDEX имя_индекса ON имя_таблицы (столбцы для индексации)

Слайд 28Индексы повышают производительность операций выборки, но ухудшают производительность операций-действий;
Для хранения

данных индекса требуется много места на диске;
Не все данные подходят

для индексации. Данные, неявляющиеся по своей сути уникальными (ГРУППА а таблице СТУДЕНТ), не дадут большого эффекта;

Индексы. Что следует учитывать:

Индексы повышают производительность операций выборки, но ухудшают производительность операций-действий;Для хранения данных индекса требуется много места на диске;Не

Слайд 29Индексы. Что следует учитывать:
Выбирайте для индексации данные, которые часто используются

для фильтрации и сортировки данных;
В качестве индекса можно использовать несколько

столбцов.
Индексы. Что следует учитывать:Выбирайте для индексации данные, которые часто используются для фильтрации и сортировки данных;В качестве индекса

Слайд 30Транзакция
- это последовательность операций, производимых над БД, рассматриваемая СУБД как

единое целое, и переводящая ее из одного непротиворечивого (согласованного) состояния

в другое непротиворечивое (согласованное) состояние.
Каждая Т начинается при целостном состоянии БД и сохраняет это состояние после своего завершения.
Транзакция- это последовательность операций, производимых над БД, рассматриваемая СУБД как единое целое, и переводящая ее из одного

Слайд 31Транзакция
Инициализация Т м.б. вызвана как пользователем так и прикладной программой.



Т особенно важны для многопользовательских СУБД.

ТранзакцияИнициализация Т м.б. вызвана как пользователем так и прикладной программой. Т особенно важны для многопользовательских СУБД.

Слайд 32Проектирование транзакции заключается в определении:
данных, используемых Т,
функциональных характеристик Т,
выходных

данных, формируемых Т,
степени важности и интенсивности использования.

Проектирование транзакции заключается в определении:данных, используемых Т,функциональных характеристик Т, выходных данных, формируемых Т,степени важности и интенсивности использования.

Слайд 33Свойства транзакций
Атомарность – транзакция должна быть выполнена целиком или не

выполнена вовсе.
Согласованность – гарантирует, что по мере выполнения транзакций данные

переходят из одного согласованного состояния в другое, т.е. транзакция не разрушает взаимной согласованности данных.
Свойства транзакцийАтомарность – транзакция должна быть выполнена целиком или не выполнена вовсе.Согласованность – гарантирует, что по мере

Слайд 34Свойства транзакций
Изолированность – означает, что конкурирующие за доступ к БД

транзакции физически обрабатываются последовательно, изолированно друг от друга, но для

пользователей иллюзия параллельности.
Долговечность – если транзакция завершена успешно, то те изменения в данных, которые были ею произведены, не могут быть потеряны ни при каких обстоятельствах.

Свойства транзакцийИзолированность – означает, что конкурирующие за доступ к БД транзакции физически обрабатываются последовательно, изолированно друг от

Слайд 35ФИКСАЦИЯ ИЛИ ОТКАТ?
Если все операторы выполнены успешно и не произошло

никаких сбоев программного или аппаратного обеспечения, то ФИКСАЦИЯ, т.е. все

результаты транзакции становятся постоянными.
Если в процессе выполнения транзакции случилось нечто, что ее нормальное завершение становится невозможным, то БД возвращается в свое исходное состояние, т.е. ОТКАТ.
ФИКСАЦИЯ ИЛИ ОТКАТ?Если все операторы выполнены успешно и не произошло никаких сбоев программного или аппаратного обеспечения, то

Слайд 36Модель транзакций
Стандартом ANSI/ISO SQL определена модель транзакций и функции операторов
COMMIT

- фиксация
ROLLBACK - откат

Модель транзакцийСтандартом ANSI/ISO SQL определена модель транзакций и функции операторовCOMMIT - фиксацияROLLBACK - откат

Слайд 37Транзакция завершается одним из 4-х возможных вариантов:
Оператор COMMIT означает

успешное завершение транзакции; его использование делает постоянными изменения, внесенные в

БД в текущей транзакции.
Оператор ROLLBACK прерывает транзакцию, отменяя изменения, сделанные в БД в рамках этой транзакции; новая транзакция начинается непосредственно после использования ROLLBACK.
Транзакция завершается одним из 4-х возможных вариантов: Оператор COMMIT означает успешное завершение транзакции; его использование делает постоянными

Слайд 38Транзакция завершается одним из 4-х возможных вариантов:
Успешное завершение программы, в

которой была инициирована текущая транзакция, означает успешное ее завершение (как

будто был использован оператор COMMIT).
Ошибочное завершение программы прерывает транзакцию (как будто был использован оператор ROLLBACK).
Транзакция завершается одним из 4-х возможных вариантов:Успешное завершение программы, в которой была инициирована текущая транзакция, означает успешное

Слайд 39ПРИМЕР
В таблице Ведомость изменить значение поля Оценка на 0, если

записано значение NULL.
BEGIN TRAN updete_оценка
UPDETE Ведомость SET оценка=0 WHERE оценка

IS NULL
COMMIT TRAN updete_оценка
GO


ПРИМЕРВ таблице Ведомость изменить значение поля Оценка на 0, если записано значение NULL.BEGIN TRAN updete_оценкаUPDETE Ведомость SET

Слайд 40Журнал транзакций
ЖТ – это особая часть БД, недоступная пользователям СУБД

и поддерживаемая с особой тщательностью, в которую поступают записи обо

всех изменениях основной части БД.
ЖТ сохраняет промежуточные состояния БД необходимые для отката транзакции.
Предназначен для поддержки надежности хранения данных во внешней памяти.
Журнал транзакцийЖТ – это особая часть БД, недоступная пользователям СУБД и поддерживаемая с особой тщательностью, в которую

Слайд 41Журнал транзакций (продолжение)
Используется стратегия «упреждающей» записи (протокол WAL) – запись

об изменении любого объекта БД должна попасть во внешнюю память

журнала раньше, чем измененный объект попадет во внешнюю память основной части БД.
Журнал транзакций (продолжение)Используется стратегия «упреждающей» записи (протокол WAL) – запись об изменении любого объекта БД должна попасть

Слайд 42Проблемы параллельного выполнения транзакций.
Пропавшие изменения,
Проблемы промежуточных данных,
Проблемы несогласованных данных,
Проблемы

строк-фантомов.

Проблемы параллельного выполнения транзакций. Пропавшие изменения,Проблемы промежуточных данных,Проблемы несогласованных данных,Проблемы строк-фантомов.

Слайд 43Как бороться с проблемами? Сериализация транзакций.
Выработать процедуру согласованного выполнения Т:
В

ходе выполнения Т пользователь видит только согласованные данные,
При параллельном выполнении

2-х Т СУБД гарантирует принцип независимого выполнения Т
Как бороться с проблемами?  Сериализация транзакций.Выработать процедуру согласованного выполнения Т:В ходе выполнения Т пользователь видит только

Слайд 44Сериализация транзакций.
Самый популярный механизм реализации сериализации Т – механизм блокировок.

Сериализация транзакций.Самый популярный механизм реализации сериализации Т – механизм блокировок.

Слайд 45Блокировки
Чтобы запретить нескольким пользователям одновременно изменять данные в базе и

считывать «грязные» данные используется блокировка.
Блокирование обеспечивает логическую целостность транзакций и

данных.
Уровни гранулярности - блокируемые ресурсы включают запись данных, страницу данных, экстент, таблицу или всю БД. Самый низкий уровень гранулярности – блокировка записи.
БлокировкиЧтобы запретить нескольким пользователям одновременно изменять данные в базе и считывать «грязные» данные используется блокировка.Блокирование обеспечивает логическую

Слайд 46Режимы блокировок:
Разделяемый
Обновления
Монопольный
Намерения
Схемы
Массового обновления

Режимы блокировок:РазделяемыйОбновленияМонопольныйНамерения СхемыМассового обновления

Слайд 47Разделяемая блокировка
Применяется только для чтения и позволяет параллельным транзакциям одновременно

считывать данные из одного и того же источника.

Разделяемая блокировкаПрименяется только для чтения и позволяет параллельным транзакциям одновременно считывать данные из одного и того же

Слайд 48Блокировка обновления
Применяется, когда допустимо обновление ресурса. Только одна транзакция единовременно

может наложить ее. Если транзакция действительно производит изменение, то эта

блокировка преобразуется в монопольную, иначе – в разделяемую.
Блокировка обновленияПрименяется, когда допустимо обновление ресурса. Только одна транзакция единовременно может наложить ее. Если транзакция действительно производит

Слайд 49Моно Блокировка намерения польная блокировка
Применяется для модификации данных. При этом

никакая другая транзакция не может читать или изменять этот ресурс.

Моно Блокировка намерения польная блокировкаПрименяется для модификации данных. При этом никакая другая транзакция не может читать или

Слайд 50Блокировка намерения
применяется для иерархического упорядочения блокировок.
Блокировка схемы
применяется

при выполнении операции, затрагивающей схему таблицы, например, при добавлении поля

в таблицу или компиляции запросов.
Блокировка намеренияприменяется для иерархического упорядочения блокировок.   Блокировка схемыприменяется при выполнении операции, затрагивающей схему таблицы, например,

Слайд 51Блокировка массового обновления
Применяется при копировании больших объемов данных в таблицу

с указанием TABLOCK.

Блокировка массового обновленияПрименяется при копировании больших объемов данных в таблицу с указанием TABLOCK.

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика