DQL命令查询数据(三)

本课目标

掌握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.STUDENTRESULTFROM 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.mzph.cn/news/603683.shtml

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

相关文章

Java技术栈 —— Hadoop入门(一)

Java技术栈 —— Hadoop入门(一) 一、Hadoop第一印象二、安装Hadoop三、Hadoop解析3.1 Hadoop生态介绍3.1.1 MapReduce - 核心组件3.1.2 HDFS - 核心组件3.1.3 YARN - 核心组件3.1.4 其它组件3.1.4.1 HBase3.1.4.2 Hive3.1.4.3 Spark 一、Hadoop第一印象…

【Project】TPC-Online Module (manuscript_2024-01-07)

PRD正文 一、概述 本模块实现隧道点云数据的线上汇总和可视化。用户可以通过注册和登录功能进行身份验证,然后上传原始隧道点云数据和经过处理的数据到后台服务器。该模块提供数据查询、筛选和可视化等操作,同时支持对指定里程的分段显示和点云颜色更改…

小游戏实战丨基于PyGame的消消乐小游戏

文章目录 写在前面PyGame消消乐注意事项系列文章写在后面 写在前面 本期内容:基于pygame实现喜羊羊与灰太狼版消消乐小游戏 下载地址:https://download.csdn.net/download/m0_68111267/88700193 实验环境 python3.11及以上pycharmpygame 安装pygame…

回溯算法part01 算法

回溯算法part01 今日内容: ● 理论基础 ● 77. 组合 1.LeetCode77. 组合 https://leetcode.cn/problems/combinations/ 模板 //回溯算法模板void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节…

西电期末1027.判断同构数

一.题目 二.分析与思路 不用把他转成字符串再转成数字之类的&#xff0c;用数学解决就好&#xff01;找出一个数的最后位就是将其对求余啊&#xff0c;找一个数有几位以前也有过啊&#xff0c;那不就过了嘛&#xff01; 三.代码实现 #include<bits/stdc.h>//万能头 in…

模板元编程简介

从引入 template 关键字开始&#xff0c;C里就出现了泛型编程&#xff0c;而又泛型编程衍生出的模板元编程&#xff08;template meta_programming&#xff0c;简称“元编程”&#xff09;则是众多编程范式中最复杂、最强大和最具有权威的一种。所谓“元编程”——metaprogramm…

Keil C51的编译器限制

编译器限制 Cx51 编译器体现了下面列出的一些已知限制。在大多数情况下&#xff0c;对 C 语言的组件没有限制;例如&#xff0c;您可以在 switch 块中指定无限数量的符号或 case 语句。如果有足够的地址空间&#xff0c;则可以定义数千个符号。 最多支持对任何标准数据类型的 …

二叉树的经典算法(算法村第八关青铜挑战)

二叉树里的双指针 所谓的双指针就是定义了两个变量&#xff0c;在二叉树中有需要至少定义两个变量才能解决问题。这两个指针可能针对一棵树&#xff0c;也可能针对两棵树&#xff0c;姑且也称之为“双指针”。这些问题一般与对称、反转和合并等类型题相关。 判断两棵树是否相…

Python:tqdm模块详解

tqdm 是一个用于在 Python 中显示进度条的模块&#xff0c;用于在循环或迭代过程中展示任务的进度。 1. 安装 首先&#xff0c;你可以通过 pip 安装 tqdm 模块&#xff1a; pip install tqdm2. 基本使用方法 在 Python 中使用 tqdm &#xff0c;只需将你的迭代对象传递给 tqd…

【Linux】之搭建 PostgreSQL 环境

前言 在 Linux 系统下安装 PostgreSQL&#xff0c;可以选择快捷方便的 Docker 安装&#xff0c;但正常的服务器都是直接原生安装的&#xff0c;所以&#xff0c;这里我将讲解如何正常安装 PostgreSQL 以及安装之后的一些配置。如果想了解 Docker 安装的话&#xff0c;可以查看我…

竞赛练一练 第27期:GESP和电子学会相关题目练习

GESP一级2023.03_小猫捉老鼠 1. 准备工作 (1)导入背景Room 2; (2)删除默认小猫角色,导入角色Mouse1、Cat 2。 2. 功能实现 (1)点击绿旗,老鼠出现在随机位置; (2)通过键盘的“↑”、“↓”、“←”、“→”键来控制小猫行走,每按一次,移动5步; (3)小猫在…

使用openCV进行图像处理

使用 openCV进行图像处理 使用 openCV进行图像处理&#xff0c;又名&#xff1a;学习计算机视觉理论&#xff0c;做 demo(第3 天&#xff09; 目录 2.1 图像模糊 2.1.1 均值滤波2.1.2 中值滤波2.1.3 高斯滤波2.1.4 案例实现 2.2 图像锐化 2.2.1 图像锐化简介2.2.2 案例实现 …

Spring依赖注入的魔法:深入DI的实现原理【beans 五】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Spring依赖注入的魔法&#xff1a;深入DI的实现原理【beans 五】 前言DI的基本概念基本概念&#xff1a;为什么使用依赖注入&#xff1a; 构造器注入构造器注入的基本概念&#xff1a;示例&#xff1a…

laravel-admin之 浏览器自动填充密码(如果需要渲染数据库密码的话,首先确认数据库密码是否可以逆向解密)

参考 https://blog.51cto.com/u_10401840/5180106 为什么浏览器端保存的密码一直自动写入到$form->password 解决办法 2、在页面进入的时候&#xff0c;默认表单的type值为text&#xff1b;推荐指数&#xff1a;2颗星 5、设置表单的readonly属性;推荐指数&#xff1a;4颗…

实习遇到问题备忘录

1.Hutool工具包的DB Hutool学习 —— 数据库 - db &#xff08;一&#xff09;Db简单操作 - 简书 (jianshu.com) 2.Consumer函数接口 Java 常用函数式接口之Consumer接口 - LeeHua - 博客园 (cnblogs.com) 3.sql高级用法merge into SQL高级知识——MERGE INTO - 知乎 (zhi…

Linux 上 Nginx 配置访问 web 服务器及配置 https 访问配置过程记录

目录 一、前言说明二、配置思路三、开始修改配置四、结尾 一、前言说明 最近自己搭建了个 Blog 网站&#xff0c;想把网站部署到服务器上面&#xff0c;本文记录一下搭建过程中 Nginx 配置请求转发的过程。 二、配置思路 web项目已经在服务器上面运行起来了&#xff0c;运行的端…

222.【2023年华为OD机试真题(C卷)】分配土地(扫描线算法-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-分配土地二.解题思路三.题解代码Python题解代码…

FineBI:简介

1 介绍 FineBI 是帆软软件有限公司推出的一款商业智能&#xff08;Business Intelligence&#xff09;产品。 FineBI 是定位于自助大数据分析的 BI 工具&#xff0c;能够帮助企业的业务人员和数据分析师&#xff0c;开展以问题导向的探索式分析。 2 现阶段数据分析弊端 现阶…

广义零样本学习综述的笔记

1 Title A Review of Generalized Zero-Shot Learning Methods&#xff08;Farhad Pourpanah; Moloud Abdar; Yuxuan Luo; Xinlei Zhou; Ran Wang; Chee Peng Lim&#xff09;【IEEE Transactions on Pattern Analysis and Machine Intelligence 2022】 2 conclusion Generali…

【DevOps-05】Integrate工具

一、简要说明 持续集成、持续部署的工具很多,其中Jenkins是一个开源的持续集成平台。 Jenkins涉及到将编写完毕的代码发布到测试环境和生产环境的任务,并且还涉及到了构建项目等任务。 Jenkins需要大量的插件保证工作,安装成本较高,下面会基于Docker搭建Jenkins。 二、Jenk…