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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据库查询SQL 实验报告.docx

1、数据库查询SQL 实验报告实 验 报 告课程名称: 数据库系统概论 学 院: 工程学院 专 业: 年 级: 班 级: 姓 名: 学 号: 指导教师: 年 月 日教务处 制实验名称: 数据库查询1时间:2015-11-26地点:三教205机房班组: 教 师 评 语成绩教师签名实验报告1 实验目的 1 熟悉数据库的交互式SQL工具。2 熟悉通过SQL对数据库进行单表查询、连接查询的操作。2 实验工具KingbaseES利用KingbaseES及其交互式查询工具ISQLW来熟悉SQL。3 实验内容和要求1.在实验二中建立数据库的基础上,完成课本例3.16-60的各种查询;2. 根据以下要求认真填写实

2、验报告,记录所有的实验用例。4 实验方法及步骤例3.16 /*查询全体学生的学号和姓名*/SELECT SNO, SNAME FROMS-C.STUDENT注意:SELECT SNO, SNAME FROM 这些的大小写随意,但是S-C.STUDENT必须是指定大小写,要是改变大小写则可以用S-C.student 加分号,引号会自动变红色. 在SQL语句中用 /* 注释内容 */注释。例3.17 查询全体学生的姓名、学号、所在系SELECT SNAME,SNO,SDEPT FROMS-C.STUDENT例3.18 查询全体学生的详细记录SELECT* FROMS-C.STUDENT例3.19

3、查询全体学生的姓名及其出生年份SELECT SNAME, 2014-Sage FROMS-C.STUDENT注意:因为2014-Sage在生成表格的时候出现了“?”无法显示,改错方法就是在2014-Sage后面直接加“空格键和别名”如在下题给它取别名WSELECT SNAME, 2014-Sage W FROMS-C.STUDENT例3.20 查询全体学生的姓名、出生年份和所在院系,要求用小写字母表示系名SELECT SNAME,YEAR OF BIRTH: ,2014-SAGE ,LOWER(SDEPT)FROMS-C.STUDENT指定别名:SELECT SNAME name,YEAR O

4、F BIRTH: birth,2014-SAGE birthday,LOWER(SDEPT) departmentFROMS-C.STUDENT例3.21 查询选修了课程的学生学号SELECT SNO FROMS-C.SC;注意:查询结果中有许多重复行,若想去掉重复,则指定DISTINCT。若没有指定,则默认为all。SELECT SNO FROMS-C.SC;等价于SELECT all SNO FROMS-C.SC;SELECT Distinct SNOFROMS-C.SC;例3.22 查询计算机科学系全体学生的名单SELECT SNAMEFROMS-C.STUDENTWHERE SDEPT

5、=CS;例3.23 查询所有年龄在20岁以下的学生姓名及其年龄SELECT SNAME,SAGeFROMS-C.STUDENTWHERE sage20;例3.24 查询考试成绩不及格的学生学号SELECT DISTINCT sno FROMS-C.SC WHERE grade60;这里使用了DISTINCT短语,当一个学生有多门课程不及格,他的学号也只列一次。这里表明没有学生不及格。例3.25 查询年龄在20-23岁之间的学生姓名、系别和年龄SELECT SNAME,SDEPT,SAGE FROMS-C.STUDENT WHERE sage BETWEEN 20 AND 23;例3.26查询年

6、龄不在20-23岁之间的学生姓名、系别和年龄SELECT SNAME,SDEPT,SAGE FROMS-C.STUDENT WHERE sage NOT BETWEEN 20 AND 23;例3.27 查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别SELECT SNAME,SsexFROMS-C.STUDENTWHERE sdept in (CS,MA,IS);例3.28查询既不是计算机科学系(CS)、数学系(MA)也不是信息系(IS)学生的姓名和性别SELECT SNAME,SsexFROMS-C.STUDENTWHERE sdept not in (CS,MA,I

7、S);例3.29 查询学号为200215121的学生的详细情况SELECT* FROMS-C.STUDENT WHERE SNO LIKE 200215121;例3.30 查询所有姓刘的学生的姓名、学号和性别SELECT sname,sno,ssex FROMS-C.STUDENT where sname like 刘%;注意:(百分号)代表任意长度(长度可以为0)的字符串。例3.31查询姓“欧阳”且全名为三个汉字的的学生的姓名SELECT sname FROMS-C.STUDENT where sname like 欧阳-;注意:_(下划线)代表任意单个字符例3.32 查询名字中第二个字为“

8、阳”的学生的姓名和学号SELECT sname,snoFROMS-C.STUDENTwhere sname like -阳%;例3.33查询所有不姓刘的学生的姓名、学号和性别SELECT sname,sno,ssexFROMS-C.STUDENTwhere sname not like 刘%;例3.34 查询DB_DESIGN课程的课程号和学分SELECT cno,ccreditFROMS-C.COURSEwhere Cname likeDB_DESIGN ESCAPE;SELECT cno,ccreditFROMS-C.COURSEwhere Cname=数据库例3.35查询以“DB_”开头

9、,且倒数第三个字符为i的课程的详细情况SELECT*FROMS-C.COURSEwhere Cname likeDB_%i_ _ESCAPE;例3.36 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生学号和相应的课程号。SELECT sno,cnoFROMS-C.SCwhere grade is null;例3.37 查询所以有成绩学生的学号和课程号SELECT sno,cnoFROMS-C.SCwhere grade is NOT null;例3.38 查询计算机科学系年龄在20岁以下的学生姓名SELECT snameFROMS-C.STUDENTwher

10、e SDEPT=CS AND SAGE2;例3.48 查询平均成绩大于等于80分的学生学号和平均成绩SELECT SNO,AVG(GRADE) FROM S-C.SC WHERE AVG(GRADE)=80 GROUP BY SNO;服务器消息: KingbaseES ServerERROR: 在WHERE子句中不能使用聚集函数SELECT SNO,AVG(GRADE) FROM S-C.SC GROUP BY SNO HAVING AVG(GRADE)=80;例3.49 查询每个学生及其选修课程的情况SELECT STUDENT.*,SC.* FROM S-C.STUDENT,S-C.SC

11、WHERE STUDENT.SNO=SC.SNO;例3.50 对例3.49用自然连接完成SELECT STUDENT.SNO,SNAME,SSEX,SAGE,SDEPT,CNO,GRADEFROM S-C.STUDENT,S-C.SC WHERE STUDENT.SNO=SC.SNO;例3.51 查询选修2号课程且成绩在90分以上的所有学生的学号和姓名SELECT STUDENT.sno,sname FROM S-C.STUDENT,S-C.SC WHERE STUDENT.SNO=SC.SNO AND SC.CNO=2AND SC.GRADE=90;例3.52 查询每一门课的间接先修课(即先

12、修课的先修课)SELECT FIRST.CNO,SECOND.CPNOFROM S-C.COURSE FIRST,S-C.COURSE SECOND WHERE FIRST.CPNO=SECOND.CNO;例3.53 外连接(每个学生的基本情况及其选课情况)SELECT STUDENT.SNO,SNAME,SSEX,SAGE,SDEPT,CNO,GRADEFROM S-C.STUDENT left outer join S-C.SC on (student.sno=sc.sno);/* 也可以使用USING 来去掉结果中重复的值*/SELECT STUDENT.SNO,SNAME,SSEX,S

13、AGE,SDEPT,CNO,GRADE FROM S-C.STUDENT left outer join S-C.SC USING(SNO);例3.54 查询每个学生的学号、姓名、选修的课程名及其成绩SELECT STUDENT.SNO,SNAME,CNAME,GRADE FROM S-C.STUDENT,S-C.SC,S-C.COURSE WHERE STUDENT.SNO=SC.SNO AND SC.CNO=COURSE.CNO;例3.55 查询与“刘晨”在同一个系学习的学生分步查询SELECT SDEPT FROM S-C.STUDENT WHERE SNAME=刘晨; /*确定“刘晨”

14、所在系名*/ SELECT SNO,SNAME,SDEPT FROM S-C.STUDENT WHERE SDEPT=CS;查询所有在CS系的学生法1. 嵌套查询 SELECT SNO,SNAME,SDEPT FROM S-C.STUDENT WHERE SDEPT in (SELECT SDEPT FROM S-C.STUDENT WHERE SNAME=刘晨);法 2.自身连接 SELECT S1.SNO,S1.SNAME,S1.SDEPT FROM S-C.STUDENT S1,S-C.STUDENT S2 WHERE S1.SDEPT=S2.SDEPT AND S2.SNAME=刘晨;

15、法3. 带有比较运算符的子查询 SELECT SNO,SNAME,SDEPT FROM S-C.STUDENT WHERE SDEPT=(SELECT SDEPT FROM S-C.STUDENT WHERE SNAME=刘晨);例3.56 查询选修了课程名为“信息系统”的学生学号和姓名SELECT SNO,SNAME /*3.最后在student关系中查询sno和sname*/FROM S-C.STUDENT WHERE SNO IN (SELECT SNO /*2.然后在SC关系中找出选修了3号课程的学生学号*/ FROM S-C.SC WHERE CNO IN (SELECT CNO /

16、* 1.首先在course关系中找出信息系统的课程,结果为3号*/ FROM S-C.COURSE WHERE CNAME=信息系统 ) );连接查询SELECT STUDENT.SNO,SNAME FROM S-C.STUDENT,S-C.SC,S-C.COURSEWHERE STUDENT.SNO=SC.SNO AND SC.CNO=COURSE.CNO AND COURSE.CNAME=信息系统;例3.57 查询每个学生超过他自己选修课程平均成绩的课程号SELECT SNO,CNO FROM S-C.SC xWHERE Grade=(select AVG(Grade) FROM S-C.

17、SC y WHERE y.sno=x.sno);注意:x是SC的别名,这题是相关子查询。求解相关子查询不能像求解不相关子查询那样一次将子查询求解出来,然后求解父查询。内层查询由于与外层查询有关,因此必须反复求值。例3.58 查询非计算机系中比计算机科学系任意一个学生年龄小的学生姓名和年龄SELECT SName,sage FROM S-C.STUDENTWHERE sageANY(select sage FROM S-C.student WHERE sdept=CS)AND SDEPTCS;聚集函数求法:SELECT SName,sage FROM S-C.STUDENTWHERE sage(

18、select MAX(sage) FROM S-C.student WHERE sdept=CS)AND SDEPTCS;例3.59查询非计算机系中比计算机科学系所有学生年龄都小的学生姓名和年龄SELECT SName,sage FROM S-C.STUDENTWHERE sageALL (select sage FROM S-C.student WHERE sdept=CS)AND SDEPTCS;或者用聚集函数:SELECT SName,sage FROM S-C.STUDENTWHERE sage (select min(sage) FROM S-C.student WHERE sdep

19、t=CS)AND SDEPTCS;注意:事实上,用聚集函数实现子查询通常比直接用ANY或ALL查询效率要高。例3.60 查询所有选修了1号课程的学生姓名SELECT SNAMEFROMS-C.STUDENTWHERE EXISTS (SELECT*FROM S-C.SCWHERE SNO=STUDENT.SNO AND CNO=1);注意:带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。使用存在量词EXISTS后,若内层查询结果非空,则外层的WHERE子句返回真值,否则返回假值。5 实验结果及总结1.SELECT SNO, SNAME FROM

20、这些的大小写随意,但是S-C.STUDENT必须是指定大小写,要是改变大小写则可以用S-C.student 加分号,引号会自动变红色. 在SQL语句中用 /* 注释内容 */注释。2. 查询结果中有许多重复行,若想去掉重复,则指定DISTINCT。若没有指定,则默认为all。3.(百分号)代表任意长度(长度可以为0)的字符串。_(下划线)代表任意单个字符4.desc是降序,ASC是升序,系统默认升序。 5. 求解相关子查询不能像求解不相关子查询那样一次将子查询求解出来,然后求解父查询。内层查询由于与外层查询有关,因此必须反复求值。6.用聚集函数实现子查询通常比直接用ANY或ALL查询效率要高。7. 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。使用存在量词EXISTS后,若内层查询结果非空,则外层的WHERE子句返回真值,否则返回假值。

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

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