mysql连接查询详解
作者:one?2?1? 发布时间:2024-01-15 16:42:11
1.连接查询
作用:当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回
2、连接类型
内连接
定义:
内连接查询:查询结果为两个表匹配到的数据
语法1:
select * from 表1
inner join 表2 on 表1.列 = 表2.列
例:查询学生信息及学生成绩
语法2:
select * from 表1,表2 on 表1.列 = 表2.列
注:通常不使用此语法,效率较低
3个表连接
-- 查询学生信息及学生的课程对应的成绩
显示指定列
左连接
定义:
查询的结果为两个表匹配到的数据加左表特有的数据,对于右表中不存在的数据(匹配不到)使用null填充
语法:
select * from 表1
left join 表2 on 表1 .列 = 表2.列
例:
查询所有学生的成绩,包括没有成绩的学生
例:
查询所有学生的成绩,包括没有成绩的学生,需要显示课程名
右连接
定义:
右连接查询:查询结果为两个表匹配到的数据加右表特有的数据,对于左边中不存在的数据使用null填充
语法:
select * from 表1
right join 表2 on 表1 .列 = 表2.列
例:查询所有学生的成绩,包括没有成绩的学生
例:
查询所有学生的成绩,包括没有成绩的学生,需要显示课程名
自关联
定义
连接查询的一种应用,对同一个表查询多次,把查询多次得到的结果连接组成新的结果
主要应用场景:数据有上下级关系,并且存于同一个表中
例:查询河南省的所有城市
例:查询郑州市的所有区县
例:查询河南省所有区县
子查询
定义
在一个select 语句中,嵌入另外一个select语句,那么嵌入的那个select语句称之为子查询语句
主查询
外城的select称之为主查询语句
主查询和子查询的关系
子查询是嵌入到主查询中子查询是辅助主查询的,要么充当条件,要么充当数据源子查询是可以独立存在的语句是一条转正的select语句
子查询充当条件
以下例子中子查询返回结果只有一个值(一行一列),这种称之为标量子查询
例1:查询大于平均年龄的学生
-- 查询班里学生的平均年龄
SELECT AVG(age) FROM students --21.5833
-- 查询大于平均年龄的学生
SELECT * from students where age > 21.5833
SELECT * FROM students where age >(SELECT AVG(age) FROM students);
以下例子返回数据结果是一列数据(一列多行),这种称之为列子查询
例: 查询18岁学生的成绩,要求显示成绩
-- 学生表中查询18岁学生的学号
SELECT studentNo from students WHERE age = 18
-- 成绩表中根据学号查询成绩
SELECT * FROM scores where studentNo in ('002','006' )
SELECT * FROM scores where studentNo in (SELECT studentNo from students WHERE age = 18 )
以下例子查询的结果是一行(一行多列),这种称之为行子查询
例:查询和王昭君同班、同龄的学生信息
SELECT class,age from students where name = '王昭君'
SELECT * from students where class = '1班' and age = 20
SELECT * from students where (class,age) = ('1班' , '20')
SELECT * from students where (class,age) = (SELECT class,age from students where name = '王昭君')
子查询充当数据源
以下例子子查询返回的结果是多行多列(相当于一个表),这种称之为表级子查询;
例:查询数据库和系统测试的课程成绩
子查询 * 定关键字使用
in范围
格式:主查询where条件in(列子查询)
any|some任意一个
格式:主查询where 列 = any(列子查询)
在条件查询的结果中匹配任意一个几个,等价于in
all
格式:主查询where列 = all(列子查询):等价于里面所有
格式:主查询where列<>all(列子查询):不等于其中所有
来源:https://blog.csdn.net/weixin_45490820/article/details/124470657


猜你喜欢
- 本文带你快速了解@Async注解的用法,包括异步方法无返回值、有返回值,最后总结了@Async注解失效的几个坑。在 SpringBoot 应
- 1、Python的min函数返回列表中的最小的项。2、如何返回列表中最小的项的索引?def indexofMin(arr):
- 具体如下: 1>如我们知道开始时间,要加减一个时间,得出一个结果时间,可以用以下代码 $time1='2008-10-1 12
- 这篇文章主要介绍了python定义类self用法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 我目标文件夹下有一大批图片,我要把它转变为指定尺寸大小的图片,用pthon和opencv实现的。以上为原图片。import cv2impor
- 本文实例为大家分享了python名片管理系统的具体代码,供大家参考,具体内容如下import oslist_all = []def page
- 想必Java 的开发者没有不知道或者没用过 jps 这个命令的,这个命令是用来在主机上查看有哪些 Java 程序在运行的。我刚用 Go 语言
- 线程实现Python中线程有两种方式:函数或者用类来包装线程对象。threading模块中包含了丰富的多线程支持功能:threading.c
- 本文实例讲述了Python实现的人工神经网络算法。分享给大家供大家参考,具体如下:注意:本程序使用Python3编写,额外需要安装numpy
- 前面讲解了使用纯numpy实现数值微分和误差反向传播法的手写数字识别,这两种网络都是使用全连接层的结构。全连接层存在什么问题呢?那就是数据的
- Web应用的发展,使得客户端存储使用得也越来越多,而实现客户端存储的方式则是多种多样。最简单而且兼容性最佳的方案是Cookie,但是作为真正
- 实际线上的场景比较复杂,当时涉及了truncate, delete 两个操作,经确认丢数据差不多7万多行,等停下来时,差不多又有共计1万多行
- 本文主要介绍Python3.6及TensorFlow的安装和配置流程。一、Python官网下载自己电脑和系统对应的Python安装包。&nb
- 这篇文章主要介绍了如何基于python实现归一化处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- python函数的参数类型和返回类型默认为int。如果需要传递一个float值给dll,那么需要指定参数的类型。如果需要返回一个flaot值
- 实例 1基本的XPath语法类似于在一个文件系统中定位文件,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径。/AAA选择根
- 本篇文章是作者关于在学习了《Python学习手册》以后,分享的学习心得,在此之前,我们先给大家分享一下这本书:下载地址:Python学习手册
- SQL Server 2008我们也能从中体验到很多新的特性,但是对于SQL Server 2008安装,还是用图来说话比较好。本文将从SQ
- 当where子句对某一列使用函数时,除非利用这个简单的技术强制索引,否则Oracle优化器不能在查询中使用索引。通常情况下,如果在WHERE
- 一:使用where少使用having;二:查两张以上表时,把记录少的放在右边;三:减少对表的访问次数;四:有where子查询时,子查询放在最