一,分组查询

使用ORDER BY子句将表中的数据分成若干组(还是按行显示)

语法:

SELECT 字段名[,聚集函数] FROM 表名    [WHERE子句]    GROUP BY    要分组的字段名    [ORDER BY子句]

需要注意的是:在GROUP BY子句后出现的字段名必须在SELECT后的查询的字段中

1.分组查询中筛选条件分为两种:

类别 筛选数据源 在语句中的位置 使用的关键字
分组前筛选 原始数据表 GROUP BY子句前 WHERE
分组后筛选 分组后的结果集 GROUP BY子句后 HAVING

注意:

(1)能用分组前筛选(WHERE子句)完成查询优先使用分组前筛选

(2)如果聚集函数做筛选条件,则条件一定是放在HAVING子句中

2.GROUP BY子句中同时按多个字段分组

此时,GROUP BY子句后的多个字段的各个值都相同的会合并成为一行记录,就算两行记录前n-1个字段的值相同,而第n个字段的值不同也不会合并成一行而是两个不同的行。

3.添加排序

直接在GROUP BY子句后添加排序子句ORDER BY

二,连接查询

连接查询又称为多表查询。

语法:

SELECT 查询字段    FROM 表a  [别名]  [连接类型关键字]  JOIN  表b  [别名]  ON 连接条件
[WHERE 筛选条件] [GROUP BY子句] [HAVING 筛选条件] [ORDER BY 排序字段]

1.按功能分类:

内连接:包括 等值连接、非等值连接、自连接
外连接:包括 左外连接、右外连接、全外连接
交叉连接:实际上就是多个表的笛卡儿积

等值连接:

在连接条件中使用符号 =

非等值连接:

在连接条件中使用除 = 外其他符号,如>,<,between...and...等

自连接:inner

表自身的连接查询,一半这种情况下,很可能对表起两次不同的别名

需要注意的是:为表起别名后,要对查询字段进行表限定,则要使用别名去限定二不能再使用原表名了,这个和MySQL中解析SQL语句的顺序有关。

左外连接:left [outer]

以左边的表作为主表

右外连接:right [outer]

以右边的表作为主表

全外连接full [outer]

其实在MySQL中不支持圈外连接。

交叉连接:cross

左右表的笛卡儿积

2.按SQL标准分

在SQL92标准中:仅仅支持内连接

在SQL99标准中:支持内连接+外连接(左外,右外)+交叉连接

3.总结

以上总共有七种连接查询,我们用一张图来形象区分:

MySQL分组查询与连接查询的更多相关文章

  1. Mysql的查询语句(联合查询、连接查询、子查询等)

    Mysql的各个查询语句(联合查询.连接查询.子查询等) 一.联合查询 关键字:union 语法形式 select语句1 union[union选项] select 语句2 union[union选项 ...

  2. mysql查询、子查询、连接查询

    mysql查询.子查询.连接查询 一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.gr ...

  3. mysql 子句、子查询、连接查询

    一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.group by子句通常和count( ...

  4. 深入学习之mysql(五)连接查询

    深入学习Mysql(五)连接查询 1.准备数据库: CREATE DATABASE IF NOT EXISTS `db_book2` DEFAULT CHARACTER SET UTF8; USE ` ...

  5. mysql——多表——外连接查询——左连接、右连接、复合条件查询

    ), d_id ), name ), age ), sex ), homeadd ) ); ,,,'nan','beijing'); ,,,'nv','hunan'); ,,,'nan','jiang ...

  6. 【知识库】-数据库_MySQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    简书作者:seay 文章出处: 关系数据库SQL之高级数据查询:去重复.组合查询.连接查询.虚拟表 回顾:[知识库]-数据库_MySQL之基本数据查询:子查询.分组查询.模糊查询 Learn [已经过 ...

  7. 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...

  8. MSSQLServer基础05(联合查询,连接查询)

    联合结果集union(集合运算符) 集合运算符是对两个集合操作的,两个集合必须具有相同的列数,列具有相同的数据类型(至少能隐式转换的),最终输出的集合的列名由第一个集合的列名来确定.(可以用来连接多个 ...

  9. 图解SQLSERVER联合查询和连接查询的区别

      相信很多人都会用SQLSERVER联合查询和连接查询,但是用起来不一定都得心应手,对于其中的原理可能就模糊不清了,要想很牢固地掌握和运用SQL联合查询和连接查询机制,必须对其根本原理有很清晰认识, ...

随机推荐

  1. Linux文件属性及权限

    一.Linux文件属性: 例如: drwxr-xr-x 2 hdy hdy 4096 11月 28 00:18 桌面 drwxr-xr-x 2 hdy hdy 4096 11月 28 00:18 桌面 ...

  2. 基本服务器的AAA实验

    一.实验拓扑 二.网络地址分配 三.不同网段互相PING通 PC-A ping PC-B PC-A ping PC-C PC-B ping PC-C 四.配置过程 (1)在路由器R1上配置本地用户账号 ...

  3. Python基础面试,看这篇文章画重点吧,Python面试题No1

    为什么有这个系列的文章 一直想写一些更加基础的文章,但是总是想不到好的点子,最近到了就业季,一大堆学生面临就业了,正好,从Python的面试题出发,分析和解答一些常见的面试题,并且总结一些文字. 每一 ...

  4. .net Lambda表达式与Linq (LINQ TO object)

    Lambda表达式,是用来写匿名方法的. 在委托用得比较多,因为委托是传递方法的.   定义几个委托: public delegate void DoNoThing();//无参无返回值   publ ...

  5. 设计模式 | 工厂方法模式(factory method)

    定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 结构:(书中图,侵删) 一个工厂的抽象接口 若干个具体的工厂类 一个需要创建对象的抽象接口 若干个 ...

  6. 解决ruby安装后无法添加淘宝gem源------------学习记录

    使用sass ,需要安装ruby,会建议移除gem源,添加淘宝的gem源,但是淘宝的镜像源已经停止维护啦!!用https://gems.ruby-china.com 代替即可. 操作如下: 1)删除原 ...

  7. Android 项目中用得最多最火的第三方框架可能都在这里了

    分类 二级分类 框架名称 简介 Star 数 最近更新 UI 刷新 SmartRefreshLayout 智能下拉刷新框架 14k 18天 UI 刷新 Android-PullToRefresh 比较 ...

  8. uboot的驱动模型理解

    uboot的驱动模型,简称dm, 具体细节建议参考./doc/driver-model/README.txt 关于dm的三个概念: uclass:一组同类型的devices,uclass为同一个gro ...

  9. oracle 简单备注

    1. 建立数据库 备注: 1) oracle 不同于mysql 可以直接create database 2) oracle 创建schema时对应一个用户,即该schema的访问用户,与用户一一对应: ...

  10. IoC和AOP的理解

    spring 的优点?1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实 ...