当前位置: 首页 > news >正文

【数据库系统概论】程序题

“学生管理数据库”包含以下三个表,即学生表Student、课程表Course和选课表SC,结构如下:

	Student(Sno,Sname,Ssex,Sage,Sdept)Course (Cno,Cname,Cpno,Ccredit)SC(Sno,Cno,Grade)

其中,Sno为学号,Sname为学生姓名,Ssex为性别,Sage为年龄
系别:Cno为课程号,Cname为课程名,Cpno为先行课号,Ccredit为学分成绩。

  1. 查询所有名字中第二个字为“强”的学生的学号、姓名和性别,学号降序排列。
    要查询所有名字中第二个字为“强”的学生的学号、姓名和性别,并按学号降序排列,可以使用如下的 SQL 查询语句。

    SELECT Sno, Sname, Ssex
    FROM Student
    WHERE Sname LIKE '_强%'
    ORDER BY Sno DESC;
    

    解释

    1. SELECT Sno, Sname, Ssex:选择需要查询的列,即学号(Sno)、姓名(Sname)和性别(Ssex)。
    2. FROM Student:指定查询的数据表为学生表(Student)。
    3. WHERE Sname LIKE '_强%':条件过滤,选择姓名(Sname)中第二个字为“强”的记录。_ 表示任意一个字符,% 表示零个或多个字符。
    4. ORDER BY Sno DESC:按学号(Sno)降序排列结果。
  2. 查询各个课程号与相应的选课人数。

    SELECT Cno, COUNT(Sno) AS student_count
    FROM SC
    GROUP BY Cno;
    

    解释:

    1. SELECT Cno, COUNT(Sno) AS student_count选择列:
      Cno:这是课程号列。
      COUNT(Sno) AS student_count:这是一个聚合函数,用于计算每个课程号对应的选课学生人数。COUNT(Sno) 会统计每个课程号(Cno)的学生记录数,并将结果命名为 student_count
    2. FROM SC:这是选课表,包含学生学号(Sno)、课程号(Cno)和成绩(Grade)。
    3. GROUP BY Cno:按课程号(Cno)进行分组。分组操作会将选课表(SC)中所有相同课程号(Cno)的记录归为一组。
  3. 查询“王强”所在系的学生的平均成绩。

    SELECT AVG(SC.Grade) AS avg_grade
    FROM SC
    JOIN Student ON SC.Sno = Student.Sno
    WHERE Student.Sdept = (SELECT SdeptFROM StudentWHERE Sname = '王强'
    );
    

    解释

    1. SELECT AVG(SC.Grade) AS avg_grade:选择并计算指定系别学生的平均成绩。
    2. FROM SC JOIN Student ON SC.Sno = Student.Sno:将选课表(SC)和学生表(Student)通过学号(Sno)连接。
    3. WHERE Student.Sdept = (SELECT Sdept FROM Student WHERE Sname = '王强'):子查询 SELECT Sdept FROM Student WHERE Sname = '王强' 查找“王强”所在的系别,并过滤出属于该系别的学生的成绩记录。
http://www.lryc.cn/news/362032.html

相关文章:

  • 群体优化算法---蝙蝠优化算法分类Iris数据集
  • 【C++】类和对象1.0
  • Linux下gcc编译32位程序报错
  • godot.bk
  • 【C++修行之道】类和对象(三)拷贝构造函数
  • 校园外卖系统的技术架构与实现方案
  • AI的制作思维导图
  • Amazon云计算AWS(四)
  • 数据库(21)——数值函数
  • 【PB案例学习笔记】-15怎样限制应用程序运行次数?
  • Spring为什么不支持static字段注入
  • AI数据分析:用Kimi根据Excel表格数据绘制多条折线图
  • 高级 Go 程序设计:使用 net/http/httputil 包构建高效网络服务
  • Android11 AudioTrack 创建过程
  • 数学建模 —— 层次分析法(2)
  • Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:人工智能消防应用
  • Flutter 中的 KeepAlive 小部件:全面指南
  • C语言 恼人的结合性和优先级和副作用
  • Vue——初识组件
  • MQ消息丢失/重复/顺序/挤压
  • 利用Quarkus构建高效微服务——Java的云原生革新
  • python 批量ts合并成一个mp4
  • Java | Leetcode Java题解之第129题求根节点到叶节点数字之和
  • SpringBoot【注解 01】@Scheduled实现定时任务的串行和并行执行
  • 【工具】redis的安装使用
  • 汇编:数据定义数据填充
  • Python画图(多图展示在一个平面)
  • python-web应用程序-Django数据库-操作表中的数据
  • 绕过WAF(Web应用程序防火墙)--介绍、主要功能、部署模式、分类及注入绕过方式等
  • 11.7 堆排序