СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ ПРЕДСТАВЛЕНИЙ

advertisement
СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ
ПРЕДСТАВЛЕНИЙ
• Представление – это виртуальная таблица,
определяемая запросом, содержащим
оператор SELECT. Эта виртуальная таблица
состоит из данных одной или нескольких
реальных таблиц, а для пользователей
представление выглядит, как реальная
таблица
• К представлению можно применять
операции SELECT, INSERT, UPDATE и DELETE.
• Преимущество использования
представлений заключается в том, что
можно создавать представления с
различными атрибутами без
необходимости дублирования данных.
• Их полезно использовать для обеспечения
безопасности данных, для упрощения
презентации данных и для логической
презентации данных.
Типы представлений
• Подмножество колонок таблицы. Можно
применять для упрощения или
безопасности данных
• Подмножество строк таблицы.
• Связывание двух и более таблиц.
• Агрегированная информация.
Преимущества представлений
• Одним из преимуществ использования
представлений является то, что они всегда
содержат самые свежие данные;
• Еще одним преимуществом использования
представлений является то, что
представление может иметь уровень
безопасности, отличный от его базовой
таблицы.
Ограничения представлений
• Ограничения по колонкам (до 1024 колонок
таблицы);
• Ограничение базы данных;
• Ограничение безопасности;
• Правила целостности данных;
• Ограничение на количество уровней
вложенности представлений (до 32 уровней
вложенности представлений)
• Ограничение оператора SELECT.
Создание представлений
CREATE VIEW имя_представления *(колонка,
колонка ...)+[WITH ENCRYPTION]AS ваш
оператор SELECT[WITH CHECK OPTION]
• Ключевое слово WITH ENCRYPTION
указывает, что определение представления
(оператор SELECT, определяющий
представление) должно шифроваться.
• Ключевое слово WITH CHECK OPTION
указывает, что операции модифицирования
данных, применяемые к представлению,
должны отвечать критериям,
содержащимся в операторе SELECT
• CREATE VIEW spisok_st AS
SELECT
nume, prenume
FROM
student
• CREATE VIEW emp_vw2 AS
SELECT
*
FROM
student
WHERE
univ_id= 10
Советы по использованию
представлений
• Используйте представления для
обеспечения безопасности
• Используйте преимущества индексов
ИЗМЕНЕНИЕ И УДАЛЕНИЕ
ПРЕДСТАВЛЕНИЙ
• Для изменения представлений используйте
оператор ALTER VIEW
• ALTER VIEW имя_представления *(колонка,
колонка, ...)+[WITH ENCRYPTION]AS ваш
оператор SELECT[WITH CHECK OPTION]
• Для удаления представления используйте
оператор DROP VIEW
• DROP VIEW имя_представления
ТРАНЗАКЦИИ И БЛОКИРОВКА
ТРАНЗАКЦИЙ
• Транзакция – это набор операций, который
выполняется как один логический блок.
Использование транзакций позволяет SQL
Server обеспечивать определенный уровень
целостности и восстанавливаемости
данных
ACID-свойства
• Атомарность. SQL Server обеспечивает, что
в случае успешного выполнения транзакции
фиксируются все модификации данных этой
транзакции (в виде группы), а в случае
неудачного выполнения транзакции не
фиксируется ни одна из модификаций;
ACID-свойства
• Согласованность. Согласованность
означает, что после окончания транзакции
все данные остаются в согласованном
состоянии (сохраняется целостность
данных) – будь то успешно или неуспешно
завершенная транзакция.
ACID-свойства
• Изолированность. Изолированность
означает, что каждая транзакция действует
так же, как если бы она была единственной
в системе; иными словами, модификации,
выполняемые в одной транзакции,
изолируются от модификаций,
выполняемых в другой параллельно
выполняемой транзакции.
ACID-свойства
• Устойчивость. Устойчивость означает, что
после того, как транзакция фиксирована,
влияние этой транзакции в базе данных
становится постоянным – даже в случае
отказа системы.
Уровни изолированности
• SQL Server поддерживает четыре уровня
изолированности. Уровень
изолированности – значение,
определяющее уровень, при котором в
транзакции допускаются несогласованные
данные, т.е. степень изолированности
одной транзакции от другой.
• Read uncommitted (Чтение
незафиксированных данных). Транзакции
изолированы только в такой степени, чтобы
нельзя было читать физически
поврежденные данные.
• Read committed (Чтение фиксированных
данных). Принятый по умолчанию уровень
для SQL Server. На этом уровне разрешается
чтение только фиксированных данных.
• Repeatable read (Повторяемость чтения).
Уровень, при котором чтение одной и той
же строки или строк в транзакции дает
одинаковый результат.
• Serializable (Упорядочиваемость).Самый
высокий уровень изолированности;
транзакции полностью изолируются друг от
друга.
Поведение параллельных
транзакций
• Чтение нефиксированных данных (Dirty
read). Чтение, при котором происходит
считывание еще не фиксированных данных
• Неповторяемое чтение (Nonrepeatable
read). Несогласующиеся результаты,
получаемые при повторном чтении.
• Фантомное чтение (Phantom read). Чтение,
возникающее в том случае, когда одна
транзакция пытается прочитать строку,
которая еще не существует в начале данной
транзакции, но вставляется второй
транзакцией, прежде чем закончится
первая транзакция.
Таблица. Поведение при различных уровнях изолированности
Чтение
Допустимое
поведение
нефиксиров
анных
Неповторя
емое чтение
Фантомное
чтение
данных
Read
Да
Да
Да
Нет
Да
Да
Нет
Нет
Да
Нет
Нет
Нет
uncommitted
Read
committed
Repeatabl
e read
Serializa
ble
•
•
•
•
•
SET TRANSACTION ISOLATION LEVEL
READ UNCOMMITTED
| READ COMMITTED
| REPEATABLE READ
| SERIALIZABLE
• Для запуска транзакции используется
оператор T-SQL BEGIN TRANSACTION. Чтобы
указать конец транзакции, используется
COMMIT TRANSACTION или ROLLBACK
TRANSACTION.
• BEGIN TRAN*SACTION+ *имя_транзакции]
COMMIT [TRAN[SACTION+ *имя_транзакции+
ROLLBACK [TRAN[SACTION]
[имя_транзакции]
•
•
•
•
BEGIN TRAN update_student
UPDATE student SET oras= 'XX‘
WHERE oras IS NULL
COMMIT TRAN update_state
• BEGIN TRAN update_student
IF EXISTS
(SELECT nume, prenume, nota FROM student
a, note_exam b WHERE a.st_id = b.st_id AND
curs_id = 10)UPDATE note_exam SET nota= 8
WHERE nota>5
• ELSE ROLLBACK TRAN update_student
СОЗДАНИЕ ХРАНИМЫХ ПРОЦЕДУР
• Хранимая процедура – это набор
операторов T-SQL, который компилируется
системой SQL Server в единый "план
исполнения"
• При первом запуске хранимой процедуры
происходит ее компиляция и создание
плана ее исполнения, который сохраняется
в памяти. Затем при последующих вызовах
этой процедуры SQL Server использует этот
план исполнения без необходимости
повторного компилирования
• Имеется три типа хранимых процедур:
системные хранимые процедуры,
расширенные хранимые процедуры и
простые определяемые пользователем
хранимые процедуры
Создание хранимых процедур
• CREATE PROC*EDURE+ имя_процедуры
* ,@имя_параметра тип_данных- + *=
по_умолчанию+*OUTPUT+
*,...,n+AS оператор(ы)_t-sql
• CREATE PROCEDURE stud_otl AS
SELECT nume,
prenume,
avg(nota), a.st_id
FROM student a, note_exam b
WHERE a.st_id=b.st_id
GROUP BY a.st_id
HAVING avg(nota)>=9
• Для запуска хранимой процедуры просто
обратитесь к ней по имени
• Если оператор, вызывающий данную
процедуру, входит в пакет операторов и не
является первым оператором этого пакета,
то вы должны использовать вместе с
вызовом процедуры ключевое слово
EXECUTE (сокращается до "EXEC")
• SELECT getdate()
Exec stud_otl
• Использование RETURN. Вы можете
возвращаться из любой точки хранимой
процедуры в вызывающую программу с
помощью ключевого слова RETURN,
обеспечивающего безусловный выход из
процедуры
• Оператор ALTER PROCEDURE используется
для изменения хранимой процедуры
• ALTER PROC*EDURE+ имя_процедуры
* ,@имя_параметра тип_данных- + *=
по_умолчанию+ *OUTPUT+
*,...,n+AS оператор(ы)_t-sql
• Оператор DROP PROCEDURE действует
просто – он удаляет хранимую процедуру.
Вы не сможете восстановить хранимую
процедуру после ее удаления.
• Системная хранимая процедура sp_helptext
позволяет вам просматривать определение
любой хранимой процедуры и оператора,
который использовался для создания этой
процедуры.
СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ
ТРИГГЕРОВ
• Триггер – это специальный тип хранимой
процедуры, которая запускается
автоматически системой SQL Server при
модифицировании какой-либо таблицы
одним из трех операторов: UPDATE, INSERT
или DELETE
• Существует пять типов триггеров: UPDATE,
INSERT, DELETE, INSTEAD OF и AFTER
• Триггер INSTEAD OF выполняется вместо
операции вставки, обновления или
удаления. Триггер AFTER активизируется
после какой-либо запускающей операции и
обеспечивает механизм управления
порядком выполнения нескольких
триггеров
• Триггеры запускаются только после
завершения оператора, который вызвал их
активизацию.
• Триггер рассматривается как часть одной
транзакции вместе с оператором, который
вызывает его.
• Триггер активизируется только один раз для
одного оператора, даже если этот оператор
влияет на несколько строк данных
• Триггеры, как и ограничения, можно
использовать для поддержки целостности
данных и деловых правил, но триггер не
следует использовать как замену
ограничения, когда достаточно
использовать только ограничение
• Триггеры также полезно использовать для
выполнения нескольких операций в ответ
на одно событие модификации данных
• CREATE TRIGGER имя_триггера
ON ,таблица | представление-[WITH
ENCRYPTION]{FOR | AFTER | INSTEAD OF}
{[DELETE] [,] [INSERT] [,] [UPDATE]}
[WITH APPEND]
[NOT FOR REPLICATION]
AS
оператор_sql [...n]
• Информацию о триггерах можно получить
с помощью двух системных хранимых
процедур: sp_helptext и sp_helptrigger
• Чтобы изменить определение триггера, вы
можете удалить и заново создать
соответствующий триггер или использовать
оператор ALTER TRIGGER. Для этого
оператора используется тот же синтаксис,
что и для оператора CREATE TRIGGER
• ALTER TRIGGER Print_Update ON FOR
UPDATE, INSERT AS PRINT "student was
updated or a row was inserted"
• DROP TRIGGER имя_триггера
• Для удаления триггера из таблицы
используйте оператор DROP TRIGGER
• Термином “целостность данных”
обозначается такое состояние базы данных,
когда все хранящиеся в ней данные верны.
Если происходит сохранение в базе
неверных данных, то говорят, что
целостность данных потеряна.
• Среди методов SQL Server,
предназначенных для обеспечения
целостности данных, —
• определения NOT NULL и DEFAULT, свойства
IDENTITY, ограничения, правила, триггеры
Определения NOT NULL
• Задавая возможность ввода в поле пустых
значений, вы определяете, могут ли в этом
столбце таблицы храниться пустые
значения. Пустое значение отличается от
нуля, пробела или символьной строки
нулевой длины. Пустое значение означает,
что информация не введена, то есть
значение не известно или не определено.
Определения DEFAULT
• Значения по умолчанию задают значения,
которые будет использованы, если при
добавлении строки значение поля не
задано. Определения DEFAULT создают при
определении таблицы или добавляют к уже
существующей таблице.
Свойства IDENTITY
• В любой таблице разрешается создать
единственный столбец, который содержит
сгенерированные системой
последовательные значения, уникально
идентифицирующие каждую строку
таблицы. Значения столбца с
идентификатором обычно уникальны в
пределах той таблицы, в которой они
определяются.
Ограничения
• Ограничения позволяют определять, каким
образом SQL Server автоматически
обеспечивает целостность данных.
Ограничения определяют правила,
проверяющие допустимые значения
столбцов, и представляют собой
стандартные механизмы обеспечения
целостности.
Правила
• Сначала следует создать правило с
помощью оператора CREATE RULE. После
этого при помощи системной хранимой
процедуры sp_bindrule его привязывают к
столбцу или пользовательскому типу
данных.
• При обеспечении ссылочной целостности
SQL Server предотвращает следующие
действия пользователей:
• • добавление записей в связанную таблицу,
если нет необходимой записи в главной
таблице;
• • изменение значений в главной таблице, в
результате которого в связанной таблице
останутся “зависшие” записи;
• • удаление записей из главной таблицы при
наличии связанных записей во внешней
таблице.
Ограничения PRIMARY KEY
• В таблице обычно есть столбец (или
комбинация столбцов), значения которых
уникально идентифицируют каждую строку
таблицы. Этот столбец (или столбцы)
называются первичным ключом таблицы и
обеспечивает целостность сущностей
таблицы.
•
•
•
•
•
•
CREATE TABLE Table1
(
Col1 INT,
Соl2 VARCHAR(30),
CONSTRAINT table_pk PRIMARY KEY (Col1)
)
• SQL Server автоматически создает
уникальный индекс, чтобы обеспечить
соответствие требованию уникальности,
которое выдвигает ограничение PRIMARY
KEY.
UNIQUE
• Ограничение UNIQUE позволяет запретить
ввод повторяющихся значений в некоторые
столбцы, не участвующие в формировании
первичного ключа. Несмотря на то, что
уникальность обеспечивают оба
ограничения — и UNIQUE, и PRIMARY KEY, в
некоторых ситуациях вместо ограничения
PRIMARY KEY следует использовать
ограничение UNIQUE
Ограничения FOREIGN KEY
• Внешний ключ — это столбец или
комбинация столбцов, которая
используется для установления и
обеспечения связи между данными двух
таблиц. Связь между двумя таблицами
устанавливается путем добавления к одной
из таблиц столбца (столбцов) и
определения для него ограничения
FOREIGN KEY.
•
•
•
•
•
CREATE TABLE Table1
Col1 INT PRIMARY KEY,
Col2 INT,
CONSTRAINT col2_fk FOREIGN KEY (Col2)
REFERENCES student(st_lD)
Ограничения CHECK
• Ограничения CHECK, обеспечивают
доменную целостность путем ограничения
значений, которые разрешено ввести в
столбец.
• Можно создать ограничение CHECK с
помощью любого логического выражения,
которое возвращает TRUE или FALSE в
зависимости от используемого логического
оператора.
•
•
•
•
•
CREATE TABLE Table1
(
Col1 INT PRIMARY KEY,
Col2 INT
CONSTRAINT limit_stip CHECK (Col2 BETWEEN
0 AND 1000),
• Col3 VARCHAR(30)
• )
Download