数据库中关于查询选课问题的解法

前言

今天上午起来复习了老师上课讲的选课问题。我总结了三个解法以及一点注意事项。

选课问题介绍

简单来说就是查询某某同学没有选或者选了什么课。然后查询出该同学的姓名,学号,课程号,课程名之类的。

sql文件我上传了。大家可以尝试练一练。

解题代码如下(含思路)

以"查询19105号学生漏选了哪些课程"为例子.

-- 数据库查询的练习
-- 查询19105号学生漏选了哪些课程
-- 法一 使用左外连接+笛卡尔积的方式
-- 1.列出19105号学生应选出的课 笛卡尔积
select Sno,Sname,Cno,Cname from student,course where Sno='19105';
-- 2.进行左外连接 选课的正确逻辑是学号相同且课程号也相同
SELECT * from (select Sno,Sname,Cno,Cname from student,course where Sno='19105') scall left OUTER JOIN
sc ON sc.sno=scall.Sno AND sc.Cno=scall.Cno;
-- 3.筛选出漏选的课,则成绩为null的
-- 错误写法SELECT * from (select Sno,Sname,Cno,Cname from student,course where Sno='19105') scall left OUTER JOIN sc ON sc.sno=scall.Sno AND sc.Cno=scall.Cno AND sc.Grade IS null;
-- 正确写法SELECT * from (select Sno,Sname,Cno,Cname from student,course where Sno='19105') scall left OUTER JOIN sc ON sc.sno=scall.Sno AND sc.Cno=scall.Cno where sc.Grade is NULL;-- 法二 
-- 子查询+IN集合
-- 1.在sc表中找到19105已经选课的课程编号
SELECT Cno FROM sc where sc.Sno='19105';
-- 2.使用not in+子查询方式
SELECT Sno,sname,cno,Cname FROM student,course where Cno not in  (SELECT Cno FROM sc where sc.Sno='19105');
-- 3.限定为19105
SELECT Sno,sname,cno,Cname FROM student,course where sno='19105' AND Cno not in  (SELECT Cno FROM sc where sc.Sno='19105');-- 法三
-- 子查询加exists解决
SELECT Sno, sname, Cno, cname 
FROM student, course 
WHERE student.sno = '19105'  -- 明确指定表别名AND NOT EXISTS (SELECT 1 FROM sc WHERE sc.Sno = student.Sno  -- 关联当前学生AND sc.Cno = course.Cno   -- 关联当前课程);-- 错误写法 注意与正确写法做区分
SELECT Sno, sname, Cno, cname 
FROM student, course 
WHERE student.sno = '19105'  -- 明确指定表别名AND NOT EXISTS (SELECT 1 FROM sc,student,course WHERE sc.Sno = student.Sno  -- 关联当前学生AND sc.Cno = course.2Cno   -- 关联当前课程);

注意事项 

结语 

byebye~

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt图表库推荐指南与分析

目录 一、核心图表库横向对比1. Qt Charts2. QCustomPlot3. QWT (Qt Widgets for Technical Applications)4. KD Chart 二、性能与功能对比矩阵三、选型策略与组合方案1. 通用型需求:2. 技术型场景:3. 企业级开发: 四、未来趋势与避坑指南1. …

LangGraph 2 - 智能体开发、流式传输、模型调用、工具、MCP、上下文、内存、人机协同、部署、UI

文章目录 使用LangGraph进行智能体开发什么是智能体?核心特性高层构建模块包生态系统 运行代理基础用法输入与输出输入格式使用自定义 Agent 状态 输出格式流式输出最大迭代次数其他资源 流式传输代理进度监控LLM 令牌工具更新流式多模态传输禁用流式传输其他资源 L…

Android同屏采集并推送RTMP和启动轻量级RTSP服务技术实践

随着视频直播需求的不断提升,如何实现高效的实时视频采集和推流,成为了开发者们关注的重点。本文将结合大牛直播SDK,介绍如何在 Android 平台实现 同屏采集、推送 RTMP 流,以及如何启动轻量级 RTSP 服务,让开发者快速搭…

如何自定义 Spring MVC 的配置?

我们可以通过实现 WebMvcConfigurer 接口来自定义 Spring MVC (尤其是在 Spring Boot 环境中) 的配置。 以下是通过实现 WebMvcConfigurer 接口的配置方法: 核心:创建一个 Configuration 类并实现 WebMvcConfigurer import org.springframework.conte…

如何提升新加坡SAP实施成功率?解答中企出海的“税务合规密码” | 工博科技SAP金牌服务商

目录 中新双边经贸合作概况 ​编辑 新加坡数字化实施核心挑战 一、财税合规体系适配 税务申报差异 会计准则协同 二、人力资源合规管理 薪酬体系配置 数据安全规范 企业实施建议方案 一、系统建设策略 选择具备以下资质的实施服务商: 构建标准化功能模块…

人工智能视角下的安全:可视化如何塑造恶意软件检测

摘要 恶意软件是一种持续存在的网络安全威胁,它越来越多地通过复杂的攻击向量,瞄准互连的数字系统,如桌面、移动和物联网平台。通过利用这些漏洞,攻击者会损害现代数字生态系统的完整性和弹性。为了应对这一风险,安全…

游戏引擎学习第293天:移动Familiars

回顾并为今天的内容定下基调 我们正在做一款完整的游戏,今天的重点是“移动模式”的正式化处理。目前虽然移动机制大致能运作,但写法相对粗糙,不够严谨,我们希望将其清理得更规范,更可靠一点。 目前脑逻辑&#xff0…

golang -- 如何让main goroutine等一等

目录 引言一、sync.WaitGroup二、channel创建channle操作缓冲多返回值模式单向通道 引言 在不做修饰的程序中,代码是串行执行的 串行、并发与并行串行:事物按照一定的发展顺序并发:同一时间段执行多个任务(一边吃饭一边看电视&am…

第31讲 循环缓冲区与命令解析

串口在持续接收数据时容易发生数据黏包(先接收的数据尚未被处理,后面的数据已经将内存覆盖)的情况,循环缓冲区的本质就是将串口接受到的数据马上拷贝到另外一块内存之中。为了避免新来的数据覆盖掉尚未处理的数据,一方…

UE 材质基础 第一天

课程:虚幻引擎【UE5】材质宝典【初学者材质基础入门系列】-北冥没有鱼啊_-稍后再看-哔哩哔哩视频 随便记录一些 黑色是0到负无穷,白色是1到无穷 各向异性 有点类似于高光,可以配合切线来使用,R G B 相当于 X Y Z轴,切…

编译原理--期末复习

本文是我学习以下博主视频所作的笔记,写的不够清晰,建议大家直接去看这些博主的视频,他/她们讲得非常好: 基础知识概念: 1.【【编译原理】期末复习 零基础自学】,资料 2.【编译原理—混子速成期末保过】&…

【DeepSeek论文精读】11. 洞察 DeepSeek-V3:扩展挑战和对 AI 架构硬件的思考

欢迎关注[【AIGC论文精读】](https://blog.csdn.net/youcans/category_12321605.html)原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】7. DeepSeek 的发展历程与关键技术 【DeepSeek论文精读】11. 洞察 DeepSeek-V3&#xff…

宝塔面板部署前后端项目SpringBoot+Vue2

这篇博客主要用来记录宝塔部署前端后端项目的过程。因为宝塔部署有点麻烦,至少在我看来挺麻烦的。我还是喜欢原始的ssh连接服务器进行操作。但是公司有项目用到了宝塔,没办法啊,只能摸索记录一下。 我们需要提前准备好后端项目的jar包和前端项…

电机试验平台:创新科技推动电动机研究发展

电机试验平台是电机制造和研发过程中不可或缺的重要设备,其功能涵盖了电机性能测试、电机寿命测试、电机质量评估等多个方面。随着科技的不断发展和电机应用领域的日益扩大,对电机试验平台的要求也越来越高。本文将从现代化电机试验平台的设计与应用两个…

LangGraph 7 - Platform - Agentic RAG、监督、SQL代理、追踪、私密对话、认证、RemoteGraph、LangSmith

文章目录 代理式检索增强生成(Agentic RAG)安装 1、预处理文档2、创建检索器工具3、生成查询4、文档分级5、问题重写6、生成答案7、构建流程图8、运行智能RAG代理 多智能体监督系统安装配置1、创建工作代理研究代理数学代理工具 2、使用 langgraph-super…

生命之树--树形dp

1.树形dp--在dfs遍历树的同时dp&#xff0c;从上到下递归&#xff0c;到叶子是边界条件 https://www.luogu.com.cn/problem/P8625 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<ll,int> pii; int n,c; ll …

10.8 LangChain三大模块深度实战:从模型交互到企业级Agent工具链全解析

LangChain Community 项目:Model I/O, Retrieval, Agent Tooling 关键词:LangChain Model I/O, 检索增强生成, Agent 工具链, 多路召回策略, 工具调用协议 1. Model I/O 模块:大模型交互标准化接口 Model I/O 是 LangChain 生态中连接大模型的核心模块,定义了统一的输入输…

鸿蒙OSUniApp 实现图片上传与压缩功能#三方框架 #Uniapp

UniApp 实现图片上传与压缩功能 前言 在移动应用开发中&#xff0c;图片上传是一个非常常见的需求。无论是用户头像、朋友圈图片还是商品图片&#xff0c;都需要上传到服务器。但移动设备拍摄的图片往往尺寸较大&#xff0c;直接上传会导致流量消耗过大、上传时间过长&#x…

已经装了pygame但pycharm显示没有该模块/软件包无法加载出来下载pygame

首先&#xff0c;如果你已经通过pip install pygame或者其他什么命令下载好了pygame &#xff08;可以通过pip list查看&#xff0c;有pygame说明pygame已经成功安装在当前python环境中&#xff09;。然而&#xff0c;如果你在 PyCharm 中仍然看不到 pygame&#xff0c;可能是因…

第6章 实战案例:基于 STEVAL-IDB011V1 板级 CI/CD 全流程

在前五章中,我们完成了嵌入式 CI/CD 从环境搭建、编译自动化、测试自动化、发布分发到监控回归的全技术链条。本章将以 STEVAL-IDB011V1(搭载 BlueNRG-355)评估板为实战载体,手把手演示如何在 GitLab CI(或 Jenkins)上,构建一条从 Git Push → 编译 → 测试 → 刷写 → …