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

MySQL——DQL的多表查询

一、交叉连接

标准语法:select  *  from  表1  cross  join  表2  where  表1.公共列  =  表2.公共列;

简单语法:select  *  from  表1 ,  表2  where  表1.公共列  =  表2.公共列;

公共列:两张表具有相同含义的列,不是列名一样。

二、内连接

语法:select  *  from  表1  inner  join  表2  on  表1.公共列  =  表2.公共列;

on子句:用来设置内连接的连接条件,进行数据的过滤的。

说明:inner关键字可以省略。

注意

内连接和交叉连接查询的结果是等价的;

对于内连接和交叉连接推荐使用内连接,因为内连接的查询效率高(即查询速度快)。

三、外连接

外链接分为左外连接(简称左连接)和右外连接(简称右连接)。

1、左外连接(左连接)

语法:select  *  from  表1  left  join  表2  on  表1.公共列  =  表2.公共列;

左连接的查询结果:以左表为主表,查询到两张表交集的部分,并且会把左表独有的数据也查询出来。

  • 左表:指的是写在left join左边的表就是左表;
  • 右表:指的是写在left join右边的表就是右表。

2、右外连接(右连接)

语法:select  *  from  表1  right  join  表2  on  表1.公共列  =  表2.公共列;

右连接的查询结果:以右表为主表,查询到两张表交集的部分,并且会把右表独有的数据也查询出来。

  • 左表:指的是写在right  join左边的表就是左表;
  • 右表:指的是写在right  join右边的表就是右表。

3、左连接和右连接有什么区别?

查询结果不同

  • 左连接查询的是两张表交集的数据以及左表独有的数据。
  • 右连接查询的是两张表交集的数据以及右表独有的数据。

语法不同

如果把两个语法中的表的位置互换一下,两者查询的结果就是一样的。

四、嵌套查询(子查询)

1、子查询一个值

语法:select  *  from  表名  where  列名  比较运算符  (select  列名  from  表名  where  条件);

注意事项:子查询语句中select后面一定不能跟 * ,只能跟列名。

2、子查询多个值

语法:select  *  from  表名  where  列名  in  (select  列名  from  表名  where  条件);

五、分组查询

分组要使group by来实现需要在group by后面加上分组字段。

MySQL中常用的聚合函数:

  • max() 求最大值
  • min() 求最小值
  • avg() 求平均值
  • sum() 求和
  • count(*) 用来统计数量,即有多少个。会统计空值(null值)。
  • count(列名) 用来统计数量,即有多少个。不会统计空值(null值)。

在分组之后不能使用where进行数据过滤,需要使用having。

六、having

where和having有什么区别?

1、having需要用在分组之后(即需要写在group by的后面),where要用在分组之前的数据过滤(即需要写在group by的前面)。

2、where查询条件中不能使用聚合函数,having查询条件中可以使用聚合函数。

3、where查询条件中不可以使用字段别名,而having查询条件中可以使用字段别名。

七、临时表

这张表不是实际存在的,把通过某条SQL语句查询的结果看作是一张表,这张表就称之为临时表。


文章转载自:
http://augustly.gbfuy28.cn
http://chaunt.gbfuy28.cn
http://biomagnify.gbfuy28.cn
http://aslope.gbfuy28.cn
http://antismog.gbfuy28.cn
http://brimmy.gbfuy28.cn
http://ascap.gbfuy28.cn
http://adjuster.gbfuy28.cn
http://archaeopteryx.gbfuy28.cn
http://abstriction.gbfuy28.cn
http://agana.gbfuy28.cn
http://bailiwick.gbfuy28.cn
http://botswanian.gbfuy28.cn
http://cephalometry.gbfuy28.cn
http://basecourt.gbfuy28.cn
http://aesthetically.gbfuy28.cn
http://carbonatite.gbfuy28.cn
http://cardiologist.gbfuy28.cn
http://calciphobe.gbfuy28.cn
http://baize.gbfuy28.cn
http://aquarist.gbfuy28.cn
http://anticlerical.gbfuy28.cn
http://asper.gbfuy28.cn
http://archenteron.gbfuy28.cn
http://bobbish.gbfuy28.cn
http://antimonyl.gbfuy28.cn
http://cagy.gbfuy28.cn
http://anarch.gbfuy28.cn
http://autokinetic.gbfuy28.cn
http://cherrapunji.gbfuy28.cn
http://www.dtcms.com/a/115060.html

相关文章:

  • 【谷歌设置】chrome打开页面在新tab设置(新版)
  • 基于高云fpga实现的fir串行滤波器
  • C语言【删除前导空格】
  • Scala语言基础:开启你的 Flink 之旅
  • 手搓多模态-04 归一化介绍
  • PDF 转图片,一行代码搞定!批量支持已上线!
  • C++中的内联函数
  • 嵌入式rodata段
  • 解锁异步编程潜能:如何利用 `asyncio` 模块构建高并发 IO 密集型服务
  • PDFBox渲染生成pdf文档
  • 近期Lerobot资料汇总,待整理
  • 在 Ubuntu24.04 LTS 上 Docker Compose 部署基于 Dify 重构二开的开源项目 Dify-Plus
  • 尚硅谷2019版Java集合和泛型
  • Docker 从入门到进阶 (Win 环境) + Docker 常用命令
  • 【Android安卓移动计算】实现项目一[模拟器启动项目]
  • CSRF漏洞利用的小点总结
  • JVM 参数调优指南_优化 Java 应用性能
  • nginx中的limit_req 和 limit_conn
  • WPS宏开发手册——常见问题
  • MySQL基础 [三] - 数据类型
  • Java 大视界 -- Java 大数据在航天遥测数据分析中的技术突破与应用(177)
  • 记录clickhouse记录一次性能优化,从60s到1s
  • JavaScript创建对象与构造函数
  • TPM/HSM/TEE差异分析
  • 浏览器 路由详解
  • c++最小二乘法
  • Lucene.Net 分词器选择指南:盘古分词 vs 结巴分词
  • Spring 执行流程(源码)
  • dmsetup 清理ceph osd残留磁盘分区
  • 项目总结之常问的一些问题