数据库中的查询(Oracle)
分组查询(重点)
介绍分组查询
分组的目的主要就是为了进行数据统计和汇总操作,可以将多行数据汇总成一行。
分组一般都会和聚合函数一起使用,常用的聚合函数:
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)相关推荐
- oracle数据库怎么分组查询,oracle数据库之分组查询
本章内容和大家分享的是数据当中的分组查询.分组查询复杂一点的是建立在多张表的查询的基础之上,(我们在上一节课的学习中已经给大家分享了多表查询的使用技巧,大家可以自行访问:多表查询1 多表查询2)而在 ...
- 各个数据库中,查询前n条记录的方法
一.各个数据库中,查询前n条记录的方法 1.SQL查询前10条的方法为: 1.select top X * from table_name 查询前X条记录,可以改成需要的数字,比如前10条. 2.se ...
- mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法
mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法: select a.nodeId,a.cpuCharge-b.cpuCharge cpuCharge, a.chargeTime fr ...
- MySQL数据库中如何查询分组后每组中的最后一条记录
MySQL数据库中如何查询分组后每组中的最后一条记录 方法一 select * from messages where id in (select max(id)fom messages group ...
- 一起ORACLE数据库中数据查询结果不一致问题的排查过程
一.问题描述 在某软件开发项目中,需要在ORACLE数据库中建立十张类型相同的员工信息表tb_employeeinfo0~tb_employeeinfo9,并建立向这十张表中插入数据的存储过程.ORA ...
- oracle语句mysql数据库名称_查询oracle数据库中当前数据库所有表的名称
SQL查询数据库中所有指定类型的字段名称和所在的表名 --查询数据库中所有指定类型的字段名称和所在的表名 --eg: 下面查的是当前数据库中 所有字段类型为 nvarchar(max) 的字段名和表名 ...
- oracle数据库分页查询慢,Oracle数据库中分页查询中排序及效率问题
原始未分页查询Sql代码如下: select ROWNUM rn, t.id ID, o.name YYB,u.name XM, t.MC from tZDYSX t,tuser u,lborgani ...
- oracle数据库中索值,Oracle数据库中的索引详解
Oracle数据库中的索引详解以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一 ROWID的概念 存储了row在数据文 ...
- oracle数据库中常用语法,oracle数据库常用语法(中文注释版)
-- 查看系统所有变量值 show all -- 显示当前连接用户 show user -- 显示表结构 desc 表名 -- 显示错误 show error -- 退出 exit; 表空间是数据库中 ...
最新文章
- LeetCode Self Crossing(判断是否相交)
- 【C 语言】字符串模型 ( 两头堵模型 | 将 两头堵模型 抽象成业务模块函数 | 形参返回值 | 函数返回值 | 形参指针判空 | 形参返回值操作 )
- gridview中如果文字太多指点要显示的文字
- 第四范式:现代存储架构下的系统优化实践
- Java面向对象的继承
- 组件源码——拖动条Slider
- Astar算法基本概念及其实现
- java自学网视频教程,系列教学
- bim 水利枢纽 运维_BIM技术与现代化建筑运维管理
- “AI”与“爱”满格下的百度地图:刻画真实世界,社会责任同行
- 古人为什么除了本名还要取字号?取字号根据什么规矩呢?
- java timezone_详解Java中的时区类TimeZone的用法
- python分析qq聊天记录
- elementUI中的Backtop回到顶部
- crc16的c语言函数 计算ccitt_求一个C语言实现的CRC16/CCITT-FALSE校验码函数
- 1、SONIX单片机新建工程与烧录流程
- 【域渗透提权】CVE-2020-1472 NetLogon 权限提升漏洞
- 卡西欧计算机亮度,卡西欧怎么调3秒灯
- 1077 互评成绩计算
- linux 远程管理 远程登陆 复制文件 scp SSH
热门文章
- WebService报错:org.apache.axis2.AxisFault: The given SOAPAction aaa does not match an operation.
- 【Unity3d】火炬之光的X射线效果
- SPOJ16607 IE1 - Sweets
- #10025 「一本通 1.3 练习 4」靶形数独P1074 [NOIP2009 提高组]
- DirBuster使用介绍
- 用python判断平闰年 ,深入理解 or 和 and
- 时间序列预测(一)—— 数据预处理
- Wonderware IDE:Failed to deploy PlatformName: Can not communicate with remote node
- fullcalendar使用
- 经典Java面试题汇总及答案解析