mysql 06章_分组查询和链接查询
一、分组查询
在进行查询时,通常需要按某个或某些字段进行一些统计,因此就需要使用分组查询,但分组后通常需要与聚合函数使用,分组才有意义。
语法:SELECT <字段列表|*> FROM 表名[WHERE <筛选条件1>][GROUP BY<分组字段列表> [HAVING <筛选条件2>]];
说明:a、having是对分组统计的结果进行筛选
b、where是在分组统计之前进行筛选
1、GROUP BY 单独使用:
/*举得例子由于电脑出现故障被我重装系统,找不到了*/
2、GROUP BY 结合HAVING 的使用: 3、GROUP BY 结合HAVING 、WHERE的使用: 二、连接查询
在实际应用过程中,往往都需要针对多张数据表进行查询,常用的有连接查询、子查询,
连接查询就是需要将多张表通过主外键的关联关系作为连接的筛选条件,满足条件的记录会被连接为一条条的虚拟记录,
从而扩展出我们项目需要的一些数据。
1、内连接:INNER JOIN
语法:SELECT <字段|*> FROM 表1 INNER JOIN 表2..... [WHERE <连接条件>];
说明:要保证前后表中主键或外键都要有的值才会被显示出来。
举例:
2、外连接
语法:SELECT <字段|*> FROM 表1 {LEFT | RIGHT | CROSS} JOIN 表2....... [ON <连接条件>];
1)左外连接:LEFT JOIN
说明:以左表为主,右表为辅,左表中有的主、外键都要显示,若右表中没有主、外键的记录使用NULL来代替。
2)右外连接:RIGHT JOIN
说明:与左外连接刚好相反
3)交叉连接:CROSS JOIN
说明:兼顾左表和右表,两个表的主键或外键值都有的数据才被显示,等价于“内连接”,“内连接”使用where关键字,交叉连接使用ON关键字添加连接条件
举例:
3、自连接:
说明:在某些特殊需求的情况下,需要将一张表当做多张表来看待,将他们连接在一起进行查询,
但本质他们是同一张表,因此自己与自己进行连接查询称为自连接查询
举例:-- 显示tb_emp表中的“员工编号”、“员工姓名”、“上司编号”、“上司姓名”
SELECT employee.empno 员工编号,employee.ename 员工姓名,manager.empno 上司编号,manager.ename 上司姓名
FROM tb_emp manager , tb_emp employee WHERE employee.MGR = manager.EMPNO;
mysql 06章_分组查询和链接查询的更多相关文章
- MySQL 07章_子查询
子查询就是查询中还可以嵌套其他的查询,通常是内层查询的结果作为外层查询的条件来使用 执行循序,自内向外依次执行 一.内层查询返回“单列单行”的结果 -- 1.查询宋江的出生日期 SELECT TIME ...
- MySQL 10章_视图、事务
一. 视图: 视图(view)是保存了查询语句的一种数据库对象,其数据来源是查询语句对应的数据表,他的结果与数据表查询的结果一样也是一张虚拟的数据表 . 为什么需要视图: ) 不同的用户关心的数据可能 ...
- SQL Server Form子查询、链接查询
所用数据表:用户,钱包,订单 一.from子查询 --查询钱包里金额大于30000 and User_ID = Users.ID) ) 二.链接查询 内连接(inner join)外连接(left/r ...
- MySQL 05章_模糊查询和聚合函数
在之前的查询都需要对查询的关机中进行“精确”.“完整”完整的输入才能查询相应的结果, 但在实际开发过程中,通常需要考虑用户可能不知道“精确”.“完整”的关键字, 那么就需要提供一种不太严格的查询方式, ...
- java oop第06章_异常处理
一. 异常的概念: 若程序都按我们事先设定的计划运行为正常执行,但通常会出现我们事先预料之外的其他情况,称为程序发生异常, 在java中会对一些可能出现异常的代码进行分类,达到尽量对可能发生的异常进行 ...
- MySQL 11章_索引、触发器
一. 索引: . 为什么要使用索引: 一本书需要目录能快速定位到寻找的内容,同理,数据表中的数据很多时候也可以为他们创建相应的“目录”,称为索引,当创建索引后查询数据也会更加高效 . Mysql中的索 ...
- mysql的优化_第十一篇(查询计划篇)
Mysql优化(出自官方文档) - 第十一篇(查询计划篇) 目录 Mysql优化(出自官方文档) - 第十一篇(查询计划篇) 1 EXPLAIN Output Format EXPLAIN Join ...
- mysql 09章_存储过程和函数
一. 函数和存储过程的相同点: 函数和存储过程都是事先预编译并保存在数据库中的特殊的数据库对象, 需要执行相应功能时就可以直接通过“函数名”.“存储过程”调用其中的代码,以提高执行效率和代码的复用性. ...
- Oracle_11gR2_概念_第06章_数据字典和动态性能视图_英文词汇
decode 解码 be intend for 适应 distinguished 显著的,突出的 implied 隐含的 abbreviated 简短的 enabled roles 已 ...
随机推荐
- SonarQube搭建和使用教程
我想使用 SonarQube 查阅代码 请问怎么做,现在只有一个要审查代码的项目
- centos7.2下快速安装zabbix4.0
本笔记是基于CentOS 7.2下最小化安装的操作系统搭建的Zabbix4.0环境,主要用于做一些企业路由器和交换机等设备的运行状态监控. 1.安装epel源 yum -y install epel- ...
- KMP2
poj 2752 #include<stdio.h> #include<iostream> #include<algorithm> #include<stri ...
- ArcGis基础——Excel表格插入ArcMap布局视图,记录显示不全的替代解决方法
前几天帮朋友处理了这样一个问题 Excel有200余行记录,插入到ArcMap布局视图,只能显示100行左右. 解决思路 ArcMap要素类的属性表可以插入到布局视图,可否把Excel挂接到要素类的属 ...
- 页面上有3个输入框:分别为max,min,num;三个按钮:分别为生成,排序,去重;在输入框输入三个数字后,先点击生成按钮,生成一个数组长度为num,值为max到min之间的随机整数点击排序,对当前数组进行排序,点击去重,对当前数组进行去重。 每次点击之后使结果显示在控制台
<!DOCTYPE html> <html> <head> <!-- 页面上有3个输入框:分别为max,min,num:三个按钮:分别为生成,排序,去重: 在 ...
- v-bind和v-model的区别
1:v-bind动态绑定指令,默认情况下标签自带属性的值是固定的,在为了能够动态的给这些属性添加值,可以使用v-bind:你要动态变化的值="表达式" 2:v-bind用于绑定属性 ...
- Python中使用gflags
安装命令pip install python-gflags 使用示例: import gflags FLAGS = gflags.FLAGS gflags.DEFINE_string('name', ...
- CentOS 7 編譯qBittorrent Web UI安裝指南
前言 以下是安装qBittorrent教学. 适用于CentOS7或更新版本 适用于qBittorrent4.1.5或更新版本 安裝須知 qBittorrent基于libtorrent,所以必须先安装 ...
- mysql 的linux 忘记了密码
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录 ...
- Unity 2018 version class.jar path
{ C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes }