MySql之内连接,外连接,左连接,右连接以及子查询举例详解

一.数据准备

资源绑定中有sql执行语句,直接复制粘贴,用navicat执行创建表并插入数据

(有需要的可自行下载,如有问题可在评论区留言)

students,scores,courses三张表的联系如下图所示

二.内连接

把两张表相同的地方查询出来

(1)语法

  • select * from 表1 inner join 表2 on 表1.字段 = 表2.字段
  • 内连接最重要的是,找对两张表要关联的字段

students表

scores表

students表和scores内连接查询结果

SELECT * from students INNER JOIN scores ON students.studentNo=scores.studentNo

(2)内连接查询,显示指定的字段

例:students表与socres内连接,只显示name 课程号 成绩

SELECT name, courseNo, score from students INNER JOIN scores on students.studentNo = scores.studentNo

(3)带有where条件的内连接

语法  select * from 表1 inner join 表2 on 表1.字段 = 表2.字段 where 条件

查询王昭君的信息,要求只显示姓名、课程号、成绩

SELECT name,courseNo,score FROM students INNER JOIN scores on students.studentNo=scores.studentNo 
WHERE NAME='王昭君'

(4)带有and的where条件

查询姓名为’王昭君’,并且成绩小于 90 的信息,要求只显示姓名、成绩

SELECT name,score FROM students INNER JOIN scores on students.studentNo=scores.studentNo 
WHERE NAME='王昭君' AND score<90

(5)多表内连接

查询学生信息和成绩以及成绩对应的课程名称

SELECT * from students INNER JOIN scores on students.studentNo=scores.studentNo
INNER JOIN courses on scores.courseNo=courses.courseNo

(6)写sql的技巧:

  • 搭框架

    • 基本的select语句框架搭建起来,如果有多表,把相应的多表也联合进来

  • 看条件

    • 决定where后面的具体条件

  • 显示的字段

    • select后面到底要显示什么字段

举例:查询所有学生的’linux’课程成绩,要求只显示姓名、成绩、课程名

-- 第一步:搭框架
-- SELECT * from students INNER JOIN scores 
-- on students.studentNo = scores.studentNo
-- INNER JOIN courses on scores.courseNo = courses.courseNo;
-- 第二步:看条件
-- SELECT * from students INNER JOIN scores 
-- on students.studentNo = scores.studentNo
-- INNER JOIN courses on scores.courseNo = courses.courseNo
-- where courseName = 'linux';
-- 第三步:返回字段名
SELECT name, score, courseName from students INNER JOIN scores 
on students.studentNo = scores.studentNo
INNER JOIN courses on scores.courseNo = courses.courseNo
where courseName = 'linux';

(7)带有order by的内连接

-- 例 8:查询成绩最高的男生信息,要求显示姓名、课程名、成绩
SELECT name, score, courseName from students INNER JOIN scores 
on students.studentNo = scores.studentNo
INNER JOIN courses on scores.courseNo = courses.courseNo
where sex = '男'
order by score desc LIMIT 1;

三.左连接

 包括了内连接,同时还查询左表特有的内容

(1)语法

  • select * from 表1 left join 表2 on 表1.字段 = 表2.字段

--查询所有学生的信息以及成绩,包括没有成绩的学生
SELECT * from students left JOIN scores ON
students.studentNo = scores.studentNo;

四.右连接

包括了内连接,同时还查询右表特有的内容

(1)语法

  • select * from 表1 right join 表2 on 表1.字段 = 表2.字段
--查询所有课程的信息,包括没有成绩的课程
SELECT * from scores RIGHT JOIN courses ON
scores.courseNo = courses.courseNo;

五.子查询

  • 子查询是嵌套到主查询里面的

  • 子查询做为主查询的数据源或者条件

  • 子查询是独立可以单独运行的查询语句

  • 主查询不能独立运行,依赖子查询的结果

--查询大于平均年龄的学生记录
-- 用子查询实现
select * from students where age > (SELECT avg(age) from students);

标量子查询------子查询返回结果只有一行,一列

select * from students where age > (SELECT avg(age) from students);

(该子查询的结果只有一行一列)

列子查询------子查询返回一列多行

--用子查询,查询所有女生的信息和成绩
--用内连接实现
SELECT * from students INNER JOIN scores ON
students.studentNo = scores.studentNo
where sex = '女';
--用子查询实现
select * from (SELECT * from students where sex = '女') stu
INNER JOIN scores sc on stu.studentNo = sc.studentNo;

表级子查询------子查询返回结果为多行,多列

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

p11 第60题 设计一个算法,逆序单链表中的数据 电子科技大学2014年数据结构(c语言代码实现)

通过头插法可以实现单链表的逆置 下方博客有图解&#xff1a; 王道p40 5.将带头结点的单链表就地逆置&#xff0c;所谓“就地”是指辅助空间复杂度为O&#xff08;1&#xff09;-CSDN博客 单链表的逆置可以通过遍历链表&#xff0c;逐个将节点取出并插入到新链表的头部来实现…

pandas教程:USDA Food Database USDA食品数据库

文章目录 14.4 USDA Food Database&#xff08;美国农业部食品数据库&#xff09; 14.4 USDA Food Database&#xff08;美国农业部食品数据库&#xff09; 这个数据是关于食物营养成分的。存储格式是JSON&#xff0c;看起来像这样&#xff1a; {"id": 21441, &quo…

0004Java程序设计-ssm基于微信小程序的校园第二课堂

文章目录 摘 要目录系统设计开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅&#x1f427;裙&#xff1a;776871563 摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。…

Doris-集群部署(四)

创建目录并拷贝编译后的文件 1&#xff09;创建目录并拷贝编译后的文件 mkdir /opt/module/apache-doris-0.15.0 cp -r /opt/software/apache-doris-0.15.0-incubating-src/output /opt/module/apache-doris-0.15.02&#xff09;修改可打开文件数&#xff08;每个节点&#x…

IOC DI入门

1.加上Component&#xff0c;控制翻转&#xff0c;将service和dao都交给IOC容器管理&#xff0c;成为IOC容器中的bean。用哪个类就在哪个类上面加component。 2.加上autowired。依赖注入。controller依赖于service&#xff0c;service依赖于dao。加上时&#xff0c;IOC容器会提…

2020年3月2日 Go生态洞察:Go协议缓冲区的新API发布

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

MySQL数据库【一】

博学而笃志&#xff0c;切问而近思 文章目录 数据库简介服务器、数据库以及表的关系连接数据库数据库操作命令创建数据库查看数据库创建语句查看数据库使用数据库修改数据库删除数据库 数据库字符集和校验规则查看系统默认字符集查看系统默认校验规则查看数据库支持的字符集查看…

中小型公司如何搭建运维平台,rancher、kubersphere、rainbond

很多开发人员应该是了解过运维发布相关的平台或实际操作过应用发布&#xff0c;但又通常不是十分熟悉。在一个初创公司&#xff0c;或者没有成熟的运维发布平台的公司&#xff0c;如果让你来搭建一套发布平台&#xff0c;你应该如何去抉择呢&#xff1f; 这里我简单介绍几种。…

diffusion model (九) EmuEdit技术小结

文章目录 背景1 核心思想2 方法2.1 方法建模2.2 数据工程2.2.1 image-edit任务类别定义2.2.2 指令集生成2.2.3 图片对的生成 3 结果 Paper: https://emu-edit.metademolab.com/assets/emu_edit.pdf Project web: https://emu-edit.metademolab.com/ Code: have not opensourc…

干货分享 | TSMaster采样点配置方法与消除错误帧流程

当通讯节点间采样点参数和波特率参数不匹配造成一些错误帧时&#xff0c;我们如何在TSMaster中设置以及调整波特率参数和采样点参数&#xff0c;来减少以及消除总线上出现的错误帧&#xff0c;进一步提高通信质量。本文着重讲解讲解如何借用TSmaster更加便捷地获取相应的采样点…

【精】A data-driven dynamic repositioning model in bicycle-sharing systems

A data-driven dynamic repositioning model in bicycle-sharing systems 爱思唯尔原文 doi:https://doi.org/10.1016/j.ijpe.2020.107909 article{data2021BRP, address {Univ Cambridge, Inst Mfg, Cambridge CB3 0FS, England}, author {Zhang, Jie and Meng, Meng and W…

微服务--04--SpringCloudGateway 网关

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.网关路由1.1 认识网关在SpringCloud当中&#xff0c;提供了两种网关实现方案&#xff1a; 1.2.快速入门1.3.路由过滤 2.网关登录校验2.1.鉴权思路分析2.2.网关过滤…

力扣23. 合并 K 个升序链表(java,最小堆解法)

Problem: 23. 合并 K 个升序链表 文章目录 题目描述思路解题方法复杂度Code 题目描述 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 思路 1.对于合并k个有序链表&#xff0c;我们较为容易想…

Java —— 泛型

目录 1. 什么是泛型 2. 泛型背景及其语法规则 3. 泛型类的使用 3.1 语法 3.2 示例 3.3 类型推导(Type Inference) 4. 裸类型(Raw Type) 4.1 说明 5. 泛型如何编译的 5.1 擦除机制 5.2 为什么不能实例化泛型类型数组 6. 泛型的上界 6.1 上界语法产生的背景 6.2 语法 6.3 示例 6.…

Node.js入门指南(完结)

目录 接口 介绍 RESTful json-server 接口测试工具 会话控制 介绍 cookie session token 上一篇文章我们介绍了MongoDB&#xff0c;这一篇文章是Node.js入门指南的最后一篇啦&#xff01;主要介绍接口以及会话控制。 接口 介绍 接口是前后端通信的桥梁 &#xff0…

elk日志分析系统:

elk日志分析系统: elk是一套完整的日志集中处理方案&#xff0c;由三个开源的软件简称组成&#xff1b; E:Easticsearch 简称ES是一个开源的&#xff0c;分布式的存储检索引擎&#xff0c;&#xff08;索引型的非关系数据库&#xff09;存储日志 由java代码开发的&#xff0…

麒麟V10桌面搭建FTP服务

1.1介绍 FTP&#xff1a;File transfer protocol &#xff08;文件传输协议&#xff09;是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分&#xff0c;其一为FTP服务器&#xff0c;其二为FTP客户端。其中FTP服务器用来存储文件&#xff0c;用户可以使用FTP客户端通过FT…

知识变现的未来:解析知识付费系统的核心

随着数字时代的发展&#xff0c;知识付费系统作为一种新兴的学习和知识分享模式&#xff0c;正逐渐引领着知识变现的未来。本文将深入解析知识付费系统的核心技术&#xff0c;揭示其在知识经济时代的重要性和潜力。 1. 知识付费系统的基本架构 知识付费系统的核心在于其灵活…

CorelDRAW Graphics Suite2023破解版含2024最新注册机下载

CorelDRAW Graphics Suite2023是Corel公司的平面设计软件&#xff1b;该软件是Corel出品的矢量图形制作工具软件&#xff0c;这个图形工具给设计师提供了矢量动画、页面设计、网站制作、位图编辑和网页动画等多种功能。在日常科研绘图中&#xff0c;若较为轻量&#xff0c;通常…