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

【SQL实战】——数据查询

在这里插入图片描述

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972

   个人介绍: 研二|统计学|干货分享
         擅长Python、Matlab、R等主流编程软件
         累计十余项国家级比赛奖项,参与研究经费10w、50w级横向

文章目录

  • 1 背景和目的
  • 2 设备需求
  • 3 相关内容和步骤
  • 4 相关实例
    • 4.1 查询学生的基本信息
    • 4.2 查询“计算机”系学生的基本信息
    • 4.3 查询“计算机”系学生年龄不在19到20之间的学生的学号、姓名
    • 4.4 找出最大年龄
    • 4.5 找出“计算机系”系年龄最大的学生,显示其学号、姓名
    • 4.6 找出各系年龄最大的学生,显示其学号、姓名
    • 4.7 统计“计算机”系学生的人数
    • 4.8 统计各系学生的人数,结果按升序排列
    • 4.9 按系统计各系学生的平均年龄,结果按降序排列
    • 4.10 查询每门课程的课程名
    • 4.11 查询先修课小于4的课程的课程名和学分
    • 4.12 统计先修课小于3的课程的学分
    • 4.13 统计每位学生选修课程的门数、学分及其平均成绩
    • 4.14 统计选修每门课程的学生人数及各门课程的平均成绩
    • 4.15 找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列
    • 4.16 查询选修了“C001”或“C002”号课程的学生学号和姓名
    • 4.17 查询选修了“1”和“2”号课程的学生学号和姓名
    • 4.18 查询选修了课程名为“高等数学”且成绩在60分以下的学生的学号、姓名和成绩
    • 4.19 查询每位学生选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩)
    • 4.20 查询没有选修课程的学生的基本信息
    • 4.21 查询选修了3门以上课程的学生学号
    • 4.22 查询选修课程成绩至少有一门在80分以上的学生学号
    • 4.23 查询选修课程成绩均在80分以上的学生学号
    • 4.24 查询选修课程平均成绩在80分以上的学生学号

本篇文章通过24个精心挑选的案例,为读者提供了一个全面、实用的SQL查询语法学习平台。无论你是SQL初学者,还是希望提升技能的进阶者,都能从中获得宝贵的经验和启示,为未来的数据处理和分析工作奠定坚实的基础。

1 背景和目的

  在数据库中,存在一个设计的学生-课程数据库系统,它全面涵盖了学生的基本信息、课程的基础详情以及学生选修课程的关联数据。此系统不仅是一个数据管理的工具,更是学习SQL查询操作和命令应用的理想实验场。

  本文通过24个具体的实验实例,引领读者深入探索这一数据库系统。我们将一步步指导读者如何查询学生信息、课程详情以及它们之间的选修关系,从而帮助读者熟悉并掌握SQL语句的精髓。无论是基础的SELECT查询,还是涉及GROUP、WHERE等高级条件的复杂查询,都将通过实例得到生动展现。

  通过这些实验实例,读者不仅能够学会如何构建正确的SQL语句来检索所需数据,还能深刻理解SQL语句的各种形式及其在不同场景下的应用。我们鼓励读者在跟随实例操作的同时,尝试自行修改查询条件或添加新的查询需求,以此锻炼SQL语句的灵活运用能力。

  总之,本文旨在通过实践的方式,使读者在轻松愉快的氛围中掌握SQL查询的核心技能,为日后在数据处理和分析领域的发展打下坚实的基础。无论你是SQL初学者,还是希望提升技能的进阶者,都能从这个实验实例中获得宝贵的经验和启示。其中,学生-课程数据库中三张关系表分别为:

  学生关系表S:

  学生关系表S :

  课程关系表SC :

  在数据库中显示效果为:

2 设备需求

  Pentium 166MHz及以上微机;

  Windows XP/2000/7及以上操作系统;

  安装了SQL Server;

3 相关内容和步骤

1.在表S,C,SC上进行简单查询;

2.在表S,C,SC上进行连接查询;

3.在表S,C,SC上进行嵌套查询;

4.使用聚合函数的查询;

5.对数据的分组查询;

6.对数据的排序查询。

4 相关实例

4.1 查询学生的基本信息

  运行程序:

select *
from S

  运行结果:

4.2 查询“计算机”系学生的基本信息

  运行程序:

select *
from S
where(Sdept='计算机系')

  运行结果:

4.3 查询“计算机”系学生年龄不在19到20之间的学生的学号、姓名

  运行程序:

select Sno,Sname
from S
where(Sdept='计算机系'and(Sage<19 or Sage>20))

  运行结果:

4.4 找出最大年龄

  运行程序:

select Max(Sage)as "最大年龄"
from S

  运行结果:

4.5 找出“计算机系”系年龄最大的学生,显示其学号、姓名

  运行程序:

select Sno,Sname
from S
where Sdept='计算机系'
and Sage=(select MAX(Sage)
from S)

  运行结果:

4.6 找出各系年龄最大的学生,显示其学号、姓名

  运行程序:

select sno,sname  from S as s1
where s1.sage =(select MAX(sage) from S as s2
where s1.sdept=s2.sdept )

  运行结果:

4.7 统计“计算机”系学生的人数

  运行程序:

select COUNT(Sno) as '计算机系学生人数'
from S
where  Sdept='计算机系'

  运行结果:

4.8 统计各系学生的人数,结果按升序排列

  运行程序:

select  COUNT(*) as '各系学生人数升序排列'from S 
group by sdept 
order by COUNT(*) ASC

  运行结果:

4.9 按系统计各系学生的平均年龄,结果按降序排列

  运行程序:

select  AVG(Sage) as '各系学生平均年龄升序排列'from S 
group by sdept 
order by AVG(Sage) DESC

  运行结果:

4.10 查询每门课程的课程名

  运行程序:

select Cname
from C

  运行结果:

4.11 查询先修课小于4的课程的课程名和学分

  运行程序:

select Cname,Ccredit  from C
where Cpno<4

  运行结果:

4.12 统计先修课小于3的课程的学分

  运行程序:

select Ccredit from C
where Cpno<3

  运行结果:

4.13 统计每位学生选修课程的门数、学分及其平均成绩

  运行程序:

select sc.sno'学号',COUNT(sc.cno)'选修数',AVG(grade)'平均成绩',SUM(ccredit)'总学分' 
from sc,C
where sc.cno=c.cno
group by sc.sno

  运行结果:

4.14 统计选修每门课程的学生人数及各门课程的平均成绩

  运行程序:

select cno'课程',COUNT(sno)'人数',AVG(grade)'平均分'
from sc
group by cno

  运行结果:

4.15 找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列

  运行程序:

select sc.sno'学号',sdept'专业',AVG(grade)'平均分'
from S,SC
where SC.Sno=S.Sno
group by sc.sno,Sdept
having(AVG(Grade)>80)
order by Sdept, AVG(Grade)

  运行结果:

4.16 查询选修了“C001”或“C002”号课程的学生学号和姓名

  运行程序:

select distinct SC.Sno,Sname from S,SC
where S.Sno=SC.Sno
and (Cno='C001'or Cno='C002')

  运行结果:

4.17 查询选修了“1”和“2”号课程的学生学号和姓名

  运行程序:

select distinct SC.Sno,Sname from S,SC,C
where S.Sno=SC.Sno
and (Cpno='1'or Cpno='2')

  运行结果:

4.18 查询选修了课程名为“高等数学”且成绩在60分以下的学生的学号、姓名和成绩

  运行程序:

select S.Sno,Sname,Grade from S,SC,C
where S.Sno=SC.Sno and C.Cno=SC.Cno and C.Cname='高等数学'and Grade<60

  运行结果:

4.19 查询每位学生选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩)

  运行程序:

select  sc.sno,sname,grade ,cname,sc.cno from sc,s,c
where s.sno=sc.sno and c.cno=sc.cno

  运行结果:

4.20 查询没有选修课程的学生的基本信息

  运行程序:

select * from S
where Sno!=all(select Sno from SC)

  运行结果:

4.21 查询选修了3门以上课程的学生学号

  运行程序:

select distinct Sno from Sc
where (select count(Sno) from Sc
)>3

  运行结果:

4.22 查询选修课程成绩至少有一门在80分以上的学生学号

  运行程序:

select distinct Sno from Sc
where (select count(Sno) from Sc
)>3 and Grade>80

  运行结果:

4.23 查询选修课程成绩均在80分以上的学生学号

  运行程序:

select distinct Sno from Sc
where grade not in (select Grade from SC
where Grade<80)

  运行结果:

4.24 查询选修课程平均成绩在80分以上的学生学号

  运行程序:

select Sno from Sc
group by Sno
having AVG(grade)>80

  运行结果:


http://www.kler.cn/a/373848.html

相关文章:

  • 概率论与数理统计总复习
  • 字节小米等后端岗位C++面试题
  • 从企业级 RAG 到 AI Assistant , Elasticsearch AI 搜索技术实践
  • RK3568 Android 13 内置搜狗输入法小计
  • eNSP之家----ACL实验入门实例详解(Access Control List访问控制列表)(重要重要重要的事说三遍)
  • 计算机网络例题
  • Anaconda和Pycharm超详细安装教程(2024版本+Win11)
  • LLM大模型部署实战指南:部署简化流程
  • 基于图像形态学处理和凸包分析法的指尖检测matlab仿真
  • 故障诊断 | CNN-GRU卷积神经网络-门控循环单元组合模型的故障诊断(Matlab)
  • Router和route区别
  • 装饰器模式详解:动态扩展对象功能的优雅解决方案
  • Android启动流程_Init阶段
  • c++qt
  • SLAM:未来智能科技的核心——探索多传感器融合的无限可能
  • ​IOT NTN 与 NR NTN​
  • 我在命令行下剪辑视频
  • Linux CentOS7下创建SFTP服务器
  • 我在命令行下学日语
  • Chrome和Firefox如何保护用户的浏览数据
  • c++编解码封装
  • 【YOLO 系列】基于YOLO的行人口罩检测系统【python源码+Pyqt5界面+数据集+训练代码】
  • Python中的`update`方法详解及示例
  • nginx配置https及url重写
  • OpenCV与AI深度学习 | 基于OpenCV和深度学习预测年龄和性别
  • python opencv1