广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中的聚合查询和联合查询怎么实现
  • 723
分享到

MySQL中的聚合查询和联合查询怎么实现

2023-07-05 14:07:06 723人浏览 薄情痞子
摘要

这篇文章主要介绍“MySQL中的聚合查询和联合查询怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mysql中的聚合查询和联合查询怎么实现”文章能帮助大家解决问题。一、聚合查询(行与行之间的计

这篇文章主要介绍“MySQL中的聚合查询和联合查询怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mysql中的聚合查询和联合查询怎么实现”文章能帮助大家解决问题。

一、聚合查询(行与行之间的计算)

1.常见的聚合函数有:

函数

说明

count

查询到的数据的数量

sum

查询到的数据的总和(针对数值,否则无意义)

avg

查询到的数据的平均值(针对数值,否则无意义)

max

查询到的数据的最大值(针对数值,否则无意义)

min

查询到的数据的最小值(针对数值,否则无意义)

Select count(*) from student(统计行数)Select count(1) from student(统计第一列数据的行数,如果有null则不算行数)Select sum(math) from student(数学成绩总分)Select sum(math) from student where math > 60(数学大于60的总分)Select avg(math+chinese+english) from student(统计平均总分)Select max(math) from student(数学最高分)Select min(math) from student where math >60(数学大于60的最低分)

2.group by

select 中使用 group by 子句可以对指定列进行分组查询。使用  group by 进行分组查询时,select 指定的字段必须是“分组依据字段”,其他字段若想出现在select 中则必须包含在聚合函数中。

select column1, sum(column2), .. from table group by column1,column3;//示例:查询每个角色的最高工资、最低工资和平均工资 Select role,max(salary),min(salary),avg(salary) from emp group by role;

3.having

group by 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 WHERE 语句,而需要用Having

//示例:显示平均工资低于1500的角色和它的平均工资select role,avg(salary) from emp group by role having avg(salary)<1500;

关于分组查询指定条件有三种情况:

1.分组之前,指定条件(先筛选,再分组)用where

2.分组之后,指定条件(先分组,再筛选)用having

3.分组之前和分组之后都指定条件(先where后having)

关于执行顺序:

MySQL中的聚合查询和联合查询怎么实现

二、联合查询(多表查询)

多表查询是对多张表的数据取笛卡尔积,笛卡尔积是通过排列组合算出来的,因此包含了很多无效数据,因此需要加上连接条件,用来筛选有效的数据。

1.进行联合查询的步骤:

首先计算笛卡尔积

引入连接条件(如:where student.id = score.student_id)

再根据需求,加入必要的条件(where where student.id = score.student_id and student.name=&rsquo;xxx&rsquo;)

去掉多余的列,只保留需要关注的列(select student.name,score.score from student,score where where student.id = score.student_id and student.name=&rsquo;xxx&rsquo;)

2.内连接(from,join on)

语法:

select 字段 from 表1 (as)别名1 [inner] join 表2 (as)别名2 on 连接条件 and 其他条件;

select 字段 from 表1 (as)别名1,表2 (as)别名2 where 连接条件 and 其他条件;

示例:查询“张三”同学的成绩

select sco.score from student as stu inner join score as sco on stu.id=sco.student_id and stu.name='张三';

或者

select sco.score from student as stu, score as sco where stu.id=sco.student_id and stu.name='张三';

3.外连接(left/right join on)

外连接分为左外连接和右外连接。如果联合查询,左侧的表完全显示我们就说是左外连接;右侧的表完全显示我们就说是右外连接。

语法:

左外连接,表1完全显示

select 字段名  from 表名1 left join 表名2 on 连接条件;

右外连接,表2完全显示

select 字段 from 表名1 right join 表名2 on 连接条件;

4.自连接

自连接是指在同一张表中连接自身进行查询。

示例:显示所有“数学”成绩比“语文”成绩高的学生成绩信息

先查询“数学”和“语文”课程的id

select id,name from course where name='数学' or name='语文';

数学id=1;

语文id=2;

再查询成绩表中,“数学”成绩比“语文”成绩 好的信息

select s1.* from score s1,score s2 where s1.student_id = s2.student_id and s1.score > s2.score and s1.course_id = 1 and s2.course_id = 2;

5.子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。

单行子查询:返回一行记录的子查询

select * from student where classes_id=(select classes_id from student where name='张三');

多行子查询:返回多行记录的子查询

1.使用(not) in 关键字

使用 in 

select * from score where course_id in (select id from course where

name='语文' or name='英文');

使用not in

select * from score where course_id not in (select id from course where

name!='语文' and name!='英文');

1.使用(not) exists 关键字

使用 exists 

select * from score sco where exists (select sco.id from course cou

where (name='语文' or name='英文') and cou.id = sco.course_id);

使用 not exists

select * from score sco where not exists (select sco.id from course cou

where (name!='语文' and name!='英文') and cou.id = sco.course_id);

在from子句中使用子查询,把一个子查询当做一个临时表使用。(not)in是放在内存中的,如果查询的数据太大,内存中放不下,此时就需要使用(not)exists。exists本质上就是让数据库执行多个查询操作,并把结果放在磁盘中,因此对于exists来说,执行效率大大低于in,而且可读性也不是很好,这种比较适合处理一些特殊的场景。

6.合并查询

合并查询本质上就是把两个查询结果集合并成一个,但是要求这两个结果集的列一样,才能合并。即:

为了合并多个select的执行结果,可以使用集合操作符 uNIOn,union all。使用union和union all时,前后查询的结果集中,字段需要一致。

union关键字

用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。

示例:

select * from course where id<3 union select * from course where name='英文';

或者使用or来实现

select * from course where id<3 or name='英文';

union all关键字

用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。

示例:

可以看到结果集中出现重复数据

select * from course where id<3 union all select * from course where name='英文';

关于“mysql中的聚合查询和联合查询怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网数据库频道,小编每天都会为大家更新不同的知识点。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中的聚合查询和联合查询怎么实现

本文链接: https://www.lsjlt.com/news/352144.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中的聚合查询和联合查询怎么实现
    这篇文章主要介绍“MySQL中的聚合查询和联合查询怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL中的聚合查询和联合查询怎么实现”文章能帮助大家解决问题。一、聚合查询(行与行之间的计...
    99+
    2023-07-05
  • MySQL --- 聚合查询 和 联合查询
    聚合查询: 下文中的所有聚合查询的示例操作都是基于此表: 聚合函数 聚合函数都是行与行之间的运算。 count() select count(列名) from 表名; 统计该表中该列的行数,但是 null 值不会统计在内,但是...
    99+
    2023-10-21
    mysql 数据库 sql
  • MySQL进阶查询、聚合查询和联合查询
    目录1. 前言2. 表的设计2.1 一对一2.2 一对多2.3 多对多3.将查询结果放到另一个表中4. 聚合查询4.2 GROUP BY4.3 HAVING5. 联合查询(多表查询)5.1 内连接5.2 外连接5...
    99+
    2023-04-12
    MySQL进阶查询 MySQL聚合查询 MySQL联合查询
  • 【MySQL】进阶查询-聚合查询和联合查询
    文章目录 1. 前言2. 表的设计2.1 一对一2.2 一对多2.3 多对多 3.将查询结果放到另一个表中4. 聚合查询4.1 聚合函数4.2 GROUP BY4.3 HAVING 5. 联合查询(多表查询)5.1 ...
    99+
    2023-08-17
    mysql 数据库 sql
  • MySQL数据库聚合查询和联合查询怎么实现
    这篇文章主要介绍“MySQL数据库聚合查询和联合查询怎么实现”,在日常操作中,相信很多人在MySQL数据库聚合查询和联合查询怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL数据库聚合查询和联合...
    99+
    2023-06-21
  • MySQL聚合查询与联合查询操作实例
    目录一. 聚合查询1.聚合函数(count,sum,avg...)2.GROUP BY子句3.HAVING二. 联合查询((重点)多表)1.内连接2.外连接3.自连接4.子查...
    99+
    2022-11-13
  • MySQL中的聚合查询和联合查询操作代码
    目录一、聚合查询(行与行之间的计算)1.常见的聚合函数有:2.group by3.having二、联合查询(多表查询)1.进行联合查询的步骤:2.内连接(from,join on)3.外连接(left/righ...
    99+
    2023-03-20
    mysql聚合查询和联合查询 mysql聚合查询 mysql联合查询
  • 【MySQL】聚合查询 + 多表联合查询(重点)
    文章目录 前言一、聚合查询1, 聚合函数2, 聚合函数使用示例3, GROUP BY 子句4, HAVING 子句 二、联合查询(重点)1, 笛卡尔积2, 内连接2.1, 示例12...
    99+
    2023-09-29
    mysql 数据库 聚合查询 联合查询 内连接
  • MySQL 数据库聚合查询和联合查询操作
    目录1. 插入被查询的结果2. 聚合查询2.1 介绍2.2 聚合函数2.3 group by 子句2.4 having3. 联合查询3.1 介绍3.2 内连接3.3 外连接...
    99+
    2022-11-12
  • Mysql中怎么实现子查询和联合查询
    Mysql中怎么实现子查询和联合查询,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。查询: 在select查...
    99+
    2022-10-18
  • MySQL聚合查询与联合查询操作的示例分析
    这篇文章主要为大家展示了“MySQL聚合查询与联合查询操作的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL聚合查询与联合查询操作的示例分析”这篇文章吧。一. 聚合查询1.聚合函...
    99+
    2023-06-29
  • MySQL联合查询如何实现
    这篇文章主要介绍“MySQL联合查询如何实现”,在日常操作中,相信很多人在MySQL联合查询如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL联合查询如何实现”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-04
  • Mybatis联合查询怎么实现
    本篇内容主要讲解“Mybatis联合查询怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mybatis联合查询怎么实现”吧!数据库表结构departmentemployee要求一现在的要求...
    99+
    2023-06-26
  • MySQL数据查询中如何使用集合/聚合函数查询
    小编给大家分享一下MySQL数据查询中如何使用集合/聚合函数查询,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!MySQL聚合函数如下:函数作用avg()返回某列的平均值count()返回某...
    99+
    2022-10-18
  • MySQL 分组查询和聚合函数
    概述 相信我们经常会遇到这样的场景:想要了解双十一天猫购买化妆品的人员中平均消费额度是多少(这可能有利于对商品价格区间的定位);或者不同年龄段的化妆品消费占比是多少(这可能有助于对商品备货量的预估)。 这个时候就要...
    99+
    2022-05-24
    MySQL 分组查询 MySQL 聚合函数
  • MySQL聚合查询方法怎么使用
    本篇内容介绍了“MySQL聚合查询方法怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、前言前面的内容已经把基础的增删改查介绍的差不...
    99+
    2023-07-05
  • 什么是mysql的联合查询
    本文主要给大家介绍什么是mysql的联合查询,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下什么是mysql的联合查询吧。基本概念:将两个具有相同字段...
    99+
    2022-10-18
  • sql语句中怎么实现联合查询
    sql语句中怎么实现联合查询,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。sql语句联合查询详解  2011-03-0...
    99+
    2022-10-18
  • MySQL联合查询实现方法详解
    联合查询简单说 就是将两次查询合并在一起 例如 我们这里有一个用户表 我们先编写一段SQL select name from staff where age > 21; 查询年龄大于21的 输...
    99+
    2022-11-01
  • 【MySQL联合查询】轻松实现数据关联
    1、联合查询 联合查询又称为多表查询,它的基本执行过程就是笛卡尔积 1.1 认识笛卡尔积 那么什么是笛卡尔积呢? 答:笛卡尔积就是将两张表放在一起进行计算,把第一张表的每一行分别取出来和第二张表的每一行进行连接,得到一个新的行。 ...
    99+
    2023-09-15
    mysql 数据库 sql Powered by 金山文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作