您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 数据库应用实验报告视图存储过程触发器等的建立与维护
内蒙古工业大学信息工程学院实验报告课程名称:数据库应用实验名称:视图存储过程触发器等的建立与维护实验类型:验证性□综合性□设计性□实验室名称:班级:学号:姓名:组别:同组人:成绩:实验日期:预习报告成绩:指导教师审核(签名):年月日预习报告一、实验目的1.学会使用企业管理器建立视图,应用视图插入、删除、修改数据;2.掌握存储过程的使用方法;3.掌握触发器的使用方法。二、实验内容此实验是综合视图、存储过程、触发器等知识应用的一个综合性实验。实验要求:1.利用所创建的数据库和数据表,综合应用视图、存储过程、触发器等知识完善数据库;2.掌握应用更新视图数据可以修改基本表数据的方法;3.熟练掌握添加、修改、删除记录的存储过程的定义及调用;4.掌握通过触发器来实现数据的参照完整性。实验内容要求:利用员工管理数据库YGGL中3个表:Employees:员工自然信息表、Departments:部门信息表、Salary:员工薪水情况表。(1)利用YGGL各表建立视图实现各种连接查询。建立视图view1,查询所有职工的员工编号、姓名、部门名和收入,并按部门名顺序排列。建立视图view2,查询所有职工的员工编号、姓名和平均工资。建立视图view3,查询各部门名和该部门的所有职工平均工资。(2)编写对YGGL各表进行插入、修改、删除操作的存储过程,然后编写程序,调用这些存储过程。创建一个为Employees表添加员工记录的存储过程addEmployees。创建一个存储过程delEmployees删除Employees表中指定员工编号的记录。(3)对于YGGL数据库,请用触发器实现两个表间的参照完整性。在表Departments上创建一个触发器Departments_update,当更改部门编号时同步更改Employees表中对应的部门编号。在表Employees上创建一个触发器Employees_delete,当删除员工记录时同步删除salary表中对应的工资收入记录。参考实例步骤:1.创建视图(1)班级表(U_CLASSES):ID含义为班号,CLASS含义为班名,DEPARTMENT含义为所在系,各字段类型按需要设置是否允许为空,ID字段被设置为主键。(2)成绩表(U_SCORES):STUDENT_ID含义为学号,COURSE_ID含义为课程号,SCORE为成绩,各字段类型按需要设置是否允许为空,STUDENT_ID、COURSE_ID字段被设置为主键。(3)课程表(U_COURSES):COURSE含义为课程名称,ID含义为课程编号,CREDIT含义为课程学分。(4)学生表(U_STUDENTS),表结构如下:序号字段类型(长度)主键含义1IDchar(10)是学号2NAMEvarchar(16)姓名3CLASS_IDtinyint所在班级编号1.用企业管理器建立一个基于学生表、课程表、成绩表的视图,要求该视图显示学号、姓名、课程、成绩。1)启动企业管理器、注册、连接2)展开服务器、数据库、在视图上右击,在快捷菜单中执行新建视图(V)...3)在新视图窗口内的关系图窗格内右击鼠标,弹出的菜单即为视图设计菜单,执行添加表(B)...4)再在添加表对话框中选择U_SCORES表,再单击添加按钮。5)依此操作,分别添加U_STUDENTS、U_COURSES表,单击关闭按钮。6)再在关系窗格内,拖动U_STUDENTS表的ID至U_SCORES的STUDENT_ID,拖动U_COURSES表的ID至U_SCORES的COURSE_ID,再分别选中U_STUDENTS表的ID,NAME列(列前的复选框),U_COURSES表的COURSE列以及U_SCORES表的SCORE列,然后单击!按钮,显示视图结果。7)单击保存按钮,将视图保存为V_SCORES,单击确定。2.用查询分析器建立一个基于学生表、班级表的学生视图(V_STUDENTS),包括学号、姓名、班级、系,SQL语句如下:1)CREATEVIEWdbo.V_STUDENTSASSELECTdbo.U_STUDENTS.ID,dbo.U_STUDENTS.NAME,dbo.U_CLASSES.CLASS,dbo.U_CLASSES.DEPARTMENTFROMdbo.U_STUDENTSINNERJOINdbo.U_CLASSESONdbo.U_STUDENTS.CLASS_ID=dbo.U_CLASSES.ID3.自己写一个SQL语句建立一个基于课程表的视图(V_COURSES),要求显示课程编号、课程名、学分。2.创建存储过程在查询分析器编辑窗口输入各存储过程的代码并执行以下程序。(1)添加职员记录的存储过程EmployeeAdd:USEYGGLGOCREATEPROCEDUREEmplo)reeAdd(@employeeidchar6),@namechar(10),@birthdaydatetime,@sexbit,@addresschar(20),@zipchar(6),@phonenumberchar(12),@emailaddresschar(20),@departmenflDchar(3))ASBEGININSERTINTOEmployeesVALUES(@employeeid,@name,@birthday,@sex,@address,@zip,@phonenumber,@emailaddress,@departmentlD)ENDRETURNGO(2)修改职员记录的存储过程EmployeeUpdate:USEYGGLGOCREATEPROCEDUREEmployeeUpdate(@empidchar(6),@employeeidchar(6),@namechar(10),@birthdaydatetime,@sexbit,@addresschar(20),@zipchat(6),@phonenumberchar(12),@emailaddresschar(20),@departmentlDchar(3))ASBEGINUPDATEEmployees‘SETEmployeeid=@employeeid,Name=@name.Birthday=@birthday,Sex=@sex,Address=@address.Zip=@zip,Phonenumber=-@phonenumber,Emailaddree=@emailaddress.DepartmentD=@departmenflDWHEREEmployeeid=@empidENDRETURNGO(3)删除职员记录的存储过程EmployeeDelete:USEYGGLGOCREATEPROCEDUREEmployeeDelete(@employeeidchar(6))ASBEGINDELETEFROMEmployeesWHEREEmployeeid=@employeeidENDRETURNG03.调用存储过程USEYGGLEXECEmployeeAdd’990230’,’刘朝’,’890909’,1,’武汉小洪山5号’,”,”,”,’3’GOUSEYGGLEXECEmployeeupdate’990230’,’990232’,’刘平’,’890909’,1,’武汉小洪山5号’,”,”,”,’2’GOUSEYGGI,EXECEmployeeDelete’990232’GO分析一下此段程序执行时可能出现哪几种情况。【思考与练习】编写如下T-SQL程序:(1)自定义1个数据类型,用于描述YGGL数据库中的DepartmentlD字段,然后编写代码重新定义数据库各表。(2)编写对YGGL各表进行插入、修改、删除操作的存储过程,然后,编写l段程序调用这些存储过程。(3)对于YGGL数据库,表Employees的EmployeelD列与表Salary的EmployeelD列应满足参照完整性规则,请用触发器实现两个表问的参照完整性。4.创建触发器对于YGGL数据库,表Employees的DepartmentID列与表Departments的DepartmentID列对应满足参照完整性规则,即:(1)向Employees表添加1条记录时,该记录的DepartmentID值在Departments表中应存在。(2)修改Departments表DepartmentID字段值时,该字段在Employees表中的对应值也应修改。(3)删除Departments表中1条记录时,该记录DepartmentID字段值在Employees表中对应的记录也应删除。对于上述参照完整性规则,在此通过触发器实现。在查询分析器编辑窗口输入各触发器的代码并执行:①向Employees表插入或修改1条记录时,通过触发器检查记录的DepartmentID值在Departments表是否存在,若不存在,则取消插入或修改操作。USEYGGLGOCREATETRIGGEREmployeesInsondbo.EmployeesFORINSRET,UPDATEASBEGINIF((SELECTins.departmentidfrominsertedins)NOTIN(SELECTdepartmentidFROMdepartments))ROLLBACK/*对当前事务回滚,即恢复到插入前的状态END②修改Departments表departmentID字段值时,该字段在Employees表中的对应值也进行相应修改。USEYGGLGOCREATETRIGGERDepartmentsUpdateondbo.DepartmentsFoRUPDATEASBEGINIF(COLUMNS_UPDATED()&01)0UPDATEEmployeesSETDepartmentlD=(SELECTins.DepartmentlDfromINSERTEDins)WHEREDepaxtmentlD=(SELECTDepartmentlDFROMdeleted)ENDGO③删除Departments表中1条记录的同时删除该记录departmentlD字段值在Employees表中对应的记录。USEYGGLGOCREATETRIGGERDepartmentsDeleteOndb.DepartmentsFORDELETEASBEGINDELETEFROMEmployeesWHEREDepartmentlD=(SELECTDepartmentlDFROMdeleted)ENDGO【思考与练习】上述触发器的功能用完整性的方法完成。【思考与练习】编写如下T-SQL程序:(1)自定义1个数据类型,用于描述YGGL数据库中的DepartmentlD字段,然后编写代码重新定义数据库各表。(2)对于YGGL数据库,表Employees的EmployeelD列与表Salary的EmployeelD列应满足参照完整性规则,请用触发器实现两个表间的参照完整性。实验报告成绩:指导教师审核(签名):年月日实验报告1.添加职员记录的存储过程EmployeeAdd:2.修改职员记录的存储过程EmployeeUpdate:3.删除职员记录的存储过程EmployeeDelete4.调用存储过程5.向Employees表插入或修改1条记录时,通过触发器检查记录的DepartmentID值在Departments表是否存在,若不存在,则取消插入或修改操作。6.修改Departments表departmentID字段值时,该字段在Employees表中的对应值也进行相应修改。7.删除Departments表中1条记录的同时删除该记录departmentlD字段值在Employees表中对应的记录
本文标题:数据库应用实验报告视图存储过程触发器等的建立与维护
链接地址:https://www.777doc.com/doc-6041475 .html