ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:789.66KB ,
资源ID:20500422      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20500422.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据库实验报告记录三DOCWord文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据库实验报告记录三DOCWord文档下载推荐.docx

1、(2)结果为:2. 针对SPJ数据库,创建并执行如下的存储过程:(共计35分)(1) 创建一个带参数的存储过程jsearch。该存储过程的作用是:当任意输入一个工程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME)以及工程的名称(JNAME)。执行jsearch存储过程,查询“J1”对应的信息。(10分)(1)存储过程为:create procedure jsearch(searchingfor_jno nchar(20)asbegin select J.JNAME,S.SNAME,P.PNAME from S,P,J,SPJ where SPJ.JNO = s

2、earchingfor_jno and SPJ.JNO=J.JNO and SPJ.SNO=S.SNO and SPJ.PNO=P.PNOEnduseSPJgo(2)执行存储过程如下:declare solution intexec solution = dbo.jsearchsearchingfor_jno = NJ1select solution = solution(3)结果:(2) 使用S表,为其创建一个加密的存储过程jmsearch。当执行该存储过程时,将返回北京供应商的所有信息。create procedure jmsearchwith encryption select * fr

3、om S where CITY = 北京end(3) 使用系统存储过程sp_helptext查看jsearch, jmsearch的文本信息。(1)当输入为:exec sp_helptext jsearch结果是:(2)当输入为:jmsearch(4) 执行jmsearch存储过程,查看北京供应商的情况。(1)执行存储过程:exec solution = dbo.jmsearch(5) 删除jmsearch存储过程。drop procedure jmsearch3. 针对Student数据库,创建和执行如下的触发器:(共计40分)(1) 删除SC表上的外键约束,针对SC表创建一个名为inser

4、t_s的INSERT触发器。该触发器的功能:当用户向SC表中插入记录时,如果插入的cno值不是C表中Cno的已有值,则提示用户“不能插入记录这样的纪录”,否则提示“记录插入成功”。触发器创建成功之后,向SC表插入记录,验证触发器是否正常工作。(1)创建触发器:use studentcreate trigger insert_son scafter insertif(exists(select * from inserted where cno != 1 or cno !236)begin print 不能插入记录这样的纪录rollback transactionelse记录插入成功(2)验证:

5、insert intosc(sno,cno,grade)values(95001588结果:(2) 为S表创建一个名为dele_s1的DELETE触发器,该触发器的作用是禁止删除S表中的记录。触发器创建成功之后,删除S表中的记录,验证触发器是否正常工作。create trigger dele_s1on safter delete不能删除表中纪录 当要删除表中记录时,出现如下图所示情况(3) 为S表创建一个名为dele_s2的DELETE触发器,该触发器的作用是删除S表中的记录时删除SC表中该学生的选课纪录。触发器创建成功之后,删除S表中的记录,验证触发器是否正常工作(SC表中的数据被正常删除)

6、。 (1)创建触发器:create trigger dele_s2for deletedelete from sc where sc.sno in ( select sno from deleted )(前提:删除触发器dele_s1,否则不能删除S表记录)delete from swhere s.sno=select * from sc 结果为:(4) 为S表创建一个名为update_s的UPDATE触发器,该触发器的作用是禁止更新S表中“sdept”字段的内容。触发器创建成功之后,更新S表中“sdept”字段的内容,验证触发器是否正常工作。create trigger update_saf

7、ter updateif update(sdept)raiserror(sdept不能被更改,10,1) 当要进行数据更改时,出现如下图所示情况: (5) 禁用update_s触发器。禁用之后,更新S表中的“sdept”字段的内容,验证触发器是否还继续正常工作。(1)禁用触发器:disable trigger update_s (2)验证: 已经将“MA”更改为“IS”,如下图所示:(6) 删除update_s触发器。drop trigger update_s(7) 创建一个新的课程成绩统计表 CAvgGrade(Cno, Snum, examSNum, avgGrade),分别表示课号,选该

8、课程的学生人数,参加考试人数,该门课程的平均成绩。利用触发器实现如下的功能:当SC表中有记录插入、删除或者更新时,自动更新表CAvgGrade。注意SC表中的grade为NULL时表明该学生还未参加考试,计算平均成绩时不需要计算该成绩,但是grade为0即考试成绩为0时,需要计算该成绩。(1)创建统计表CAvgGrade:create table CAvgGrade( cno char(10) primary key, snum int, examsnum int, avggrade float(2)创建触发器:create trigger upd_ins_dele_CAvgGradeafte

9、r update,insert,deletedeclare cno char(10)declare snum intdeclare examsum intdeclare avggrade intselect cno=cno from insertedselect cno=cno from deletedselect snum = COUNT (*) from sc where cno=cnoselect examsum = COUNT(*) from sc where cno=cno and grade=0select avggrade = AVG(grade) from sc where c

10、no=cno and gradeupdate CAvgGradesetsnum=snum,cno=cno,examsnum=examsum,avggrade=avggradewhere cno=cno (3)测试:A、(测试插入)insert into sc95005,88) (CAvgGrade表) (sc表) B、(测试删除)delete from scwhere cno=结果为: (sc表) C、(测试更改)update scset grade=99 结果为:4. 创建一个works数据库,其中包含员工表empoyee(eID, eName, salary),假设该表中有1000条员工数

11、据,完成下列要求(总计20分,每题10分)。(1) 为了协助本题自动生成1000条员工数据,创建一个自动生成员工ID的用户自定义函数generateEID。其中员工ID要求是一个8位的数字,前四位表示插入员工数据的当前年份,后四位按照从0001到9999的顺序增长。例如2015年插入的第一条数据是20050001,所有1000条员工ID分别是20150001-20151000。调用该函数实现自动插入1000条数据。(注意插入数据的时候员工姓名可以为任意值,工资是2000-5000之间的数字)(1)自定义:use workscreate procedure generateEIDdeclare

12、for intset for = 0while(for 1000)insert into employee values(20050001+for,name+CAST(for as NCHAR(20),2000+CAST(FLOOR(rand()*3001) as int)set for=for+1DECLARE return_value intEXEC return_value = dbo.generateEIDSELECT Return Value = return_valueGO (2)结果:(2) 该公司计划为员工按照一定的规则涨工资,请使用游标创建一个存储过程,执行该存储过程完成本次

13、工资调整:工资增长规则如下: 工资在3000元以下,每月涨300元; 工资在3000-4000元之间,每月涨200元; 工资大于或者等于4000元,每月涨50元; (1)语句如下:declare mycursor cursor for select salary from empoyeeopen mycursordeclare salary intfetch next from mycursor into salarywhile FETCH_STATUS=0if(salary3000)update empoyee set salary=salary+300 where current of m

14、ycursorelse if(salary4000)update empoyee set salary=salary+200 where current of mycursorupdate empoyee set salary=salary+50 where current of mycursorclose mycursordeallocate mycursor (2)结果如下:二、实验反思触发器是对表进行插入、更新、删除的时候会自动执行的特殊存储过程,本章学习的触发器类型是after触发器,即只有当执行update,delete,insert的时候这个触发器才会被使用到,触发器的使用为数据库

15、操作真的提供了很多便利。实验六:1. ODBC配置以及程序调试:(50分)(1) 配置一个ODBC数据源,要求数据源名称:student,其中包含s(学生信息)表。1、 设置属性:2、 更改默认数据库:3、 测试数据源:4、 测试成功:5、 结果为:(2) 阅读并运行实验给出的例子程序,理解ODBC编程,要求简单写出自己对这段程序的理解或者流程图,并且请给出程序运行结果示例图。一、对程序的流程的理解以下面的步骤展开:1、 定义句柄跟变量。其中句柄有环境句柄、连接句柄、语句句柄;2、 初始化环境(1) 分配环境句柄;(2) 设置管理环境属性;(3) 连接数据库。3、 建立连接(1) 分配连接句柄

16、;(2) 连接若失败则返回错误值。4、 初始化语句句柄。设置了语句选项。5、 执行语句(1) 预编译带有参数语句;(2) 预先声明插入语句;(3) 执行SQL语句。6、 处理结果集合的同时执行预编译后的语句。7、 中止处理(1) 释放语句句柄;(2) 释放环境句柄;(3) 断开连接。 二、运行结果: 点了“执行”之后:2. 参考给出的ODBC编程示例,使用ODBC技术,编写一个简单的程序,包含对数据库SPJ的连接,查询,插入,修改和删除。 (1)插入数据: 代码: insert into S values(刘鹏飞男1992-05-16IS (2)删除数据: delete from S where Sname = 3. 用JDBC实现对数据库student的连接,查询,插入,修改和删除。(选做实验) (3)数据的查询: ODBC 是一种使用SQL 的程序设计接口,这次实验主要就是利用ODBC编程,使用ODBC 让应用程序的编写者避免了与数据源相联的复杂性,很不错的一种技术,但是要利用C+程序编写时显得能力不足,因为涉及的方面太广了,语言很复杂,经过老师给的例子程序才勉强理解一些,后来看了很多博客才渐渐有一些眉目。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1