数据库数据查询实验报告和答案.doc_第1页
数据库数据查询实验报告和答案.doc_第2页
数据库数据查询实验报告和答案.doc_第3页
数据库数据查询实验报告和答案.doc_第4页
数据库数据查询实验报告和答案.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

韶 关 学 院学 生 实 验 报 告 册实验课程名称:数据库技术与应用实验项目名称:数据库的数据查询实验类型(打):(基础、综合、 设计 )院系: 专业班级: 姓名 学号: 指导老师: 韶关学院教务处编制一、实验预习报告内容 预习日期: 2013年 10 月 20日实验预习报告内容原则上应包含实验目的、实验所用主要仪器药品、实验原理与公式、实验预习疑问等项目。一、实验目的1、掌握使用Transact-SQL的SELECT语句进行基本查询的方法。2、掌握使用SELECT语句进行条件查询的方法。3、掌握SELECT语句的GROUP BY、ORDER BY以及UNION子句的作用和使用方法。4、掌握嵌套查询的方法。5、掌握连接查询的操作方法。二、实验准备1、了解SELECT语句的基本语法格式和执行方法。2、了解嵌套查询的表示方法。3、了解UNION运算符的用法。4、了解SELECT语句的GROUP BY、ORDER BY以及UNION子句的作用和使用方法。5、了解IN、JOIN等子查询的格式。6、了解INSERT、INTO、UPDATE、DELETE的格式与作用。三、实验内容1、完成上机实验指导中的实验4,并回答实验中的实验思考。(具体实验要求看上机实验指导书的911页,把实验步骤和Transact-SQL语句相关的内容和结果截图,填在“三、实验报告内容”中。并写一下实验小结。)实验预习评分:二、实验原始(数据)记录 实验时间:2013年10月22日(星期 二 第 七八 节) 实验同组人:如有实验数据表格,学生在实验预习时应画好实验数据表格,供实验时填写数据(本页如不够,可另附相同规格的纸张)。指导教师批阅及签名 签名: 年 月 日三、实验报告内容 2013年 9月 24日 实验报告内容原则上应包含主要实验步骤、实验数据计算(实验操作)结果、实验结果(疑问)分析等项目。实施内容:一、根据实验要求完成实验:(写明步骤和截图)1、在数据库studentsdb中,新建表studentdb_info,curriculum,grade。并输入相应的数据,如图1、2和3所示。图1图2图32、在studentsdb数据库中,使用下列SQL语句将输出什么?(1)select count(*) from grade结果如图4所示:图4(2) select substring(学生姓名,1,2)from student_info结果如图5所示:图5(3)select upper (kelly)结果如图6所示:图6(4)select replicate (kelly,3)结果如图7所示:图7(5)select sqrt(分数) from gradewhere 分数=85结果如图8所示:图8(6)select 2,3, power(2,3)结果如图9所示:图9(7)select year(getdate()),month(getdate(),day(getdate()结果如图10所示:图102、在studentsdb数据库中使用select语句近基本查询。(1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。执行如下语句:select 学号,学生姓名,出生日期 from student_info结果如图11所示图11(2)查询学号为0002的学生的姓名和家庭住址执行如下语句:select 学生姓名,家庭地址 from student_infowhere 学号=0002结果如图12所示图12(3)找出所有男同学的学号和姓名。执行如下语句:select 学号,学生姓名 from student_infowhere 性别=男结果如图13所示图133、使用select语句进行条件查询。(1)在grade表中查找分数在8090范围内的学生的学号和分数。执行如下语句:select 学号,分数 from gradewhere 分数 between 80 and 90结果如图14所示图14(2)在grade表中查询课程编号为0003的学生的平均分。执行如下语句:select avg(分数)as 平均成绩 from gradewhere 课程编号=0003结果如图15所示图15(3)在grade表中查询学习各门课程的人数。执行如下语句:select 课程编号, count (课程编号) as 课程人数 from grade group by 课程编号结果如图15所示图15(4)将学生按出生日期由大到小排序。执行如下语句:select * from student_info order by 出生日期 desc结果如图16所示图16(5)查询所有姓“张”的学生的学号和姓名。执行如下语句:select * from student_info where 学生姓名 like 张%结果如图17所示图174、嵌套查询(1)在student_info表中查找与“刘卫民”性别相同的所有学生的姓名、出生日期。执行如下语句:select 学生姓名,出生日期 from student_infowhere 性别=(select 性别 from student_info where 学生姓名=刘卫平)结果如图18所示图18(2)使用in子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。执行如下语句:select 学号,学生姓名,性别 from student_infowhere student_info.学号 in (select 学号 from grade where 课程编号 in (0002,0005) )结果如图19所示图19(3)列出学号为0001的学生的分数比0002号学生的最低分数高的课程编号和分数。执行如下语句:select 课程编号,分数 from gradewhere 学号=0001 and 分数any(select 分数 from grade where 学号=0002)结果如图20所示。图20(4)列出学号为0001的学生的分数比学号为0002的学生的最高成就还要高的课程编号和分数。执行如下语句:select 课程编号,分数 from gradewhere 学号=0001 and 分数all(select 分数 from grade where 学号=0002)结果如图21所示。图215、多表查询(1)查询分数在8090范围内的学生的学号、姓名、分数。执行如下语句:select student_info.学号,学生姓名,分数 from student_info,gradewhere student_info.学号=grade.学号 and 分数 between 80 and 90结果如图22所示图22(2)、查询学习“C语言程序设计”课程的学生的学号、姓名和分数。执行如下语句:select student_info.学号,学生姓名,分数 from student_infoinner join grade on student_info.学号=grade.学号inner join curriculum on grade.课程编号=curriculum.课程编号 and 课程名称=C语言程序设计结果如图23所示。图23(3)查询所有男同学的选课情况,要求列出学号、姓名、课程名称、分数。执行如下语句:select student_info.学号,学生姓名,课程名称,分数from student_info left outer join grade on student_info.学号=grade.学号left outer join curriculum on curriculum.课程编号=grade.课程编号where 性别=男结果如图24所示图24(4)在查询每个学生的所选课程的最高成绩,要求列出学号、姓名、课程编号、分数。执行如下语句。select student_info.学号, 学生姓名,curriculum.课程编号,分数from student_infoinner join grade on student_info.学号=grade.学号inner join curriculum on grade.课程编号=curriculum.课程编号where 分数=(select max(grade.分数)from grade where student_info.学号=grade.学号)结果如图25所示图25(5)查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有没有选修课程的学生的总成绩为空。执行如下语句:select student_info.学号,学生姓名,总成绩from student_info left outer join (select 学号,sum(分数)as 总成绩 from grade group by 学号)grade on student_info.学号=grade.学号结果如图26所示图26(6)为grade表添加数据行:学号0004、课程编号为0006、分数为76。查询所有课程的选课情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。执行如下语句:insert gradevalues(0004,0006,76,null)select grade.课程编号,课程名称,grade.选修人数 from curriculum right outer join(select 课程编号,count(课程编号)as 选修人数 from grade group by 课程编号)grade on grade.课程编号=curriculum.课程编号结果如图27所示图276、使用union运算符将student_info表中姓“张”的学生的学号、姓名与curriculum表的课程编号、课程名称返回在一个表中,且列名为u_编号、u_名称。执行如下语句:select 学号 as u_编号,学生姓名 as u_名称 from student_infowhere 学生姓名 like 张%unionselect 课程编号 as u_编号,课程名称 as u_名称 from curriculum结果如图28所示图287、数据更新(1)创建totalgrade表,具有数据列:学号、姓名、总成绩。执行如下语句:create table totalgrade(学号 char(4) not null, 学生姓名 varchar(8) null, 总成绩 decimal(5,2)null)结果如图29所示图29(2)使用insert into语句通过student_info表更新totalgrade表的学号、姓名列数据。执行如下语句:insert into totalgradeselect 学号,学生姓名,总成绩=0 from student_info结果如图30所示:图30(3)使用update语句通过grade表更新totalgrade表的总成绩列数据,使totalgrade表中每一个学生的总成绩为grade表中该学生各成绩之和。执行如下语句:update totalgrade set 总成绩=(select sum(分数)from grade where totalgrade.学号=grade.学号)from grade结果如图31所示:图31效果如图32所示图32(4)删除totalgrade表中没有总成绩的学生记录。执行如下语句:delete from totalgrade where 总成绩 is null结果如图33所示,效果如图34所示。 图33 图34实验思考1、查询所有没有选修课程的学生信息,返回结果包括学号、姓名、性别。执行如下语句:select 学号,学生姓名,性别 from student_infowhere 学号 not in( select 学号 from grade)结果如图35所示图352、在student_info表和grade表之间实现交叉连接。执行如下语句:select a.学号,a.学生姓名,a.性别,a.出生日期,a.家庭地址,b.课程编号,b.分数 from student_info a cros

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论