​oracle表查询

使用逻辑操作符号 

查询工资高于 500 或者是岗位为 MANAGER 的雇员,同时还要满足他们的姓名首字母为大写 J

SELECT * FROM emp WHERE (sal >500 or job = 'MANAGER') and ename LIKE 'J%';

使用 order by 子句   默认 asc 

按照工资的从低到高的顺序显示雇员的信息

SELECT * FROM emp ORDER by sal;

按照部门号升序而雇员的工资降序排列

SELECT * FROM emp ORDER by deptno, sal DESC;

使用列的别名排序

按年薪排序

select ename, (sal+nvl(comm,0))*12 "年薪" from emp order by "年薪" asc;  别名需要使用“”号圈中,英文不需要

oracle表复杂查询 

在实际应用中经常需要执行复杂的数据统计,需要显示多张表的数据。

数据分组 ——max,min, avg, sum, count  

查询所有员工中最高工资和最低工资

SELECT MAX(sal),min(sal) FROM emp ;

最高工资那个人

错误写法:select ename, sal from emp where sal=max(sal);

正确写法:select ename, sal from emp where sal=(select max(sal) from emp);

注意:select ename, max(sal) from emp;这语句执行的时候会报错,说ORA-00937:非单组分组函数。因为max是分组函数,而ename不是分组函数;但select min(sal), max(sal) from emp;是可以执行的,因为min和max都是分组函数。

查询最高工资员工的名字,工作岗位

SELECT ename, job, sal FROM emp e where sal = (SELECT MAX(sal) FROM emp);

查询工资高于平均工资的员工信息

SELECT * FROM emp  where sal > (SELECT AVG(sal) FROM emp);

group by 和 having子句 

group by 用于对查询的结果分组统计;。

having 用于限制分组显示结果。

显示每个部门的平均工资和最高工资

SELECT AVG(sal), MAX(sal), deptno FROM emp GROUP by deptno;

注意:如果你要分组查询的话,分组的字段 deptno 一定要出现在查询的列表里面,否则会报错。因为分组的字段都不出现的话,就没办法分组了。

查询每个部门的每种岗位的平均工资和最低工资

SELECT min(sal), AVG(sal), deptno, job FROM emp GROUP by deptno, job;

查询平均工资低于 2000 的部门号和它的平均工资

SELECT AVG(sal), MAX(sal), deptno FROM emp GROUP by deptno having AVG(sal) < 2000;

对数据分组的总结

  1. 分组函数只能出现在选择列表、having、order by 子句中,不能出现在 where 中;

  2. 如果在 select 语句中同时包含有 group by, having, order by 那么它们的顺序是 group by, having, order by;

  3. 在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须有一个出现在 group by 子句中,否则就会出错。

    如SELECT deptno, AVG(sal), MAX(sal) FROM emp GROUP by deptno HAVING AVG(sal) < 2000;

这里 deptno 就一定要出现在 group by 中

多表查询  

说明:多表查询是指基于两个和两个以上的表或是视图的查询。在实际应用中,查询单个表可能不能满足需求,如查询 sales 部门位置和其员工的姓名,这种情况下需要使用到 dept 表和 emp 表

查询雇员名,雇员工资及所在部门的名字【笛卡尔集】

规定:多表查询的条件是至少不能少于表的个数-1 才能排除笛卡尔集

(如果有N张表联合查询,必须得有N-1个条件,才能避免笛卡尔集合)

SELECT e.ename, e.sal, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno;

查询部门号为 10 的部门名、员工名和工资

SELECT d.dname, e.ename, e.sal FROM emp e, dept d WHERE e.deptno = d.deptno and e.deptno = 10;

查询各个员工的姓名,工资及工资的级别

SELECT e.ename, e.sal, s.grade FROM emp e, salgrade s WHERE e.sal BETWEEN s.losal AND s.hisal;

查询雇员名,雇员工资及所在部门的名字,并按部门排序

SELECT e.ename, e.sal, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno ORDER by e.deptno;

(如果用 group by,要把 e.deptno 放到查询列里)

自连接 

说明:自连接是指在同一张表的连接查询

查询某个员工的上级领导的姓名,比如显示员工‘Stephen’的上级

SELECT worker.ename, boss.ename FROM emp worker,emp boss WHERE worker.mgr = boss.empno AND worker.ename = 'Stephen';

今天笔记做到这,后续有空继续。

Oracle 学习笔记(四)的更多相关文章

  1. oracle 学习笔记(四)

    1. SQL(高级查询) 1.1. 子查询 1.1.1. 子查询在WHERE子句中 在SELECT查询中,在WHERE查询条件中的限制条件不是一个确定的值,而是来自于另外一个查询的结果.为了给查询提供 ...

  2. Oracle学习笔记四

    一.PL/SQL编程 游标(光标Cursor) 为什么使用游标 在写java程序中有集合的概念,那么在pl/sq中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据. 语法: C ...

  3. Oracle学习笔记四 SQL命令(二):SQL操作语言类别

    SQL分为下列语言类别 1.数据定义语言(DDL) Create.Alter.Drop 2.数据操纵语言(DML) Insert.Select.Delete.Update 3.事务控制语言(TCL) ...

  4. Oracle学习笔记(四)

    六.约束 1.约束的作用 定义规则:什么数据可以输入,什么不可以 确保完整性:数据的精确性和可靠性 2.Oracle五个重要的约束: 非空约束.主键约束.外键约束.检查约束.唯一约束. (1)非空约束 ...

  5. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  6. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  7. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  8. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  9. Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  10. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

随机推荐

  1. react中性能优化的点

    react提升代码性能的点 1.绑定如果改变作用域点话放在constructor里面做,这样可以保证整个程序的作用域绑定操作只会执行一次,而且避免子组件的无谓渲染. 2.内置的setState是个异步 ...

  2. Netbackup用于技术支持的问题报告(报障模版)

    在与支持部门联系以报告问题之前,请填写以下信息. 日期: _________________________记录以下产品.平台和设备信息:■ 产品及其版本级别.■ 服务器硬件类型和操作系统级别.■ 客 ...

  3. [USACO17FEB]Why Did the Cow Cross the Road III G

    嘟嘟嘟 首先看到这种序列的问题,我就想到了逆序对,然后就想如何把这道题转化. 首先要满足这个条件:ai <bi.那么我们把所有数按第一次出现的顺序重新赋值,那么对于新的数列,一定满足了ai &l ...

  4. ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(一) 整理基础数据

    最近碰巧发现一款比较好的Web即时通讯前端组件,layim,百度关键字即可,我下面要做的就是基于这个前端组件配合后台完成即时聊天等功能.当然用到的技术就是ASP.NET SingalR框架.本人不会c ...

  5. context.RewritePath

    context.RewritePath原理修改HttpRequest类中的Path属性

  6. 运lucky

    运 [问题背景] zhx 和妹子们玩数数游戏. [问题描述] 仅包含 4 或7 的数被称为幸运数. 一个序列的子序列被定义为从序列中删去若干个数, 剩下的数组成的新序列. 两个子序列被定义为不同的当且 ...

  7. C# 动态改变webservice的访问地址

    1.添加一个App.config配置文件. 2.配置服务http://Lenovo-PC:80/EvisaWS/WharfService?wsdl,那么在上面的文件中就会自动生成服务的配置: < ...

  8. css的基础用法(上)

    css定义: CSS层叠式样表(Cascading  Style Sheets)是一种用来表现html或xml等文件样式的计算机语言.CSS不仅可以静态的修饰网页,还可以配合各种脚本语言动态地对网页个 ...

  9. span没有name属性

    <span id="test" name="测试数据">测试咯</span> 在eclipse中这么写发现会有警告提示.百度发现原来sp ...

  10. 服务命令只支持基本的LSB操作(启动、停止、重新启动、尝试重启、重新加载、强制重新加载、状态)。对于其他操作,请尝试使用systemctl。

    The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, forc ...