实验题目:检索查询

实验目的:

能够掌握并熟练运用检索查询语句

实验原理和方法:

将查询语句创建成视图:如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 ])

山东大学《数据库系统》实验二:检索查询相关推荐

  1. 山东大学 2020级数据库系统 实验二

    What's more 山东大学 2020级数据库系统 实验一 山东大学 2020级数据库系统 实验二 山东大学 2020级数据库系统 实验三 山东大学 2020级数据库系统 实验四 山东大学 202 ...

  2. mysql查询2个isbn数据,数据库实验二 数据查询

    ALTER TABLE 书目 ADD 出版年份 VARCHAR(100); UPDATE 书目 SET 出版年份='2005' WHERE ISBN='7040195836'; UPDATE 书目 S ...

  3. 数据库系统实验二作业-SQL实验报告

    实验二 交互式SQL 1(DDL语言实践) 1 实验目的 a) ****熟悉数据库的交互式SQL工具****.如:MySQL 查询分析器. b) *掌握SQL语言的DDL子语言,在MySQL环境下实现 ...

  4. 山东大学数据库系统实验七

    实验七 声明:所有SQL语句均在实验平台验证通过,实验细节可能随时间推移老师会进行修改.在此仅提供解答思路,毕竟我的方法肯定不是最优,而且实验平台有查重功能,不要一昧的复制哦! 1.在学生表pub.s ...

  5. 数据库 实验二 SQL查询一

    SQL查询一 答案链接链接 实验学时:2 实验类型:验证 实验要求:必修 一.实验目的 通过本实验使学生掌握单表查询并初步掌握多表查询的技能. 二.实验内容 使用实验一建立的银行贷款数据库和表,完成以 ...

  6. 数据库——实验二 数据查询

    1.实验目的 理解SQL 程序设计基本规范,熟练运用SQL 语言实现数据查询,包括单表查询.分组统计查询和连接查询.嵌套查询合和集合查询. 2.实验内容和要求 针对tpch 数据库或自建数据库test ...

  7. 数据库-实验二-数据查询

    --查询"红楼梦"目前可借的各图书编号,及所属版本信息 select 图书编号,出版单位 from 书目,图书 where 书目.isbn=图书.isbn  and 书名='红楼梦 ...

  8. 山东大学 2020级数据库系统 实验八、九

    What's more 山东大学 2020级数据库系统 实验一 山东大学 2020级数据库系统 实验二 山东大学 2020级数据库系统 实验三 山东大学 2020级数据库系统 实验四 山东大学 202 ...

  9. 山东大学 2020级数据库系统 实验七

    What's more 山东大学 2020级数据库系统 实验一 山东大学 2020级数据库系统 实验二 山东大学 2020级数据库系统 实验三 山东大学 2020级数据库系统 实验四 山东大学 202 ...

  10. 山东大学 2020级数据库系统 实验六

    What's more 山东大学 2020级数据库系统 实验一 山东大学 2020级数据库系统 实验二 山东大学 2020级数据库系统 实验三 山东大学 2020级数据库系统 实验四 山东大学 202 ...

最新文章

  1. Linux音频设备驱动
  2. 使用LINQ进行多表操作(二)
  3. 第六讲:软考中高项06_质量管理、人力资源管理
  4. Java集合LinkedList
  5. Linux centosVMware Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl
  6. C语言学习笔记---随机数rand()函数
  7. 【作业报告】作业5 四则运算 测试与封装 5.2(已更新)
  8. u8应用服务器设置eai,用友U8+V15EAI用户使用手册.pdf
  9. 关于VMWare版本下载选择
  10. kettle-连接mysql数据库
  11. 2019-2025新能源汽车发展趋势与产业链技术路线解析
  12. 【JS继承】什么是JS继承?
  13. 联想笔记本e480恢复出厂设置_联想e480恢复【快速学会免费恢复】
  14. linux怎么建立辅助dns,rhel5 建立辅助DNS
  15. Django_BiDi(双向字符集语言)
  16. js 数组去重5个常用算法
  17. CA—Certificate Authority证书授权中心
  18. Cannot run program “mvn“ (in directory “/var/lib/jenkins/workspace)
  19. matlab坐标封闭,已知离散点坐标,拟合成封闭曲面
  20. H5播放HLS之hls.min.js库

热门文章

  1. 论文语句转换在线翻译器
  2. 个人实习总结【1000字】【原创】
  3. netstat和net命令粗谈
  4. mysql用户远程连接授权
  5. 支付宝小程序页面逻辑处理之事件(onTap,onTouchStart,onTouchMove,onTouchEnd)
  6. Xilinx官方文档学习之7系列CLB资源解读(UG474)
  7. 转:app store 注册账号生成证书上传app完整的教程
  8. 修改可执行文件,改变程序走向,把jne 改成je
  9. 树结构==查询实现屏蔽字功能
  10. X2000 Linux 低功耗