Oracle数据库01
常用函数
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的更多相关文章
- Oracle 数据库知识汇总篇
Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...
- Oracle数据库该如何着手优化一个SQL
这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异. 所以有时候我们应该先 ...
- Oracle数据库基础知识
oracle数据库plsql developer 目录(?)[-] 一 SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...
- Oracle数据库操作
本例使用oracle数据库,使用PL/SQL可视化工具: --查询员工表数据 (emp为pl/sql自带的表,也可自己新建)select * from emp; --创建表空间create table ...
- oracle数据库表的导入导出cmd命令大全
在实际的项目开发中经常会遇到导入导出oracle数据库中的表,以下是常用的一些cmd命令: 一.数据表的导出 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daoch ...
- Oracle Recovery 01 - 常规恢复之完全恢复
背景:这里提到的常规恢复指的是数据库有完备可用的RMAN物理备份. 实验环境:RHEL6.4 + Oracle 11.2.0.4 DG primary. 一.常规恢复之完全恢复:不丢失数据 1.1 单 ...
- Oracle数据库全球化
一.自定义数据库和各个会话的语言相关行为 1.1 全球化功能 1.2 使用全球化支持功能 二.使用数据库和NLS字符集 2.1 语言排序与选择 2.2 Locale Builder 2.3 使用时区 ...
- C#连接Oracle数据库(直接引用dll使用)
转载至:http://www.cnblogs.com/gguozhenqian/p/4262813.html 项目中有个功能需要从一台Oracle数据库获取数据,本以为是很简单的事情,直接将原来的Sq ...
- Oracle 数据库日常巡检
1. 检查数据库基本状况 包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分. 1.1. 检查Oracle实例状态 select instance_name ...
随机推荐
- -bash: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory
-bash: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory python多版本造成额问题 找不到p ...
- Tessnet2 a .NET 2.0 Open Source OCR assembly using Tesseract engine
http://www.pixel-technology.com/freeware/tessnet2/ Tessnet2 a .NET 2.0 Open Source OCR assembly usin ...
- <form> 表单提交 return 阻止内容为空事件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- auto_ptr 浅析(转)
auto_ptr是C++标准库中(<utility>)为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针) auto_ptr的实现原理其实就是RAII,在构造的 ...
- Docker构建redis cluster集群
准备工作 安装gcc ruby 解压编译redis Redis 是 c 语言开发的.安装 redis 需要 c 语言的编译环境.如果没有 gcc 需要在线安装. yum install gcc-c++ ...
- go_封装
go语言中首字母大写表示public go语言中首字母小写表示private 结构定义的方法必须放在同一个包内 一个目录只能放一个包 如何扩充系统的类型或别人的类型: 1.定义别名 2.使用组合 使用 ...
- java并发特性:原子性、可见性、有序性
要想并发程序正确地执行,必须要保证原子性.可见性以及有序性.只要有一个没有被保证,就有可能会导致程序运行不正确. 1.原子性(Atomicity) 原子性是指在一个操作中就是cpu不可以在中途暂停然后 ...
- nyoj36-最长公共子序列 (LCS)
http://acm.nyist.net/JudgeOnline/problem.php?pid=36 最长公共子序列 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 ...
- 基于python的Appium自动化测试的坑
真的感谢@虫师 这位来自互联网的老师,让我这个原本对代码胆怯且迷惑的人开始学习自动化测试. 一开始搜索自动化测试的时候,虫师的博客园教程都是在百度的前几位的,我就跟着虫师博客园里面的教程学习.后来学s ...
- XAMPP非本地访问被拒绝解决办法
问题场景: 本机搭建一个apache服务器,正常访问XAMPP目录下的页面. 手机接入同一wifi,以电脑ip方式访问该目录下的页面:提示:Access Denied Access to the re ...