MySql--多表查询及聚合函数总结

devtools/2024/11/17 20:43:07/

建议先阅读MySql--增删改查表设计总结-CSDN博客

一、聚合函数

  1.COUNT(列||*):统计结果的个数。

  2.SUM(列):求和。

  3.AVG(列):求平均值。

  4.MIN(列) 最小值。

  5.MAX(列) :最大值。

二、GROUP BY 分组查询

  对某一个字段进行分组操作,分组后可以结合聚合函数进行一些运算。

HAVING子句

  对GROUP BY的结果进行过滤

三、联合查询(表连接查询)

1.内连接

  select * from table1,table2 where table1.xxx=table2.xxx;

  select * from table1 join table2 on table1.xxx=table2.xxx;

   select * from table1 inner join table2 on table1.xxx=table2.xxx;

2.表连接的执行过程

  1.先计算参与表连接的笛卡尔积

  2.通过连接条件过滤无效数据

  3.加入查询条件得到想要的结果行

  4.精简列名得到最终想到查询的列

3.外连接

 select * from table1 left join table2 on table1.xxx=table2.xxx;

 select * from table1 right join table2 on table1.xxx=table2.xxx;

左外连接以左表为基准,左边的表中所有的数据全部显示,右表中没有对应的记录用NULL填充

右外连接以右表为基准,右边的表中所有的数据全部显示,左表中没有对应的记录用NULL填充

主要应用在两张表数据不一致的场景中。

4.自连接

  select * from table1.t1,table1.t2 where t1.xxx=t2.xxx;

  把行转换成列,在查询的时候可以用where进行条件过滤,实现行与行之间的比较。

5.子查询

单行子查询 select * from table1 where id=(select id from table2 where clo=xxx);

多行子查询 select * from table1 where id in (select id from table2 where clo=xxx);

内层查询的结果作为外层查询的条件,把多条语句合并为一条执行

子查询可以无限嵌套,层数过多会影响效率。

6.合并查询

select * from table1 union select * from table2;

select * from table1 union all select * from table2;

作用是把两个结果集合并成一个返回。

注意:合并查询时多个查询的查询列表必须匹配,MySql不对结果做校验,写的时候务必注意。

四、SQL语句中各部分的执行顺序

 我们自己随便构造一条sql,不一定可以执行,但是相关的关键字都包含:

select distinct id,name,avg(age) from student where class_id=1 join class on student.class_id=class.id group by student.id having avg(age)>0 order by student.id asc limit 100;

FROM -->JION ON -->WHERE -->GROUP BY -->HAVING -->SELECT ---> DISTINCT -->ORDER BY --> LIMIT


http://www.ppmy.cn/devtools/134784.html

相关文章

automa 浏览器自动化工具插件

参考: https://github.com/AutomaApp/automa 安装后可以自己创建自动化工作流: 工具流插件可以选择

Python爬虫下载新闻,Flask展现新闻(2)

上篇讲了用Python从新闻网站上下载新闻,本篇讲用Flask展现新闻。关于Flask安装网上好多教程,不赘述。下面主要讲 HTML-Flask-数据 的关系。 简洁版 如图,页面简单,主要显示新闻标题。 分页,使用最简单的分页技术&…

Flutter Getx状态管理

在 Flutter 开发中,状态管理是一个非常重要的话题。随着应用变得更加复杂,状态管理的方式也变得越来越多。Flutter 提供了多种状态管理的解决方案,如 Provider、Riverpod、BLoC 等,而在这些选项中,GetX 作为一个轻量级…

充电桩基础设施的时空大数据分析:以深圳市为例(二)

本篇文章我们将继续从整个深圳市的角度,深入探讨充电桩的使用率、供需关系及其对价格的影响。通过对2022年9月1日至2023年8月31日的充电桩累计充电量分布数据进行分析,结合充电桩的小时颗粒度使用量和春节期间的使用量变化,探究充电桩使用模式…

前端神经网络入门(三):深度学习与机器学习的关系、区别及核心理论支撑 - 以Brain.js示例

一、前言 随着人工智能的迅速发展,深度学习已经成为了机器学习领域中备受关注的分支。传统上,深度学习在后端和数据中心的高性能计算环境中广泛应用,但随着JavaScript和Web技术的进步,现在前端开发者也可以借助工具如 Brain.js 进…

Spring Boot 牛刀小试 org.springframework.boot:spring-boot-maven-plugin:找不到类错误

今天看了下书翻了下Spring Boot的用法,下载idea后, 反复出现org.springframework.boot:spring-boot-maven-plugin:找不到类错误,后来看了下调试窗口,发现是连不上maven的网站443错误,解决思路很简单,把ide连…

python贪心算法实现(纸币找零举例)

目录 问题描述 贪心策略 Python代码实现 代码解释 示例输出 注意事项 问题描述 给定一组纸币面值和一个目标金额,找出用最少数量的纸币来找零的方法。 贪心策略 每次选择面值最大的纸币,直到无法继续选择为止。 Python代码实现 def min_bills…

对称加密算法DES的实现

一、实验目的 1、了解对称密码体制基本原理 2、掌握编程语言实现对称加密、解密 二、实验原理 DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密…