• 数据库上机实验3 连接查询和分组查询


    一、实验目的

    1、熟练掌握多表连接查询中内连接的两种语法。

    2、理解外连接的含义,熟悉外连接的使用。

    3、掌握分组查询和排序等语句。

    二、实验内容

    根据实验1中创建的学生作业管理数据库以及其中的学生表、课程表和学生作业表,进行以下操作。

    1、查询选修三门以上(含三门)课程的学生的学号和作业1平均分、作业2平均分和作业3平均分。

    1. select sno as 学号,avg(cj1) as 作业1平均分,avg(cj2) as 作业2平均分,avg(cj3) as 作业3平均分
    2. from score
    3. group by sno
    4. having count(*)>=3

    2、查询每门被选课程的课程编号、课程名称、作业1平均分、作业2平均分和作业3平均分。

    1. select course.cno as 课程编号,cname as 课程名称 ,avg(cj1) as 作业1平均分,avg(cj2) as 作业2平均分,avg(cj3) as 作业3平均分
    2. from course,score
    3. where course.cno=score.cno
    4. group by course.cno,cname

    3、查询每门被选课程的课程编号、作业1的最高分和最低分、作业2的最高分和最低分、作业3的最高分和最低分。

    1. select cno as 课程编号,max(cj1) as 作业1最高分,min(cj1) as 作业1最低分,max(cj2) as 作业2最高分,min(cj2) as 作业2最低分,max(cj3) as 作业3最高分,min(cj3) as 作业3最低分
    2. from score
    3. group by cno

    4、查询作业1平均分、作业2平均分和作业3平均分均在75分以上(含75分)的学生学号和作业1平均分、作业2平均分和作业3平均分。

    1. select sno as 学号,avg(cj1) as 作业1平均分,avg(cj2) as 作业2平均分,avg(cj3) as 作业3平均分
    2. from score
    3. group by sno
    4. having avg(cj1)>=75 and avg(cj2)>=75 and avg(cj3)>=75

    5、查询与“张志国”同一班级的学生信息(使用连接查询)。

    1. select a.* from student a, student b
    2. where a.major=b.major and b.sname='张志国'

    6、查询比“计算机应用基础”学时多的课程信息(使用连接查询)。

    1. select a.* from course a,course b
    2. where a.stime>b.stime and b.cname='计算机应用基础'

    7、查询选修课程号为K002的学生的学号、姓名(使用连接查询)。

    1. select student.sno,sname from student,score
    2. where student.sno=score.sno and cno='K002'

    8、查询于兰兰的选课信息,列出学号、姓名、课程名,并按照课程名进行升序排序(使用两种连接查询的方式)。

    1. 1select student.sno,sname,cname
    2. from student,course,score
    3. where student.sno=score.sno and course.cno=score.cno and sname='于兰兰'
    4. order by cname
    5. 2select student.sno,sname,cname
    6. from student
    7. inner join score on student.sno=score.sno
    8. inner join course on course.cno=score.cno
    9. where sname='于兰兰'
    10. order by cname

    三、实验指导

    1、启动SQL Server2012软件。

    2、通过分离附加的方法,将实验1所创建的作业管理数据库恢复到该软件中。

    3、SQL Server中,程序不区别大小写,特别要注意程序中的标点符号,一定要在英文半角状态下输入,否则会出错。

    4、注意统计函数的用法,AVG求平均值,SUM求和,MAX求最大值,MIN求最小值,COUNT按列值统计行数。

    5、注意HAVING子句和WHERE子句的区别:HAVING子句是对分组后的数据进行条件的筛选,而WHERE子句是对原始数据时行条件的筛选;HAVING子句中可以有统计函数,WHERE子句中不能有统计函数。

    6、多表连接查询中一定要有连接条件,对N个表进行查询要有N-1个连接条件。

    7、注意多表连接查询的两种写法。

  • 相关阅读:
    【IMX6ULL学习笔记之Linux系统移植06】——笔记本安装Ubuntu系统开发
    Android 13.0 recovery出厂时正在清理字体大小的修改
    开源消息引擎系统 Kafka 3新特性,一文带你了解
    云原生专栏丨基于服务网格的企业级灰度发布技术
    分层架构理论基础
    【解题报告】CF练一下题 | 难度CF2500左右
    flutter iOS 缺少通知权限,缺少位置权限
    数据结构与算法【红黑树】的Java实现+图解
    P3959 [NOIP2017 提高组] 宝藏
    C++面向对象基础:访问权限、三种继承权限详解
  • 原文地址:https://blog.csdn.net/qq_64314976/article/details/126007959