山东大学《数据库系统》实验二:检索查询
实验题目:检索查询
实验目的:
能够掌握并熟练运用检索查询语句
实验原理和方法:
将查询语句创建成视图:如test2_01,test2 代表实验二,01 代表题目1:
Create or replace view test2_01 as select……
根据题目要求写出答案查询语句,将查询结果创建到一个视图中,点击题目 交卷验证结果是否正确。
提示:
1、任何select 确保只返回一个结果可以是另外一个select的一个输出表达式。格式如: select sid,(select… …) 列别名 from … where …
2、任何select 确保只返回一个结果可以出现在另外一个sql的条件表达式中。格式如: select … from … where xx=(select… …)。
3、任何select 可以是另外一个sql的表,即派生表。格式如: select … from student,(select…)表别名 where …。
实验步骤:
1. 找出没有选修任何课程的学生的学号、姓名(即没有选课记录的学生)。自己认为查询语句正确后,通过下面语句将查询语句创建成视图test2_01
Create view test2_01 as SELECT SID,NAMEFROM pub.studentWHERE SID NOT IN (SELECT a.SID FROM pub.student_course a,pub.student b WHERE a.SID=b.SID)
2. 找出至少选修了学号为"200900130417"的学生所选修的一门课的学生的学号、姓名(不包含这名同学)。
Create view test2_02 as SELECT UNIQUE SID,NAMEFROM pub.student WHERE SID IN (SELECT a.SID FROM pub.student_course a,pub.student_course b WHERE a.CID=b.CID AND b.SID='200900130417'AND a.sid<>'200900130417')
3.找出至少选修了一门其先行课程号为"300002"号课程的学生的学号、姓名。
Create view test2_03 as SELECT UNIQUE SID,NAMEFROM pub.student WHERE SID IN (SELECT SID FROM pub.student_course a,pub.course b WHERE a.CID=b.CID AND b.FCID=300002)
4.找出选修了"操作系统"并且也选修了"数据结构"的学生的学号、姓名。
Create view test2_04 as
(select sid,name from pub.student_course natural join pub.student where cid in (select cid from pub.course where name='操作系统')
)
intersect
(select sid ,name from pub.student_course natural join pub.student where cid in (select cidfrom pub.course where name='数据结构')
)
5.查询20岁的所有有选课的学生的学号、姓名、平均成绩(avg_score,此为列名,下同)(平均成绩四舍五入到个位)、总成绩(sum_score)
Create or replace view test2_05 as
select SID,NAME,round(avg(SCORE),0) avg_score,sum(SCORE) sum_score from pub.student natural join pub.student_course where age=20 group by sid,name
6.查询所有课的最高成绩、最高成绩人数,test2_06有四个列:课程号cid、课程名称name、最高成绩max_score、最高成绩人数max_score_count(一个学生同一门课成绩都是第一,只计一次)。如果没有学生选课,则最高成绩为空值,最高成绩人数为零。
Create or replace view test2_06 as
select cid,name,ms max_score,count(distinct sid) max_score_count from pub.course natural join pub.student_course a natural join (select cid,max(score) ms from pub.student_course group by cid) where a.score=ms group by cid,name,ms
7.查询所有不姓张、不姓李、也不姓王的学生的学号sid、姓名name
Create view test2_07 as
select sid,name from pub.student where name not like'张%' and name not like'李%' and name not like'王%'
8.查询学生表中每一个姓氏及其人数(不考虑复姓),test2_08有两个列:second_name、p_count
Create view test2_08 as
select substr(name,1,1) second_name,count(SID) p_count from pub.student group by substr(name,1,1)
9.查询选修了300003号课程的学生的sid、name、score
Create or replace view test2_09 as
SELECT sid,name,score FROM pub.student_course natural join pub.student WHERE cid=300003
10.找出同一个同学同一门课程有两次或以上不及格的所有学生的学号、姓名(即一门课程需要补考两次或以上的学生的学号、姓名)。
Create or replace view test2_10 as
select sid,name from (select sid,count(score) cs from pub.student_course where score < 60 group by sid ,cid) natural join pub.studentwhere cs>1
结论分析与体会:
利用折行和缩进会使sql语句结构更加清晰明了,完成实验之前需要仔细阅读题目的要求(如,查询2:不包含这名同学),并且在查询过程中一定要考虑特殊情况,阅读提示(如,查询6:存在一个学生同一门课成绩都是第一,只计一次)。
就实验过程中遇到和出现的问题,你是如何解决和处理的,自拟1-3道问答题:
Q1:查询5:如何平均成绩四舍五入到个位?
A1:上网查询,利用ROUND(number[,decimals])
其中:number 待做截取处理的数值,decimals 指明需保留小数点后面的位数。可选项,忽略则截去所有的小数部分,并四舍五入。
Q2:查询6:提交结果验证返回一行数据错误,如何修正?
A2:存在最高分者再次选修刷到同分的情况,导致最高成绩人数多一人。在实际操作中也要考虑到类似的特殊情况。
Q3:查询8 :如何查询学生表中每一个姓氏?
A3:查询oracle中截取字符的方法,即substr(string, start_position, [ length ])
山东大学《数据库系统》实验二:检索查询相关推荐
- 山东大学 2020级数据库系统 实验二
What's more 山东大学 2020级数据库系统 实验一 山东大学 2020级数据库系统 实验二 山东大学 2020级数据库系统 实验三 山东大学 2020级数据库系统 实验四 山东大学 202 ...
- mysql查询2个isbn数据,数据库实验二 数据查询
ALTER TABLE 书目 ADD 出版年份 VARCHAR(100); UPDATE 书目 SET 出版年份='2005' WHERE ISBN='7040195836'; UPDATE 书目 S ...
- 数据库系统实验二作业-SQL实验报告
实验二 交互式SQL 1(DDL语言实践) 1 实验目的 a) ****熟悉数据库的交互式SQL工具****.如:MySQL 查询分析器. b) *掌握SQL语言的DDL子语言,在MySQL环境下实现 ...
- 山东大学数据库系统实验七
实验七 声明:所有SQL语句均在实验平台验证通过,实验细节可能随时间推移老师会进行修改.在此仅提供解答思路,毕竟我的方法肯定不是最优,而且实验平台有查重功能,不要一昧的复制哦! 1.在学生表pub.s ...
- 数据库 实验二 SQL查询一
SQL查询一 答案链接链接 实验学时:2 实验类型:验证 实验要求:必修 一.实验目的 通过本实验使学生掌握单表查询并初步掌握多表查询的技能. 二.实验内容 使用实验一建立的银行贷款数据库和表,完成以 ...
- 数据库——实验二 数据查询
1.实验目的 理解SQL 程序设计基本规范,熟练运用SQL 语言实现数据查询,包括单表查询.分组统计查询和连接查询.嵌套查询合和集合查询. 2.实验内容和要求 针对tpch 数据库或自建数据库test ...
- 数据库-实验二-数据查询
--查询"红楼梦"目前可借的各图书编号,及所属版本信息 select 图书编号,出版单位 from 书目,图书 where 书目.isbn=图书.isbn and 书名='红楼梦 ...
- 山东大学 2020级数据库系统 实验八、九
What's more 山东大学 2020级数据库系统 实验一 山东大学 2020级数据库系统 实验二 山东大学 2020级数据库系统 实验三 山东大学 2020级数据库系统 实验四 山东大学 202 ...
- 山东大学 2020级数据库系统 实验七
What's more 山东大学 2020级数据库系统 实验一 山东大学 2020级数据库系统 实验二 山东大学 2020级数据库系统 实验三 山东大学 2020级数据库系统 实验四 山东大学 202 ...
- 山东大学 2020级数据库系统 实验六
What's more 山东大学 2020级数据库系统 实验一 山东大学 2020级数据库系统 实验二 山东大学 2020级数据库系统 实验三 山东大学 2020级数据库系统 实验四 山东大学 202 ...
最新文章
- Linux音频设备驱动
- 使用LINQ进行多表操作(二)
- 第六讲:软考中高项06_质量管理、人力资源管理
- Java集合LinkedList
- Linux centosVMware Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl
- C语言学习笔记---随机数rand()函数
- 【作业报告】作业5 四则运算 测试与封装 5.2(已更新)
- u8应用服务器设置eai,用友U8+V15EAI用户使用手册.pdf
- 关于VMWare版本下载选择
- kettle-连接mysql数据库
- 2019-2025新能源汽车发展趋势与产业链技术路线解析
- 【JS继承】什么是JS继承?
- 联想笔记本e480恢复出厂设置_联想e480恢复【快速学会免费恢复】
- linux怎么建立辅助dns,rhel5 建立辅助DNS
- Django_BiDi(双向字符集语言)
- js 数组去重5个常用算法
- CA—Certificate Authority证书授权中心
- Cannot run program “mvn“ (in directory “/var/lib/jenkins/workspace)
- matlab坐标封闭,已知离散点坐标,拟合成封闭曲面
- H5播放HLS之hls.min.js库