版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上淮海工学院计算机工程学院实验报告书课程名: 数据库原理及应用 题 目: T-SQL高级应用 班 级: 软件132 学 号: 姓 名: 孙莹莹 评语:成绩: 指导教师: 批阅时间: 年 月 日专心-专注-专业一 目的与要求1. 掌握复杂查询的使用方法;2. 掌握多表连接的方法;3. 掌握SELECT语句在多表查询中的应用。4. 掌握数据汇总、外连接查询的使用方法;5. 掌握事务定义的一般方法二 实验内容1 给出教材14-16的程序运行结果。2 编写程序,查询“1033”班的最高分的学生的学号、姓名、班号、课程号和分数。3 编写程序,创建一个新表,包含所有学生的姓名、课程
2、名和分数,并以姓名排序。4 编写程序,输出每个班最高分的课程名和分数。5 在上次实验建立的factory数据库的基础上,完成如下各题:l 删除factory数据库上各个表之间建立的关系;l 显示各职工的工资记录和相应的工资小计。l 按性别和部门名的所有组合方式列出相应的平均工资。l 在worker表中使用以下语句插入一个职工记录:insert into worker values(20,陈立,女,55/03/08,1,75/10/10,4),在depart表中使用以下语句插入一个部门记录:insert into depart values(5,设备处)。再对worker和depart表进行全外
3、连接显示职工的职工号,姓名和部门名。然后删除这两个插入的记录。l 显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。l 显示最高工资的职工所在的部门名。l 显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。l 先显示worker表中的职工人数,开始一个事务,插入一个职工记录,再显示worker表中的职工人数,回滚该事务,最后显示worker表中的职工人数。三 实验步骤删除factory数据库上各个表之间建立的关系的操作步骤如下: 启动SQL Server管理控制器。 在“对象资源管理器”中展开LCB-PC服务器节点。 展开“数据库”节点。 选中,将其展开。 展开“数据库关系
4、图”节点。 选中dbo.Diagram_1,右击,在出现的快捷菜单中选择“修改”命令,如图5.1所示。 在数据库关系图中,选择表示要从关系图中删除的关系的连接线(对于两条连线均进行的操作)。 右击关系线,从快捷菜单中选择“从数据库中删除关系”命令。 出现一个消息框,提示确认删除。单击“是”按钮。 在出现的对话框中单击“是”按钮保存所做的修改。这样就将worker表和depart表以及worker表和salary表之间的关系删除了。四 测试数据与实验结果第1-14题图第1-15题图第1-16题图第2题图第3题图第4题图图5.1第5-2题图第5-3题图第5-4题图第5-5题图第5-6题图第5-7题
5、图第5-8题图第5-9题图第5-10题图五 结果分析与实验体会在FROM子句中指定连接条件,有助于将这些连接条件与WHERE子句中的其他搜索条件分开,指定连接时建议使用这种方法。如果某个表只出现在子查询中而不出现在外部查询中,那么该表中的列就无法包含在输出中(外部查询的选择列表)。使用EXISTS引入的子查询在以下几方面与其他子查询略有不同:lEXISTS关键字前面没有列名,常量或其他表达式。l由EXISTS引入的子查询的选择列表通常都是由星号(*)组成。由于只是测试是否存在符合子查询中指定条件的行,所以不必列出列名。六 源码1use schoolselect 学号,课程号,分数from sc
6、orewhere 学号 in(103,105)order by 学号compute avg(分数) by 学号go2use schoolgoselect student.班号,course.课程名,avg(score.分数)as'平均分'from student,course,scorewhere student.学号=score.学号 and course.课程号=score.课程号group by student.班号,course.课程名 with cubego3use schoolgobegin transaction Mytran insert into teache
7、r values('999','张英','男','1960/03/05','教授','计算机系')save transaction Mytran insert into teacher values('888','胡丽','男','1982/08/04','副教授','电子工程系')rollback transaction Mytran commit transaction goselect * from
8、 teachergodelete teacher where 编号='999'go4use schoolselect student.学号,student.姓名,student.班号,score.课程号,score.分数from student,scorewhere 分数 in (select max(分数) from score where 班号='1033' and student.学号=score.学号)5USE schoolgoSELECT s.姓名,c.课程名,sc.分数INTO studFROM student s,course c,score sc
9、WHERE s.学号=sc.学号 and c.课程号=sc.课程号 and sc.分数 is not nullORDER BY s.姓名SELECT * FROM studGo6USE schoolGOSELECT 班号,课程名,MAX(分数) 分数FROM (SELECT s.学号,s.姓名,s.班号,c.课程名,sc.分数 FROM student s,course c,score sc WHERE s.学号=sc.学号 AND c.课程号=sc.课程号 AND 分数 IS NOT NULL) TGROUP BY 班号,课程名ORDER BY 班号GO7USE factoryGOSELEC
10、T worker.职工号,worker.姓名,salary.工资FROM worker,salaryWHERE worker.职工号=salary.职工号ORDER BY worker.职工号,worker.姓名COMPUTE SUM(salary.工资) BY worker.职工号 GO8USE factoryGOSELECT worker.性别,depart.部门名,AVG(salary.工资) AS '平均工资'FROM worker,depart,salaryWHERE worker.职工号=salary.职工号 AND worker.部门号=depart.部门号GRO
11、UP BY worker.性别,depart.部门名 WITH CUBE GO9USE factoryGOINSERT INTO worker VALUES('20','陈立','女','55/03/08',1,'75/10/10',4)GOINSERT INTO depart VALUES(5,'设备处')GOSELECT worker.职工号,worker.姓名,depart.部门名FROM worker FULL JOIN departON(worker.部门号=depart.部门号)ORDE
12、R BY worker.职工号GODELETE FROM worker WHERE 职工号='20'GODELETE FROM depart WHERE 部门号=5GO10USE factoryGOSELECT worker.职工号,worker.姓名,depart.部门名,salary.日期,salary.工资FROM worker,depart,salaryWHERE worker.部门号=depart.部门号 AND worker.职工号=salary.职工号AND salary.工资= (SELECT MAX(工资) FROM salary)GO11USE factor
13、yGOSELECT 部门名FROM departWHERE 部门号= (SELECT 部门号 FROM worker WHERE 职工号= (SELECT 职工号 FROM salary WHERE 工资= (SELECT MAX(工资) FROM salary) ) )GO12USE factoryGOSELECT 职工号,姓名FROM workerWHERE 职工号 IN (SELECT 职工号 FROM salary GROUP BY 职工号 HAVING AVG(工资)<(SELECT AVG(工资) FROM salary) GO13USE factoryGOSET NOCOU
14、NT ON-声明变量DECLARE dname char(10)-声明游标DECLARE d_cursor CURSOR FOR SELECT 部门名 FROM depart WHERE 部门号= (SELECT 部门号 FROM worker WHERE 职工号= (SELECT 职工号 FROM salary WHERE 工资= (SELECT MAX(工资) FROM salary) ) )-打开游标OPEN d_cursor-提取第一行数据FETCH NEXT FROM d_cursor INTO dname-打印表标题PRINT '部门名'PRINT '-
15、39;WHILE FETCH_STATUS = 0BEGIN -打印一行数据 PRINT dname -提取下一行数据 FETCH NEXT FROM d_cursor INTO dnameEND-关闭游标CLOSE d_cursor-释放游标DEALLOCATE d_cursorGO14USE factoryGOSET NOCOUNT ON-声明变量DECLARE no int,name char(10)-声明游标DECLARE w_cursor CURSOR FOR SELECT 职工号,姓名 FROM worker WHERE 职工号 IN (SELECT 职工号 FROM salary
16、 GROUP BY 职工号 HAVING AVG(工资)<(SELECT AVG(工资) FROM salary)-打开游标OPEN w_cursor-提取第一行数据FETCH NEXT FROM w_cursor INTO no,name-打印表标题PRINT '职工号 姓名'PRINT '-'WHILE FETCH_STATUS = 0BEGIN -打印一行数据 PRINT CAST(no AS char(8)+name -提取下一行数据 FETCH NEXT FROM w_cursor INTO no,nameEND-关闭游标CLOSE w_cursor-释放游标DEALLOCATE w_cursorGO15USE factoryGODECLARE num intSELECT num=COUNT(*) FROM workerPRINT '原职工人数:'+CAST(num AS CHAR(3) GODECLARE num intBEGIN TRANSACTION -启动事务-插入一个职工记录 INSERT INTO worker VALUES(20,'陈立','女','55/03/08
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理实践操作标准讲义
- 因数和倍数(教学设计)-2025-2026学年五年级下册数学人教版
- 传染病护理案例分析
- 2025-2026学年托班思维能力教学设计
- 人教版四年级语文第五单元教学设计
- 2025-2026学年褶皱与断层教学设计
- 2026 年中职地球物理勘探技术(物探数据分析)试题及答案
- 2026 年中职地理(气候常识)试题及答案
- 2025-2026学年一下阅览室教学设计
- 2025-2026学年秋天的主题教案
- 林木种质资源精准鉴定-洞察与解读
- 连锁早餐店卫生管理制度
- 刑事图像技术
- 2026年七年级数学春季开学第一课
- 医疗质量与安全管理年度工作总结
- 集装箱焊接制度规范要求
- 医疗质量安全整顿自查报告及下一步整改措施
- 天赋测评活动策划方案(3篇)
- 第五范式-人工智能驱动的科技创新
- 高标准农田建设工程质量专项整治技术手册(2025年版)
- 乡村和城镇空间结构高中地理人教版必修二
评论
0/150
提交评论