分组查询(重点)

介绍分组查询

分组的目的主要就是为了进行数据统计和汇总操作,可以将多行数据汇总成一行。
分组一般都会和聚合函数一起使用,常用的聚合函数:
sum(列名):对指定列的数据进行求和操作。
avg(列名):对指定的列的数据进行求平均值。
max(列名):求最大值
min(列名):求最小值
count():计算个数

【注意】:如果没有分组的情况下,如果要使用聚合函数则select后面只能存在聚合函数,不能有其他列名。

分组查询语法:

   select [列名,列名,...],聚合函数,...from 表名[where 过滤条件]group by 分组列名,分组列名,...[having 分组过滤条件]

【注意】
1、在select后面出现的列名(聚合函数除外),则必须要出现在group by 后面,否则报错。

2、在group by后面的列名并不一定要出现在select后面,按需要设置。
3、如果进行过滤的那个值是分组之后计算出来的值,则不能使用where过滤,必须要使用having。
4、为了提高查询效率,在分组之前能使用where过滤掉的数据进行提前过滤,然后再分组,不要使用having来过滤。

最后就是能用分组实现去重操作

排序查询

①order by
语法:order by 排序列 [desc|asc],排序列 …

  • 如果在排序的时候使用了多个列,则先按照第一列进行排序,如果第一列有相同的数据,则再将相同的数据按照第二列排序,以此类推。

②行号:rownum
数据库中的表中默认没有行号的,
但是可以在查询的时候使用rownum来显示行号

使用方法:
SELECT *,ROWNUM 行号 FROM 表

多表关联查询

1、使用多表关联查询,会涉及众多表的操作,若表的名称过长,设置别名进行操作是一个好的选择。
from 表名 别名

关联查询:

普通关联:

语法:
select a.*,b.* from 表A a,表B b ……[where a.关联字段=b.关联字段,……]

【注意】:如果进行普通关联的时候没有设置关联条件则,最后的结果是一个笛卡尔积。
【执行结果】:符合关联条件的数据才会被查询出来,其他的被过滤掉。

内连接(inner join)

语法:
select * from 表A a [inner] join 表B b on a.关联字段=b.关联字段 join 表C c on c.关联字段=a|b.关联字段

如果内连接和普通连接都不加条件,出来的结果都将是笛卡尔积

外连接(outer join)

左外连接(left [outer] join):

语法:
select * from 左表 a left [outer] join 右表 b on a.关联字段=b.关联字段

【结果】:显示左表中所有的数据,右表只显示符合关联条件的数据

右外连接(right [outer] join)

语法:
select * from 左表 a right [outer] join 右表 b on a.关联字段=b.关联字段

【结果】:显示右表中所有的数据,左表只显示符合关联条件的数据

全外连接(full [outer] join)

语法:
select * from 左表 a full [outer] join 右表 b on a.关联字段=b.关联字段

【结果】:左右表都会显示全部的数据

自然连接(natural join)

语法:
select * from 表A natural join 表B

【注意】:自然连接不需要手动设置关联条件,系统会自动寻找两张表中名称相同的列进行关联,
如果没有相同列名的列,则最后结果是一个笛卡尔积

自连接(自己和自己连接)

如果表中有一列的值引用了自己的主键,则叫做自引式外键。

交叉连接(cross join)

语法:
select * from 表A cross join 表B
【注】:交叉连接的结果就是一个笛卡尔积

子查询

在一条sql语句中再嵌套一条或者是多条select语句,叫做子查询,简称:套娃

单行子查询:

当子查询返回的结果只有一行数据的时候叫做单行子查询。
一般单行子查询配合单行选择运算符一起使用

【注意】
1、单行子查询中只能返回一行数据,如果子查询的结果返回了多行,则提示:单行子查询返回多个行。
2、如果子查询返回的行中有多个列,则系统提示:值过多

多行子查询:

子查询的结果返回多行数据
一般配合多行选择运算符一起使用:any all in

关联子查询:

子查询执行离不开外查询,外查询的执行也必须要依赖子查询结果。

以上。

数据库中的查询(Oracle)相关推荐

  1. oracle数据库怎么分组查询,oracle数据库之分组查询

    本章内容和大家分享的是数据当中的分组查询.分组查询复杂一点的是建立在多张表的查询的基础之上,(我们在上一节课的学习中已经给大家分享了多表查询的使用技巧,大家可以自行访问:多表查询1  多表查询2)而在 ...

  2. 各个数据库中,查询前n条记录的方法

    一.各个数据库中,查询前n条记录的方法 1.SQL查询前10条的方法为: 1.select top X * from table_name 查询前X条记录,可以改成需要的数字,比如前10条. 2.se ...

  3. mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法

    mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法: select a.nodeId,a.cpuCharge-b.cpuCharge cpuCharge, a.chargeTime fr ...

  4. MySQL数据库中如何查询分组后每组中的最后一条记录

    MySQL数据库中如何查询分组后每组中的最后一条记录 方法一 select * from messages where id in (select max(id)fom messages group ...

  5. 一起ORACLE数据库中数据查询结果不一致问题的排查过程

    一.问题描述 在某软件开发项目中,需要在ORACLE数据库中建立十张类型相同的员工信息表tb_employeeinfo0~tb_employeeinfo9,并建立向这十张表中插入数据的存储过程.ORA ...

  6. oracle语句mysql数据库名称_查询oracle数据库中当前数据库所有表的名称

    SQL查询数据库中所有指定类型的字段名称和所在的表名 --查询数据库中所有指定类型的字段名称和所在的表名 --eg: 下面查的是当前数据库中 所有字段类型为 nvarchar(max) 的字段名和表名 ...

  7. oracle数据库分页查询慢,Oracle数据库中分页查询中排序及效率问题

    原始未分页查询Sql代码如下: select ROWNUM rn, t.id ID, o.name YYB,u.name XM, t.MC from tZDYSX t,tuser u,lborgani ...

  8. oracle数据库中索值,Oracle数据库中的索引详解

    Oracle数据库中的索引详解以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一 ROWID的概念 存储了row在数据文 ...

  9. oracle数据库中常用语法,oracle数据库常用语法(中文注释版)

    -- 查看系统所有变量值 show all -- 显示当前连接用户 show user -- 显示表结构 desc 表名 -- 显示错误 show error -- 退出 exit; 表空间是数据库中 ...

最新文章

  1. LeetCode Self Crossing(判断是否相交)
  2. 【C 语言】字符串模型 ( 两头堵模型 | 将 两头堵模型 抽象成业务模块函数 | 形参返回值 | 函数返回值 | 形参指针判空 | 形参返回值操作 )
  3. gridview中如果文字太多指点要显示的文字
  4. 第四范式:现代存储架构下的系统优化实践
  5. Java面向对象的继承
  6. 组件源码——拖动条Slider
  7. Astar算法基本概念及其实现
  8. java自学网视频教程,系列教学
  9. bim 水利枢纽 运维_BIM技术与现代化建筑运维管理
  10. “AI”与“爱”满格下的百度地图:刻画真实世界,社会责任同行
  11. 古人为什么除了本名还要取字号?取字号根据什么规矩呢?
  12. java timezone_详解Java中的时区类TimeZone的用法
  13. python分析qq聊天记录
  14. elementUI中的Backtop回到顶部
  15. crc16的c语言函数 计算ccitt_求一个C语言实现的CRC16/CCITT-FALSE校验码函数
  16. 1、SONIX单片机新建工程与烧录流程
  17. 【域渗透提权】CVE-2020-1472 NetLogon 权限提升漏洞
  18. 卡西欧计算机亮度,卡西欧怎么调3秒灯
  19. 1077 互评成绩计算
  20. linux 远程管理 远程登陆 复制文件 scp SSH

热门文章

  1. WebService报错:org.apache.axis2.AxisFault: The given SOAPAction aaa does not match an operation.
  2. 【Unity3d】火炬之光的X射线效果
  3. SPOJ16607 IE1 - Sweets
  4. #10025 「一本通 1.3 练习 4」靶形数独P1074 [NOIP2009 提高组]
  5. DirBuster使用介绍
  6. 用python判断平闰年 ,深入理解 or 和 and
  7. 时间序列预测(一)—— 数据预处理
  8. Wonderware IDE:Failed to deploy PlatformName: Can not communicate with remote node
  9. fullcalendar使用
  10. 经典Java面试题汇总及答案解析