Oracle学习笔记五 SQL命令(三):Group by、排序、连接查询、子查询、分页
GROUP BY和HAVING子句
GROUP BY子句
用于将信息划分为更小的组
每一组行返回针对该组的单个结果
--统计每个部门的人数:
Select count(*) from emp group by deptno; --根据部门分组,并统计
Select deptno, count(*) form emp group by deptno; select deptno, avg(sal) from emp group by deptno; --每个部门的平均工资
HAVING子句
用于指定 GROUP BY 子句检索行的条件
Select deptno, avg(sal) from emp group by deptno having avg(sal) >2000; --找出平均工资大于2000的部门;
数据排序
Order by 列名1 asc | desc, 列2 asc | desc; --默认为asc升序
Select * from emp order by sal; --根据工资升序排序
Select * from emp order by sal desc; --工资降序
Select * from emp order by sal desc, hiredate asc; --按工资降序排,如果工资一样,则按日期升序排;
查询语句的执行顺序
Where ,group by , having
先根据where条件将符合要求的数据筛选出来,
再根据group by来进行分组
最后将分组之后的数据用having进行约束,得到select的结果
多表查询
Select e.ename, t.tid from emp e, test t; --笛卡尔集,交叉查询
连接查询
内连接: inner join返回多个表之间共同的数据
Select empno,ename,dname from emp,dept where emp.deptno = dept.deptno;
Select empno,ename,dname form emp inner join dept on emp.deptno = dept.deptno;
外连接:
左连接: left join 数据的结果以左表为主,右表如果在左表中不存在就显示是否为空!
select s.*, c.cid, c.grade from student s left join cs c on s.sid = c.sid
右连接: right join
全连接: full join
具体参看:IndexMan 文章 oracle连接查询详解
子查询
在一个查询中可以包含另一个查询,它可以出现在任何一个地方,外部查询得到结果,内部查询返回条件
--得到工资最高的人的信息
select * from emp where sal = (select max(sal) from emp);
--查询所有和SMITH在同一个部门的人
select ename from emp where deptno = (select deptno from emp where ename = 'SMITH');
--列出与smith在同一个部门的员工信息
Select * from emp where deptno = (select deptno form emp were ename = 'SMITH');
--与MARTIN是同一个领导的员工
Select * form emp where mrg = (select mgr from emp where ename = 'MARTIN');
--列出所有在New York办公的员工
--连接查询方式:
select * from emp inner join dept on emp.deptno = dept.deptno where LOC = 'NEW YORK';
--子查询方式:
select * from emp where deptno = (select deptno from dept where LOC = 'NEW YORK');
--列出所有在New York和DALLAS办公的员工
Select * from emp where deptno in (select deptno from dept where loc = 'NEW YORK' or loc = 'DALLAS');
Select * from emp where deptno = any (select deptno from dept where loc = 'NEW YORK' or loc = 'DALLAS');
数据的分页
--查询前5条
Select rownum, emp.* from emp where rownum <=5;
--查询第6条以后的数据
select * from emp where empno not in(select empno from emp where rownum <=5);
--查询第6-10条数据
○ Select * from (select * from emp where empno not in(select empno from emp where rownum <=5)) where rownum <=5;
○ select * from emp where empno not in(select empno from emp where rownum <=5) and rownum <= 5;
--总结
○ Select * from (select * from emp where empno not in(select empno from emp where rownum <= size * (page - 1))) where rownum <= size;
○ select * from emp where empno not in(select empno from emp where rownum <= size * (page - 1)) and rownum <= size; --排序后再分页查询
--将排序之后的数据编号(效率排第2)
select * from (select rownum rn, d.* from (select * from emp order by sal desc) d) where rn > 5 and rn < 11; --分页函数:row_number函数(效率排第1)
select row_number() over(order by sal desc) rn, emp.* from emp;
--分页
select * from (select row_number() over(order by sal desc) rn, emp.* from emp) where rn > 5 and rn < 11;
Oracle学习笔记五 SQL命令(三):Group by、排序、连接查询、子查询、分页的更多相关文章
- Oracle学习笔记四 SQL命令(二):SQL操作语言类别
SQL分为下列语言类别 1.数据定义语言(DDL) Create.Alter.Drop 2.数据操纵语言(DML) Insert.Select.Delete.Update 3.事务控制语言(TCL) ...
- Oracle学习笔记六 SQL常用函数
函数的分类 Oracle 提供一系列用于执行特定操作的函数 SQL 函数带有一个或多个参数并返回一个值 以下是SQL函数的分类:
- Oracle学习笔记(五)
七.查询 1.基本查询语句 select 列名字,列名字 from 表名字 例如 select user_a_id from userinfo; 2.在SQL*PLUS中设置格式 (1)设置新的字段名 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- Oracle学习笔记—数据字典和常用命令(转载)
转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...
- Oracle学习笔记之四,SQL语言入门
1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...
- oracle学习笔记3:基本的SQL语句
oracle基本的SQL语句和SQLSERVER基本一样,在这里只简单列出与SQLSERVER不一样的地方 1.select * from orderinfo where address = 'abc ...
- oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by
select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ...
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
随机推荐
- SI与EMI(一) - 反射是怎样影响EMI
Mark为期两天的EMC培训中大概分成四个时间差不多的部分,简单来说分别是SI.PI.回流.屏蔽.而在信号完整性的书籍中,也会把信号完整性分为:1.信号自身传输的问题(反射,损耗):2.信号与信号之间 ...
- Java关键字:static
通常,当创建类时,就是在描述那个类的外观和行为.只有用new创建类的对象时,才分配数据存储空间,方法才能被调用.但往往我们会有下面两种需求: 1.我想要这样一个存储空间:不管创建多少对象,无论是不创建 ...
- JSON.parse 与 eval() 对于解析json的问题
1.eval()与JSOn.parse的不同 eval() var c = 1; //全局变量 var jsonstr1 = '{"name":"a",&quo ...
- 一个技术汪的开源梦 —— 基于 .Net Core 的组件 Nuget 包制作 & 发布
一个技术汪的开源梦 —— 目录 微软的 ASP.Net Core 强化了 Nuget 的使用,所有的 .Net Core 组件均有 Nuget 管理,所以有必要探讨一下 .Net Core 组件制作 ...
- Bootstrap框架的学习(二)
一.下载Bootstrap Bootstrap (当前版本 v3.3.0)提供以下几种方式帮你快速上手,每一种方式针对具有不同技能等级的开发者和不同的使用场景. 下载地址:http://v3.boot ...
- Python笔记之不可不练
如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...
- UWP简单示例(二):快速开始你的3D编程
准备 IDE:Visual Studio 2015 了解并学习:SharpDx官方GitHub 推荐Demo:SharpDX_D3D12HelloWorld 第一节 世界 世界坐标系是一个特殊的坐标系 ...
- Redis分布式集群几点说道
原文地址:http://www.cnblogs.com/verrion/p/redis_structure_type_selection.html Redis分布式集群几点说道 Redis数据量日益 ...
- DropDownList实现可输入可选择
1.js版本 <div style="z-index: 0; visibility: visible; clip: rect(0px 105px 80px 85px); positio ...
- ASP.Net MVC——DotNetZip简单使用,解决文件压缩问题。
准备工作: 在vs工具栏中找到NuGet 下载DotNetZip 现在就可以使用DotNetZip强大的类库了,在这里我给出一些简单的使用. public ActionResult Export() ...