SELECT kod_job AS код_должности FROM dbo.worker,dbo.job where (select COUNT(dbo.job.kod_job) from dbo.job WHERE dbo.worker.job=dbo.job.kod_job)=1 GROUP BY kod_job --Хранимые процедуры --1. Какую должность занимает каждый сотрудник. go Create procedure doljnost_sotrudnika as Select dbo.worker.worker_name, dbo.job.job_name From dbo.worker, dbo.job where dbo.worker.job=dbo.job.kod_job go Exec doljnost_sotrudnika --2. список обьектов отремонтированных в конкретную дату go create procedure act @r date as Select dbo.os_object.os_object_kod, dbo.act_PS.sign_date,dbo.act_PS.finish_date, dbo.act_PS.result From dbo.os_object,dbo.act_PS where dbo.act_PS.result=dbo.os_object.os_object_kod and sign_date=@r go exec act'2011.03.12' --3. По табельному номеру определить профессию GO CREATE PROCEDURE prof_vibran_sotryd12 @kod int AS SELECT kod_worker,worker_name,job_name FROM dbo.worker, dbo.job WHERE dbo.worker.job= dbo.job.kod_job and dbo.worker.kod_worker=@kod go EXEC prof_vibran_sotryd12 @kod=4004 --4. Возвращает должность по коду сотрудника Go Create procedure work AS Select dbo.worker.kod_worker,dbo.job.kod_job From dbo.worker,dbo.job where dbo.worker.kod_worker=dbo.job.kod_job Go Exec work --5. Возвращает код должности и ФИО по табельному номеру GO CREATE PROCEDURE koddol @TAB_N int AS SELECT dbo.job.kod_job,kod_worker,worker_name FROM dbo.job,dbo.worker WHERE dbo.worker.job=dbo.job.kod_job and dbo.worker.kod_worker=@TAB_N go EXEC koddol @TAB_N=4006 --6. Возвращает табельный номер и ФИО по коду должности GO CREATE PROCEDURE n_fio @job int AS SELECT kod_worker,dbo.job.kod_job,worker_name FROM dbo.worker,dbo.job WHERE dbo.worker.job=dbo.job.kod_job and dbo.job.kod_job=@job go EXEC n_fio @job=4 --7. Возвращает номер акта по коду всех отремонтированных обьектов Go Create procedure nact AS Select dbo.act_PS.act_number,dbo.os_object.os_object_kod From dbo.act_PS,dbo.os_object where dbo.act_PS.act_number=dbo.os_object.os_object_kod Go Exec nact --8. Показать данные о акта GO CREATE PROCEDURE actsigndate @actn_N int AS SELECT act_number,response_person,result FROM dbo.act_PS,dbo.worker,dbo.os_object WHERE dbo.act_PS.response_person=dbo.worker.worker_name and dbo.act_PS.result=dbo.os_object.os_object_name and dbo.act_PS.act_number=@actn_N go EXEC actsigndate @actn_N=6001 --9. Показать табельный номер и код должности GO CREATE PROCEDURE koddponworker @worker_N int AS SELECT kod_worker,kod_job FROM dbo.worker,dbo.job WHERE dbo.worker.job=dbo.job.kod_job and dbo.worker.kod_worker=@worker_N EXEC koddponworker @worker_N=4002 --10. Возвращает табельный номер и ФИО по квалификации GO CREATE PROCEDURE kvalif_trebyem @kval_tred varchar (50) AS SELECT kod_worker,worker_name FROM dbo.worker,dbo.job WHERE dbo.worker.job=dbo.job.kod_job and dbo.job.job_name=@kval_tred go EXEC kvalif_trebyem @kval_tred='прораб' --Триггеры --1.При добавлении новой записи выводит сообщение:"В таблицу Должности внесена новая запись!" Use build2 go Create trigger dobavlenie On dbo.job For insert as print 'В таблицу Должности внесена новая запись!' go Insert into dbo.job values(9,'уборщик') --2.При удалении записи выводит сообщение: "Из таблицы Должности удалена запись!" go Create trigger udalenie On dbo.job For delete as print 'Из таблицы Работник удалена запись!' go delete from dbo.job where kod_job=3 --3.При изменении таблицы выводит сообщение:"Таблица Должности изменена!" go Create trigger izmenenie On dbo.job For update as print 'Таблица Должности изменена!' go Update dbo.job set job_name=('сантехник') where kod_job=9 --Представления --1. Выводит таблицу Работник и заполняет в ней столбцы Наименование должности и Наименование структурного подразделения, соответственно из таблиц Должность и Структурное подразделение. Use build2 go create view [kod_worker_job] as select kod_worker as "Код сотрудника", worker_name as "ФИО", kod_job as "Должность" From dbo.worker,dbo.job where dbo.worker.job=dbo.job.kod_job --2. Выводит таблицу затраты и заполняет в ней столбцы тип работ и Обьект ОС. go create view [zatrat] as Select kod_zatrat, os_object, work_type, adittion From dbo.money_lost,dbo.service, dbo.os_object where dbo.money_lost.work_type=dbo.service.service_kod and dbo.money_lost.os_object=dbo.os_object.os_object_kod Заключение Данная база данных и объекты, входящие в нее, такие как: запросы, хранимые процедуры, триггеры, представления автоматизируют работу предприятия с информацией, позволяя эффективно ее хранить, накапливать и использовать. В связи с этим сокращается количество ошибок, которые характерны при работе с бумажными документами, а так же уменьшает время их обработки. Список используемой литературы 1. Петкович Д. Microsoft SQL Server 2008. Руководство для начинающих. Пер. с англ. – СПб.: БХВ - Петербург, 2009. – 752 с.: ил. 2. Дунаев В.В. Базы данных язык SQL – СПб.: БХВ Петербург, 2006. – 288с. |