- •Часть 3
- •Часть 3-6. Обеспечение целостности данных Упражнение 1 – Создание новой таблицы и применение ограничений целостности
- •Упражнение 2 – отключение ограничений
- •Часть 3-7. Использование представлений Упражнение 1 – Создание представления
- •Упражнение 2 – создание индексированного представления
- •Упражнение 3 – просмотр системной информации о представлениях
- •Часть 3-8. Создание и использование хранимых процедур Упражнение 1 - Создание хранимой процедуры без параметров
- •Упражнение 2 – создание хранимой процедуры с параметром
- •Упражнение 3 – создание хранимой процедуры с параметрами и значениями по умолчанию
- •Часть 3-9. Создание udf
- •Упражнение 1 - Создание скалярной функции
- •Упражнение 2 - Создание функции, возвращающей табличное значение (I-l t-V udf)
- •Упражнение 3 - Контроль контекста выполнения
- •Часть 3-10. Управление транзакциями и блокировками
- •Упражнение 1 - Применение транзакций
- •Упражнение 2 - Выполнение отката транзакций
- •Упражнение 3 - Просмотр сведений о блокировках
- •Упражнение 4 - Настройка параметров блокировки
- •Часть 3-11. Создание триггеров
- •Упражнение 1 - Создание новой таблицы
- •Упражнение 2 - Создание триггера для таблицы
- •Упражнение 3 – Проверка работы триггера
- •Упражнение 4 – Создание триггера на обновление и вставку
МИНОБР НАУКИ РОССИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» им. В. И.УЛЬЯНОВА (ЛЕНИНА)» (СПбГЭТУ)
ФАКУЛЬТЕТ КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ И ИНФОРМАТИКИ
КАФЕДРА СИСТЕМ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ
ЛАБОРАТОРНЫЕ РАБОТЫ
по учебной дисциплине «Паттерны проектирования приложений»
на тему «Изучение основ T-SQL и программирование БД»
Часть 3
(Лабораторные 6-11)
Выполнили:
Ярославцева В.А.
Соловьёв С.П.
Группа: 9301
Факультет: КТИ
Преподаватель: Новакова Н.Е.
Санкт-Петербург
2012
Часть 3-6. Обеспечение целостности данных Упражнение 1 – Создание новой таблицы и применение ограничений целостности
В SQL для создания таблицы будет использована команда CREATETABLEкоторая будет содержать в себе названия столбцов и их типы, так же воспользуемся командойCHECK, которая устанавливает ограничения на столбцы.
Создали новую таблицу с именем HumanResources.JobCandidateHistory.
В ней должны содержаться следующие столбцы и ограничения:
- JobCandidateID тип данных int, не может содержать пустые значения, они должны быть уникальны;
-
Resume тип данных xml, может содержать пустые значения;
Rating тип данных int, не может содержать пустые значения. Диапозон 1…10, по умолчанию 5;
RejectedDate тип данных detimе, не может содержать пустые значения;
ContactID тип данных int , может содержать пустые значения, внешний ключ для столбца ContactID в таблице Person.Contact.
CREATE TABLE HumanResources.JobCandidateHistory
(
JobCandidateID int NOT NULL UNIQUE,
Resume XML NULL ,
Rating int DEFAULT 5 NOT NULL,
CHECK(Rating BETWEEN 1 AND 10),
RejectedDate datetime NOT NULL,
ContactID int NULL ,
FOREIGN KEY (ContactID) REFERENCES Person.Contact (ContactID),
UNIQUE (JobCandidateID));
FOREIGN KEYуказывает на то, что столбец является внешним ключом.
Проверили результат, убедившись что данная таблица есть в списке. Все столбцы и ограничения присутствуют.
Рис. 1
Проверили таблицу и ограничения.
Запустили на выполнение следующий код:
-- This should fail
USE AdventureWorks
TRUNCATE TABLE [HumanResources].[JobCandidateHistory]
GO
USE AdventureWorks
INSERT INTO [HumanResources].[JobCandidateHistory]
VALUES
(1,
'<ns:Resume xmlns:ns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume">
<ns:ResumeData></ns:ResumeData>
</ns:Resume>'
,-1
,GETDATE()
,1)
TRUNCATE TABLE [HumanResources].[JobCandidateHistory]
GO
Рис. 2
Операция INSERTзавершилась ошибкой, поскольку значениеRatingпротиворечит ограничениюCHECK.
Запустили на выполнение еще один код:
-- This should succeed
USE AdventureWorks
INSERT INTO [HumanResources].[JobCandidateHistory]
VALUES
(1,
'<ns:Resume xmlns:ns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume">
<ns:ResumeData></ns:ResumeData>
</ns:Resume>'
,6
,GETDATE()
,1)
TRUNCATE TABLE [HumanResources].[JobCandidateHistory]
GO
Рис. 3
Запрос был выполнен успешно.
Упражнение 2 – отключение ограничений
Для отключения ограничений выполнили следующие команды:
GO
ALTER TABLE HumanResources.JobCandidateHistory
NOCHECK CONSTRAINT [CK__JobCandid__Ratin__4CC05EF3]
GO
ALTER TABLE HumanResources.JobCandidateHistory
NOCHECK CONSTRAINT [DF__JobCandid__Ratin__4BCC3ABA]
GO
То есть мы сняли заданные нами ограничения.
Открыли файл InserTtestData.sql
Теперь опять включаем ограничения, выполнив следующие команды:
GO
ALTER TABLE HumanResources.JobCandidateHistory
CHECK CONSTRAINT [CK__JobCandid__Ratin__4CC05EF3]
GO
ALTER TABLE HumanResources.JobCandidateHistory
CHECK CONSTRAINT [DF__JobCandid__Ratin__4BCC3ABA]
GO
Убедились в успешном выполнении команд
Рис. 4