DQL命令查询数据(三)

news2024/9/28 11:16:11

本课目标

掌握MySQL的多表查询

SQL语句的综合应用

多表连接查询

通过各个表之间共同列的关联性(例如:外键)来查询的

分类:

  • 内连接(INNER JOIN) ,可简写为 JOIN
  • 左外连接(LEFT OUTER JOIN),可简写为LEFT JOIN
  • 右外连接(RIGHT OUTER JOIN),可简写为RIGHT JOIN
  • 自连接查询
  • 交叉连接(CROSS JOIN)也称为 笛卡儿乘积连接,基本上用不到。

内连接

使用比较运算符根据每个表的通用列中的值匹配连个表中的行

如果两个表中邮箱通道字段名,必须在列名前加表名,否则将出现错误

#查询考试信息
SELECT S.STUDENTNO,STUDENTNAME,GRADENAME,SUBJECTNAME,STUDENTRESULT,EXAMDATE FROM STUDENT S JOIN RESULT R ON S.STUDENTNO=R.STUDENTNO JOIN GRADE G ON S.GRADEID=G.GRADEID JOIN `SUBJECT` SU ON SU.SUBJECTNO=R.SUBJECTNO ORDER BY G.GRADEID,EXAMDATE DESC,STUDENTRESULT DESC;
#第二种写法
SELECT S.STUDENTNO,STUDENTNAME,GRADENAME,SUBJECTNAME,STUDENTRESULT,EXAMDATE FROM STUDENT S,RESULT R,GRADE G,`SUBJECT` SU WHERE S.STUDENTNO=R.STUDENTNO AND S.GRADEID=G.GRADEID AND SU.SUBJECTNO=R.SUBJECTNO;

#查询1993年以后出生的学生的姓名,电话和年级名称。
SELECT BORNDATE,STUDENTNO,PHONE,GRADENAME FROM STUDENT S JOIN GRADE G ON S.GRADEID=G.GRADEID WHERE YEAR(BORNDATE)>=1993 ORDER BY BORNDATE;

#查询学生的学号、姓名、课程名称和考试成绩。
SELECT S.STUDENTNO,STUDENTNAME,SUBJECTNAME,STUDENTRESULT FROM STUDENT S INNER JOIN RESULT R ON S.STUDENTNO= R.STUDENTNO INNER JOIN `SUBJECT` SU ON SU.SUBJECTNO=R.SUBJECTNO;

#为每个学生制作在校期间每门课程的成绩单,要求每个学生参加每门课程的最后一次考试成绩作为该生本课程的最终成绩。
#成绩单的数据项
#学生姓名
#课程所属的年级名称
#课程名称
#考试日期
#考试成绩
SELECT STUDENTNAME,GRADENAME,SUBJECTNAME,EXAMDATE,STUDENTRESULT
FROM STUDENT S JOIN (
	SELECT R1.*,R.STUDENTRESULT
	FROM RESULT R JOIN (
		SELECT STUDENTNO,SUBJECTNO,MAX(EXAMDATE) EXAMDATE FROM RESULT GROUP BY STUDENTNO,SUBJECTNO
	) R1 ON R.STUDENTNO=R1.STUDENTNO AND R.SUBJECTNO=R1.SUBJECTNO AND R.EXAMDATE=R1.EXAMDATE
) R2 ON S.STUDENTNO=R2.STUDENTNO
JOIN `SUBJECT` SU ON SU.SUBJECTNO=R2.SUBJECTNO
JOIN GRADE G ON S.GRADEID=G.GRADEID
ORDER BY S.STUDENTNO;

左外连接

左外连接:左表的记录将会全部表示出来,而右表只会显示符合匹配条件的记录

  • 匹配,返回到结果集
  • 无匹配,NULL 值返回到结果集
#带条件的连接
#条件写在on后面时,表示先对内容筛选然后再进行连接
#条件写在where中,表示先对表进行连接,然后对连接的结果再做筛选

SELECT S.STUDENTNO,STUDENTNAME,SUBJECTNO,STUDENTRESULT FROM STUDENT S 
LEFT JOIN RESULT R ON S.STUDENTNO=R.STUDENTNO AND SUBJECTNO=3; 


SELECT S.STUDENTNO,STUDENTNAME,SUBJECTNO,STUDENTRESULT FROM STUDENT S 
LEFT JOIN RESULT R ON S.STUDENTNO=R.STUDENTNO WHERE SUBJECTNO=3; 

右外连接

不同的 SQL JOIN 对比

#查询所有课程的信息(某些课程可能还没有被考过)。
SELECT SU.*,T.AVG FROM (
  SELECT S.SUBJECTNO,AVG(STUDENTRESULT) AVG FROM `SUBJECT` S LEFT JOIN RESULT R ON S.SUBJECTNO=R.SUBJECTNO GROUP BY SUBJECTNO
)T JOIN `SUBJECT` SU ON T.SUBJECTNO=SU.SUBJECTNO;

#查询从未考试的课程信息。
SELECT SU.* FROM (
  SELECT S.SUBJECTNO,AVG(STUDENTRESULT) AVG FROM `SUBJECT` S LEFT JOIN RESULT R ON S.SUBJECTNO=R.SUBJECTNO GROUP BY SUBJECTNO 
)T JOIN `SUBJECT` SU ON T.SUBJECTNO=SU.SUBJECTNO WHERE AVG IS NULL;

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

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

相关文章

2023全球软件研发技术大会(SDCon2023)-核心PPT资料下载

一、峰会简介 本次峰会包含12大会议主题:云原生设施与平台、微服务架构实践、软件质量与效能、大数据实践与前沿、架构设计与演进、高可用与高性能架构、Web与大前端开发、编程语言与平台、AIGC与大模型、推荐系统实践、AI智能应用与研究、机器学习架构实践。 软件…

SpringCloud系列篇:核心组件之声明式HTTP客户端组件【远程消费】

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于SpringCloud的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一. 远程消费组件是什么 二. 远程消…

一个简单的KNN实现方法

对于许多离散问题,经过神经网络解决再通过softmax之后每一个值在[0,1]之间的连续变量,想要将其离散化,即离散化到每个元素都是 binary-variable,即 0-1 ,这时可以用KNN方法,其实就是找到与这个向量的方差最…

JavaWeb——新闻管理系统(Jsp+Servlet)之jsp新闻修改

java-ee项目结构设计 1.dao:对数据库的访问,实现了增删改查 2.entity:定义了新闻、评论、用户三个实体,并设置对应实体的属性 3.filter:过滤器,设置字符编码都为utf8,防止乱码出现 4.service:业务逻辑处理 5.servlet:处…

力扣刷题记录(29)LeetCode:695、1020、130

695. 岛屿的最大面积 这道题和计算岛屿周长类似&#xff0c;在这里dfs的功能就是由一块陆地出发&#xff0c;找出这块陆地所在的岛屿并返回岛屿面积。 class Solution { public:int dfs(vector<vector<int>>& grid,int i,int j){if(i<0||i>grid.size())…

kannegiesser触摸屏维修CTT-11 4PP420.1043-K37

贝加莱触摸屏维修4PP420.1043-K37 kannegiesser工控机触摸屏维修CTT-11 工控机触摸屏维修常见故障现象 1、工控机开机有显示&#xff0c;但是屏幕很暗&#xff0c;用调亮度功能键调试无任何变化&#xff1b; 2、工控机开机触摸屏白屏或花屏&#xff0c;但是外接显示器正常&a…

2024——剑之所至,所向披靡

目录 *年度总结导航 一.开篇——写在篇头 二.工作篇——心之所向 1.CSDN记录篇 1,1博客主页 ​编辑1.2 第一篇博文 1.3.产品测试 1.4C站获奖博文 1.5团队创建 2.腾讯云记录篇 2.1博主的主页 2.2 博主好文推荐 2.3腾讯云产品体验 三.励志篇——未来可期 2023年…

编程语言的未来:贴近人类、灵活高效与探索无限

编程语言的未来&#xff1f; 在当今的科技潮流中&#xff0c;编程语言是至关重要的一环&#xff0c;更是赋能科技行业的基础工具。我深信&#xff0c;未来的编程语言可能将朝着更贴近人类、灵活高效和面向无限可能的方向发展。 人性化是我预期的第一个趋势。未来的编程语言将…

java CAS

CAS 在高并发场景&#xff0c;可以使用加锁 或者CAS来保证原子性&#xff0c;但是加锁是很重量级的操作&#xff0c;CAS类似于乐观锁CAS &#xff08; Compare and swap &#xff09;比较并交换&#xff0c;是实现并发算法时常用到的技术&#xff0c;包含三个操作数&#xff1…

MySql海量数据存储与优化

一、Mysql架构原理和存储机制 1.体系结构 2.查询缓存 3.存储引擎 存储引擎的分类 innodb&#xff1a;支持事务&#xff0c;具有支持回滚&#xff0c;提交&#xff0c;崩溃恢复等功能&#xff0c;事务安全myisam:不支持事务和外键&#xff0c;查询速度高Memory&#xff1a;利…

网络安全学习资源

好久没写博客了&#xff0c;记录一些宝藏学习资源&#xff0c;不定时更新 Regex Learn - Step by step, from zero to advanced. 这是一个我认为最好的正则表达式学习网站&#xff0c;很多正则表达式学习资料都只提供了一个概念&#xff0c;但是正则表达式需要大量的练习&#…

基于原子搜索算法优化的Elman神经网络数据预测 - 附代码

基于原子搜索算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于原子搜索算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于原子搜索优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…

【数据湖架构】数据湖101:概述

数据湖是非结构化和结构化数据池&#xff0c;按原样存储&#xff0c;没有特定的目的&#xff0c;可以建立在多种技术上&#xff0c;如Hadoop&#xff0c;NoSQL&#xff0c;Amazon Simple Storage Service&#xff0c;关系数据库或各种组合根据一份名为“什么是数据湖”的白皮书…

ffmpeg+x265精简压缩图片

可以看到700M的图片可以压缩到只有9M&#xff0c;并且模型推理精度只会下降0.07.有很多种压缩方式&#xff0c;经过大量实验qb36是最好的&#xff0c;默认使用这个。 input_images&#xff1a;原始图片。 mkv_files\qb36&#xff1a;中转文件&#xff0c;也就是说原始图片要先…

STL标准库与泛型编程(侯捷)笔记3

STL标准库与泛型编程&#xff08;侯捷&#xff09; 本文是学习笔记&#xff0c;仅供个人学习使用。如有侵权&#xff0c;请联系删除。 参考链接 Youbute: 侯捷-STL标准库与泛型编程 B站: 侯捷 - STL Github:STL源码剖析中源码 https://github.com/SilverMaple/STLSourceCo…

qt鼠标常用事件

和上一个案例相同,也是做了提升&#xff0c;换了相同父类,但是方式有所不同 先在widget.ui中加入label标签,此时其父类为QLabel,然后想实现鼠标在QLabel上的捕获。所以我们需要把QLabel提升为自己的框架&#xff0c;然后自定义框架后&#xff0c;我们就可以自己捕获信息了。然…

遗传算法总结(迭代版本2:附带MATLAB例题代码)

目录 基本概念&#xff1a; 具体例子 1.我们先对图像进行抽象化&#xff1a; 2.我们将得到的六串数字进行扁平化处理&#xff1a; 3.解释即后续操作​编辑 基本步骤&#xff1a; 总结 例题1&#xff1a; 例题2&#xff1a; 基本概念&#xff1a; 染色体&#xff08;Ch…

uniapp 文字超出多少字,显示收起全文按钮效果demo(整理)

收起展开 <template><view class"font30 color000 mL30 mR30"><text :class"showFullText ? : clamp-text">{{ text }}</text><view v-if"showToggleBtn && text.length > 42" click"toggleShowFu…

基于JAVA的服装店库存管理系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 服装档案模块2.4 服装入库模块2.5 服装出库模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 角色表3.2.2 服装档案表3.2.3 服装入库表3.2.4 服装出库表 四、系统展示五、核心代码5.…

小白入门基础 - tomcat

一&#xff1a;前言 Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP 程序的首选。对于一个初学者来说&#xff0c;可以这样认为&#x…