当前位置: 首页 > article >正文

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

建议先阅读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.kler.cn/a/392382.html

相关文章:

  • 继承和多态(上)
  • vue2+ element ui 集成pdfjs-dist
  • mongoDB的安装及使用
  • 第三十六章 Vue之路由重定向/404页面设置/路径模式设置
  • 蓝牙BLE开发——iOS 每次写入数据超过200字节报错?
  • Debezium系列之:发件箱事件路由器
  • Java项目实战II基于微信小程序的童装商城(开发文档+数据库+源码)
  • 工程认证标准下的Spring Boot计算机课程管理策略
  • MYSQL——事务管理
  • html5多媒体标签
  • HDR视频技术之一:光学与人类视觉感知特性基础
  • 量子物理学以及量子计算
  • 【嵌入式】ESP32开发(一)ESP-IDF概述
  • CTF-RE: TEA系列解密脚本
  • 生成任意3D和4D场景!GenXD:通用3D-4D联合生成框架 | 新加坡国立微软
  • 【C#设计模式(2)——工厂模式】
  • 推荐一款游戏玩家性能优化工具:Razer Cortex
  • C#的6种常用集合类
  • MySQL 中的集群部署方案
  • 使用Python实现音频降噪
  • ubuntu-desktop-24.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法)
  • Windows快速部署并使用GitHub上Swift项目
  • 三 Spring的入门程序
  • 【MySQL】零碎知识点(易忘 / 易错)总结回顾
  • 【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-跳绳
  • el-table 行列文字悬浮超出屏幕宽度不换行的问题