`

Oracle(SQL之查询)

阅读更多
--查询语句
select * from emp;
-- 查询deptno,sal,job  去掉重复部门号
select distinct deptno,sal,job from emp;
-- 设置执行时间
set timing on;
-- 查找emp 表中员工的年薪
select sal*12+nvl(comm,0)*12 '年工资',ename,job from emp;
-- 查找 工资大于三千的员工
select ename,sal from emp where sal>3000;
-- 查询雇佣在1-1月-1982 之后的员工
select * from emp where hiredate>'1-1月-1982';
-- 查询工资在2500到3000之间的员工
select * from emp where sal>2500 and sal<3000;
-- 查询员工姓名中 S 开头的员工的所有信息
select * from emp where ename like 'S%';
-- 查询员工姓名第三个字母是L的员工
select * from emp where ename like '__L%';
-- 查询部门号
select deptno from emp ;
-- 查询10号和20号部门的员工的所有信息
select * from emp where deptno in(10,20);
-- 查询没有上级的员工 写法1
select * from emp where mgr is null;
-- 查询没有上级的员工 写法2
select * from emp where mgr='';

-- 查询工资高于500或者是岗位为MANAGER的雇员,
-- 同时还要满足他们的姓名首写字母为大写的J:
select * from emp where (sal>500 or job='MANAGER')and ename like 'J%';

-- 查询按照工资的从低到高的顺序显示员工的信息
select ename,sal from emp order by sal
select ename,sal from emp order by sal asc;
-- 降序 排列
select ename,sal from emp order by sal desc;
-- 使用别名排序
select sal*12+nvl(comm,0)*12 "年薪" from emp  order by "年薪" desc;
select ename,(sal+nvl(comm,0))*12 as "年薪" from emp order by "年薪";
--oracle分组函数是对一批数据进行操作之后返回一个值。
--一批数据可能是整个表,也可以是按某些条件把表分成的组。
-- 常用分组函数有max、min、avg、count、sum。
select max(sal) from emp;
select min(sal) from emp;
select avg(sal) from emp;
select count(job) from emp;
select sum(sal)  from emp;
select max(sal),min(sal) from emp;

-- 查询所有员工最高工资的员工姓名
select ename,sal from emp where sal=(select max(sal) from emp);

--查询工资高于平均工资的员工信息
select * from emp where sal > (select avg(sal)from emp);
--查询每个部门的平均工资和最高工资 (分组函数)
select avg(sal),max(sal),deptno from emp group by deptno;
--查询每个部门的每种岗位的平均工资和最低工资
select avg(sal),min(sal),deptno,job from emp group by deptno,job;
--查询平均工资低于2000的部门号和它的平均工资和最高工资 having
--(也就是查询部门的平均工资和最高工资并且要低于平均工资2000的部门号):
select avg(sal),max(sal),deptno from emp group by deptno having avg(sal)<2000;

--1 分组函数只能出现在select语句的列里,或者在having、order by字句中。
--2 如果在select语句中同时包含有group by、having、order by字句,
--那么它们的顺序必须是:先group by 再having 再order by。比如下面语句:
--select avg(sal),max(sal),deptno from emp group by deptno having arg(sal)<2000 order by arg(sal);
--3 在select后面有列、表达式、和分组函数时,那么这些列和表达式必须有一个出现在group by字句中,否则会报错的。
select avg(sal),max(sal),deptno from emp group by deptno having avg(sal)<2000 order by avg(sal);
-- 多表查询是基于两个或两个以上的表或是视图的查询。
select * from dept;
select e.ename,e.sal, d.deptno from emp e, dept d where e.deptno=d.deptno;
--查询部门号为10的部门名称、员工名及工资
select e.ename,d.dname,e.sal from dept d,emp e where d.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.deptno from dept d,emp e where d.deptno=e.deptno  order by d.deptno desc ;
--查询员工ford的上级
select e.ename from emp e where mgr=null;
select worker.ename,boss.ename from emp worker,emp boss where worker.mgr=boss.empno and worker.ename='ford';
-- 查询与smith同一部门的所有员工: ALLEN
select * from emp where deptno=(select  deptno from emp where ename='ALLEN');
-- 查询和部门号为10的工作(job)相同的员工名、岗位、工资、部门号
select distinct e.ename,e.job,e.sal,e.deptno from emp e where deptno=10;
select * from emp where job in(select distinct job from emp where deptno=10);
--注意:这里job不能用=,必须用关键字in,
--因为用=是表示一条记录,而现在子查询语句是多行数据,必须用in关键字。

-- 查询显示工资比部门为30的所有员工的工资高的员工名、工资、部门号。 all语句
select ename, sal, deptno from emp where sal>all(select sal  from emp where deptno=30);
-- 第二种写法
select ename,sal,deptno from emp where sal>(select max(sal) from emp where deptno=30);
-- 第二种写法效率很高  尽量使用函数

--查询显示工资比部门30的任意一个员工的工资高的员工的姓名、工资和部门 any语句
select ename,sal,deptno from emp where sal>any (select min(sal) from emp where deptno=30);
select ename,sal,deptno from emp where sal>any (select sal from emp where deptno=30);
select ename,sal,deptno from emp where sal>(select min(sal) from emp where deptno=30);

-- 多列子查询
-- 查询部门号和工作或者是薪水和ALLEAN 相同的
select ename "员工姓名", sal "工资" from emp ;
select * from emp where (deptno,sal)=(select deptno,sal from emp where ename='ALLEAN');
select * from emp where (deptno,job)=(select deptno,job from emp where ename='ALLEAN');
-- 查询如何显示高于自己部门平均工资的员工的信息
select  ename ,sal from emp where  sal>(select avg(sal) from emp where deptno=10);
-- 再次注意:oracle的表名和字段名是不区分大小写,但是字段里的数据是要区分大小写的。
--首先查询各个部门的平均工资和部门号
select avg(sal),deptno from emp group by deptno;
--将上面的查询结果看做是一张表(子表),然后和emp进行多表查询
select  e1.ename,e1.sal, e1.deptno,e2.mysal from emp e1,(select avg(sal) mysal,deptno from emp group by deptno)e2 where e1.deptno=e2.deptno and
e1.sal>e2.mysal;
-- tochar 函数
select * from emp where to_char(hiredate,'yyyy')=1981;
select * from emp where to_char(hiredate,'mm')=12;
select * from emp where to_char(hiredate,'dd')=3;
select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp;
-- dual
select sysdate from dual;
分享到:
评论

相关推荐

    oracle SQL查询工具

    oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具...

    Oracle Sql语句转换成Mysql Sql语句

    在数据库管理领域,Oracle SQL和MySQL SQL是两种广泛使用的SQL方言,它们在语法和功能上存在一定的差异。当需要将一个基于Oracle SQL的应用程序迁移到MySQL环境时,就需要进行SQL语句的转换工作。本项目提供了一个...

    Oracle SQL 官方文档

    Oracle SQL 是一种强大的数据库查询和编程语言,广泛用于管理和操作Oracle数据库系统。11g第二版(11G2)是Oracle的一个重要版本,提供了许多增强功能和优化。本官方文档集包括四份重要的参考资料,涵盖了Oracle SQL...

    Oracle SQL高级编程

    2. 高级查询技术:使用Oracle SQL的高级特性,如分析函数、子查询、连接以及数据聚合等。 3. 事务处理:深入理解如何使用Oracle的事务控制语句,如COMMIT、ROLLBACK以及SAVEPOINT,进行有效的事务管理。 4. 锁机制:...

    Oracle Sql基础(beginning oracle sql中文版)

    Oracle SQL是数据库管理员和开发人员用来与Oracle数据库交互的语言,它是SQL标准的扩展,提供了许多特有的功能和优化。本资源“Oracle Sql基础(beginning oracle sql中文版)”旨在为初学者提供一个全面的Oracle ...

    oracle到sqlserver 跨库查询

    .oracle 到 SQL Server 跨库查询 Oracle 到 SQL Server 跨库查询是指通过网关工具将数据从 SQL Server 数据库中抽取到 Oracle 数据库中。这个过程需要安装和配置网关软件,并进行相应的设置和配置。 一、网关软件...

    ORACLE SQL性能优化系列

    ORACLE SQL性能优化系列 ORACLE SQL性能优化是数据库管理员和开发者非常关心的一个话题。为了提高数据库的性能,ORACLE 提供了多种优化技术。下面我们将详细介绍 ORACLE SQL 性能优化系列中的一些重要知识点。 一...

    Oracle四大宝典之一:Oracle Sql基础 中文版

    第三章 ORACLE SQL 单行函数 第四章 从多表中查询数据 第五章 用组函数合计数据 第六章 子查询 第七章 操纵数据 第八章 创建和管理表 第九章 内置约束 第十章 创建视图 第十一章 其他数据库对象 第十二章 控制用户...

    Oracle-SQL.rar_oracle_oracle sql_sql

    Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,尤其在企业级应用中占据着重要地位。SQL(Structured Query Language)则是与关系数据库交互的语言,是管理、查询和操作数据库的基础工具。对于初学...

    ORACLE_SQLDeveloper使用教程

    ### Oracle SQL Developer 使用教程 #### 一、Oracle Database Home Page 的使用 在开始介绍 Oracle SQL Developer 的使用之前,我们先来看看如何使用 Oracle Database Home Page。这部分内容非常重要,因为它是...

    OracleSQLDeveloper

    这个工具的强大之处在于其直观的用户界面和广泛的功能集,包括数据查询、数据模型设计、数据库对象管理、SQL脚本执行以及数据库迁移等。 在Oracle SQL Developer中,你可以执行以下关键操作: 1. **数据查询**:...

    oracle消耗资源的sql查询语句记录

    在Oracle数据库管理中,监控和优化SQL查询是确保系统性能稳定的关键环节之一。对于那些消耗大量资源的SQL语句进行记录和分析可以帮助DBA快速定位问题并采取相应的优化措施。本文将详细介绍如何通过特定的SQL查询来找...

    Oracle SQL Developer 使用说明

    Oracle SQL Developer 是一款由Oracle公司推出的强大的数据库管理工具,它为数据库管理员(DBA)、开发者以及数据分析师提供了全面的功能,以高效地管理和操作Oracle数据库。本文档将深入讲解Oracle SQL Developer的...

    sql查询oracle时间段操作

    在SQL查询中对Oracle数据库进行时间段操作是一项关键技能,特别是在数据恢复和历史数据分析时。Oracle数据库提供了多种方式来处理时间范围的数据,包括SQL查询、闪回功能和快照。下面我们将详细探讨这些知识点。 ...

    《精通Oracle SQL 第2版》PDF版本下载.txt

    Oracle SQL是一种标准化的数据查询语言,用于与Oracle数据库进行交互。它允许用户查询、更新、删除数据库中的数据,并执行各种管理任务。Oracle SQL不仅支持标准SQL语句,还提供了许多扩展功能,使其成为处理复杂...

    大型数据库技术-实验二 Oracle SQL PLUS环境与查询.doc

    【大型数据库技术-实验二 Oracle SQL PLUS环境与查询】 实验主要涵盖了Oracle数据库系统中的SQL*PLUS工具的使用以及SQL查询语言的基本操作。SQL*PLUS是Oracle数据库管理系统的命令行界面,用于执行SQL语句和PL/SQL...

    Oracle SQL(SQL for Oracle)

    Oracle SQL,全称为结构化查询语言在Oracle数据库环境中的应用,是数据库管理员和开发人员用于检索、更新和管理Oracle数据库的核心工具。Oracle SQL是SQL标准的扩展,它提供了许多特有的功能,以满足企业级数据库...

    oracle SQL语法大全

    Oracle SQL,全称为结构化查询语言,是用于管理和操作Oracle数据库的强大工具。它允许用户查询、更新、插入和删除数据,以及创建和管理数据库对象。本资料“Oracle SQL语法大全”将全面涵盖Oracle SQL的基础概念、...

    Oracle的SQL监视工具SQLTracker

    在Oracle数据库管理中,SQL性能优化是关键任务之一。SQLTracker提供了一套全面的监测和分析功能,包括: 1. **实时SQL监控**:能够实时显示正在执行的SQL语句,包括执行时间、资源消耗等信息,帮助用户快速定位慢...

    精通OracleSQL第2版.zip

    《精通Oracle SQL(第2版)》是一本深入解析Oracle数据库查询语言的专业书籍,由Oracle ACE和OakTable团队的专家共同撰写,集成了他们的丰富经验和专业知识。这本书旨在帮助读者掌握Oracle SQL的高级技巧,提升在...

Global site tag (gtag.js) - Google Analytics