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 已 ...
随机推荐
- adb devices unauthorized的解决办法
Hi, trying to launch adb but get: daemon not running. starting it now on port * daemon started s ...
- error C4996: 'getcwd': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getcwd. See online help for details. c:\users\12968\desktop\testapp\testapp\testapp.c
解决办法: 属性>C/C++>预处理器定义>分别输入: _CRT_SECURE_NO_WARNINGS _CRT_SECURE_NO_DEPRECATE >保存退出即可
- vue on emit 父子之间传值应用详细代码
大概很多人都知道用这个,网上教程也一大堆,但我想说的是一定要手动敲一遍,敲一遍,敲一遍,重要的事情说三遍. 大概有些人也不知道它该何时用on,或者emit 的吧? 先说两个我项目中用到的场景吧: 项目 ...
- js drag drop 收藏夹拖拽移除的简单例子
代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title& ...
- eclipse search只能打开一个文件
通过search找到的文件只能打开一个.以前search打开的那个文件就自动关闭了,找不到了.解决办法: window-preferences-general-search找到第一行的一个选项 re ...
- 关于while循环中的break和continue的区别
while循环如果不加条件限制的话,它会一直循环下去,那么问题就来了,如果我不用条件去终止while循环的话,那么我该用什么方法去终止呢? 你可以选择两种终止while循环的方法 1.break 强 ...
- 使用sql对比Mysql中数据库2个表结构
比较两个数据表的结构 SELECT column_name, max( CASE WHEN table_name = 'table1' AND table_schema = 'db1' THEN 'Y ...
- Codeforces Round #563 (Div. 2) E. Ehab and the Expected GCD Problem
https://codeforces.com/contest/1174/problem/E dp 好题 *(if 满足条件) 满足条件 *1 不满足条件 *0 ///这代码虽然写着方便,但是常数有点大 ...
- Java HashSet和ArrayList的查找Contains()时间复杂度
今天在刷leetCode时,碰到了一个题是这样的. 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 看到 ...
- 8-26接口压力测试-3Jmeter-Java请求
1.新建maven工程 2.导入依赖,并使用shade将所需的依赖打入jar包 <?xml version="1.0" encoding="UTF-8"? ...