Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРСОВАЯ РАБОТА по СУБД MS SQL 9 вариант.doc
Скачиваний:
480
Добавлен:
01.03.2016
Размер:
2.96 Mб
Скачать

3.5. Создание фильтров

На основе запроса " Запрос звание+сотрудник " создадим фильтры, отображающие следователей по установленному званию.

Рис. 3.5.1. Окно созданных представлений

Для того чтобы создать фильтр, нужно установить критерий отбора записей. Пусть наш фильтр отображает только следователей имеющих звание "капитан". В строке "звание", в столбце "Filter" задаю следующее условие отбора ='Капитан'. (рис. 3.5.2.).

Рис. 3.5.2. Окно выбранных представлений

Настроим сортировку записей в фильтре. После установки сортировки записей в фильтре проверим его работоспособность, выполнив его. Результат выполнения фильтра должен выглядеть как на рис. 3.5.2.

В режиме SQL запрос выглядит так:

SELECT ФИО, должность, звание

FROM dbo.[звание+сотрудник]

WHERE (звание = 'Капитан')

Рис. 3.5.3. Проверка работоспособности фильтра

В режиме скрипта SQL запрос выглядит так (как показано на рис. 3.5.4)

Рис. 3.5.4. Окно фильтра "фильтр_звание" через скрипт

SET QUOTED_IDENTIFIER ON

GO

CREATE VIEW [dbo].[фильтр_звания]

AS

SELECT ФИО, должность, звание

FROM dbo.[звание+сотрудник]

WHERE (звание = 'Капитан')

GO

3.6. Создание триггеров

Создадим триггеры для таблицы "следователь". (рис. 3.6.1.).

Рис. 3.6.1. Вид создания триггеров

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

Появится следующее окно с новым триггером (рис. 3.6.2):

Рис. 3.6.2. Окно структуры триггера

В окне нового триггера наберём код как показано на рис. 3.6.3.

Рис. 3.6.3. Окно создания триггера в SQL запросе

Выполним набранный код.

В режиме скрипта SQL запрос выглядит так:

CREATE TRIGGER [dbo].[Индикатор добавлення в следователь]

ON [dbo].[следователь]

AFTER INSERT

AS

BEGIN

SET NOCOUNT ON;

PRINT 'Запись добавлена'

END

3.7. Создание пользовательских функций

Создадим ункцию отбора по возрасту" (рис. 3.7.1)

Рис. 3.7.1 Вид создания функций

В окне новой функции наберём код как показано на рис. 3.7.2.

Рис. 3.7.2. Окно создания функций в SQL запросе

Из рис. 3.7.1 видно, что создаваемая функция "Функция отбора по возрасту" выполняется после записи ввода всей записи представленной в данной окне.

Данная функция будет считать сколько лет следователю, находящемся в базе данных «уголовное_дело». Проверяю создалась ли функция.(рис. 3.7.3).

Рис. 3.7.3.

Появится следующее окно. (рис. 3.7.4):

Рис. 3.7.4. dbo.Функция отбора по возрасту

В режиме скрипта SQL запрос выглядит так:

CREATE FUNCTION [dbo].[Функция отбора по возрасту]

(

-- Add the parameters for the function here

)

RETURNS TABLE

AS

RETURN

(

SELECT ФИО, [дата_рождения], Возраст = DateDiff(yy, [дата_рождения], GetDate()) FROM следователь

)

Просмотрим созданную функцию через запрос. (рис. 3.7.5)

Рис. 3.7.5. Окно созданных функций

Добавим запрос ункцию отбора по возрасту".

Появится окно конструктора запросов (рис. 3.7.6).

Рис. 3.7.6. Окно выбранной функции

Определим поля, отображаемые при выполнении запроса. Определим отображаемые поля нашего запроса, как это показано на рис. 3.7.6, отобразим поле "ФИО" и "Возраст".

Проверим запрос на работоспособность и сохраняем его. Результат выполнения запроса появиться в виде таблицы в области результата (рис. 3.7.7).

Запрос появится в папке "Views" БД "уголовное_дело" в обозревателе объектов (рис. 3.7.7).

Рис. 3.7.7. Проверка созданной функции

Проверим работоспособность созданного запроса вне конструктора запросов. Результат представлен на рис. 3.7.7.

Данный запрос при выполнении дает информацию возраст следователю.

В режиме SQL запрос выглядит так:

SELECT TOP (100) PERCENT ФИО, Возраст

FROM dbo.[Функция отбора по возрасту]() AS [Функция отбора по возрасту_1]

ORDER BY ФИО, Возраст DESC

В режиме скрипта SQL запрос выглядит так (как показано на рис. 3.7.8.)

Рис. 3.7.8. Окно функции "Function Возраст_следователя" через скрипт

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE VIEW [dbo].[Возраст_следователя]

AS

SELECT TOP (100) PERCENT ФИО, Возраст

FROM dbo.[Функция отбора по возрасту]() AS [Функция отбора по возрасту_1]

ORDER BY ФИО, Возраст DESC

GO