常用函数

COUNT(*):统计所有的数据量,没有过滤功能

COUNT(字段):统计出指定字段不为null的数据量,有过滤功能

COUNT(DISTINCT 字段):统计指定字段不为空并且去掉重复数据之后的数据量

其实统计函数是为分组查询而服务的,之所以现在没有分组也能使用是因为把所有的数据当成了一组

SUM(字段):计算出指定字段的数据之和(字段是数字才有意义)

AVG(字段):计算出指定字段的平均值(字段是数字才有意义)

MAX(字段):统计出指定的字段中最大值(字段是日期或者数字才有意义)

MIN(字段):统计出指定的字段中最小值(字段是日期或者数字才有意义)

SYSDATE:取得当前日期(SELECT SYSDATE FROM dual;)

分组统计查询

④SELECT * 【显示数据】

①FROM 数据来源,数据来源。。。 【找到数据来源】

②WHERE 过滤条件 【过滤出满足条件的数据】

③GROUP BY 分组字段 【GROUP BY子句,对满足条件的数据进行分组】

⑤ORDER BY 排序字段   排序方式(ASC |DESC) 【指定是否按照排序的方式显示】

SELECT dname,COUNT(*) 人数 --对分组后的数据进行统计

FROM emp e,dept d --数据需要来自两张数据表

WHERE e.deptno=d.deptno --消除笛卡尔积

GROUP BY dname; --按照部门分组

使用统计函数要注意的问题

①如果SELECT子句使用了统计函数同时没有GROUP BY子句那么SELECT子句中只能出现统计函数,不能出现其他任何字段

②如果在SELECT子句中使用了统计函数同时有GROUP BY子句则在SELECT子句中只能出现统计函数和分组的字段。

③如果SELECT子句中使用了嵌套的统计函数,则不管是否有GROUP BY子句那么SELECT子句中不能出现统计函数之外任何字段。

HAVING子句

1、HAVING子句用于对查询表结构进行处理,可用于分组之后,多和GROUP BY一起使用,放在GROUP BY之后,可包含聚合函数。

2、HAVING子句可用于GROUP BY 之后,语法类似于WHERE子句,WHERE子句用于GROUP BY之前。

3、HAVING子句中的字段必须是上层结果表中有的。

4、HAVING子句中可以使用聚合函数,WHERE语句中不可以使用聚合函数

5、HAVING子句执行顺序:WHERE语句>GROUP BY>聚合函数>HAVING

WHERE子句和HAVING子句的区别:

WHERE子句在GROUP BY子句之前执行,不能在WHERE子句中使用统计函数

HAVING子句在GROUP BY之后执行,可以在HAVING子句中对统计函数进行过滤

WHERE子查询

将一个查询的结果作为另一个查询(主查询)的数据来源或者判断条件来查询

SELECT *

FROM emp

WHERE sal<(SELECT AVG(sal) FROM emp);

SELECT AVG(sal)  FROM emp; [返回的结果是单行单列类型]

子查询需要用小括号括起来

方式一:

SELECT *

FROM  emp

WHERE job=(SELECT job FROM emp WHERE ename=SCOTT) AND

sal=(SELECT sal FROM emp WHERE ename=SCOTT)  AND

ename <> SCOTT;

方式二:

SELECT *

FROM  emp

WHERE (job,sal)=(

SELECT job,sal FROM emp WHERE ename=SCOTT ) AND ename <> SCOTT;

 

主查询中的条件判断字段的顺序要子查询中需要查询的字段的顺序保持一致

子查询的返回值是单行多列的结果

sal>any:表示的是sal大于子查中的任意一个值。

sal<any:表示的是sal小于子查中的任意一个值。

ANY:大于最小的,小于最大的。

All:和每一个进行比较(大于最大的,者小于最小的)

HAVING子查询

HAVING子句是对分组统计函数进行过滤的子句,也可以在HAVING子句中使用子查询。

FROM子查询

FROM子句的数据来源不仅仅是数据表,还可以是一个查询的结果。一般FROM子查询的返回类型是多行多列的结果集

总结:

1、FROM子查询的数据来源是另外一个查询的结果,这个子查询的结果相当于一张临时的数据表

2、必须为子查询定义别名(不写语法也不会出错,但是要规范,以及方便后面的调用)

3、如果要使用子查询中的字段则应该使用“别名.字段名”的方式进行引用

Oracle数据库01的更多相关文章

  1. Oracle 数据库知识汇总篇

    Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...

  2. Oracle数据库该如何着手优化一个SQL

    这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异. 所以有时候我们应该先 ...

  3. Oracle数据库基础知识

    oracle数据库plsql developer   目录(?)[-] 一     SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...

  4. Oracle数据库操作

    本例使用oracle数据库,使用PL/SQL可视化工具: --查询员工表数据 (emp为pl/sql自带的表,也可自己新建)select * from emp; --创建表空间create table ...

  5. oracle数据库表的导入导出cmd命令大全

    在实际的项目开发中经常会遇到导入导出oracle数据库中的表,以下是常用的一些cmd命令: 一.数据表的导出 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daoch ...

  6. Oracle Recovery 01 - 常规恢复之完全恢复

    背景:这里提到的常规恢复指的是数据库有完备可用的RMAN物理备份. 实验环境:RHEL6.4 + Oracle 11.2.0.4 DG primary. 一.常规恢复之完全恢复:不丢失数据 1.1 单 ...

  7. Oracle数据库全球化

    一.自定义数据库和各个会话的语言相关行为 1.1 全球化功能 1.2 使用全球化支持功能 二.使用数据库和NLS字符集 2.1 语言排序与选择 2.2 Locale Builder 2.3 使用时区 ...

  8. C#连接Oracle数据库(直接引用dll使用)

    转载至:http://www.cnblogs.com/gguozhenqian/p/4262813.html 项目中有个功能需要从一台Oracle数据库获取数据,本以为是很简单的事情,直接将原来的Sq ...

  9. Oracle 数据库日常巡检

    1. 检查数据库基本状况 包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分. 1.1. 检查Oracle实例状态 select instance_name ...

随机推荐

  1. 一个检测网页是否有日常链接的python脚本

    在大的互联网公司干技术的基本都会碰到测试.预发布.线上这种多套环境的,来实现测试和线上正式环境的隔离,这种情况下,就难免会碰到秀逗了把测试的链接发布到线上的情况,一般这种都是通过一些测试的检查工具来检 ...

  2. Visio2013 64位下载安装以及破解激活教程

    特别说明:以下教程如果未能破解激活,请在断网条件下安装破解!!!! 安装: Visio2013 professional版下载地址:https://pan.baidu.com/s/1gzwcGTevV ...

  3. Spring启动时获取自定义注解的属性值

    1.自定义注解 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documen ...

  4. Windows 2008配置iis+Php+Mysql

    windows 2008 与 windows 2003 区别在于前者是iis7,后者是iis6.两个系统下配置Iis+Php+Mysql+Zend Optimizer+GD库+Phpmyadmin基本 ...

  5. javax.persistence.RollbackException: Error while committing the transaction

    the valid jpa update entity code gives the exception below in the case of  wrong dependency( org.hib ...

  6. 人脸识别-<转>

    人脸检测库libfacedetection介绍 libfacedetection是于仕琪老师放到GitHub上的二进制库,没有源码,它的License是MIT,可以商用.目前只提供了windows 3 ...

  7. U3D 场景切换时 脚本对象,GO对象,资源对象的问题

    脚本对象:在LUA中写了一个actor类,它封装了角色逻辑,引用了一个GO. GO对象:通过 GameObject.Instantiate(资源对象)生成的. 资源对象:制作好的模型prefab. 在 ...

  8. 10G个64bit整数,找出中位数

    [10G个64bit整数,找出中位数] 题目:在一个文件中有10G个64bit整数,乱序排列,要求找出中位数.内存限制为2G. 解法:内存限制为2G表面上是限制,实际上是一种提示,在提示我们如何利用2 ...

  9. 【poj3254】Corn Fields 状态压缩dp

    AC通道:http://vjudge.net/problem/POJ-3254 [题目大意] 农夫约翰购买了一处肥沃的矩形牧场,分成M*N(1<=M<=12; 1<=N<=12 ...

  10. LUA Metatables

    __index:当我们访问一个表中的元素不存在时,则会触发去寻找__index元方法,如果不存在,则返回nil,如果存在,则返回结果. 博主注:__index有点像异常处理的意思 __newindex ...