- 浏览: 107292 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
小小诺:
博主实例2中的代码博主难道没有测试吗?“工资总额不能超过6万元 ...
PLSQL -
emilyzhanghong:
我一般都用工具导入导出,语句记不住.
ORACLE 导入导出
--查询语句
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;
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;
发表评论
-
实现数据的列转入到行中的过程语言
2013-05-07 14:16 692drop PROCEDURE RSPDB.GET_C ... -
db2工作笔记
2012-02-15 11:03 956// 生成32位随机数 CREATE OR REPLAC ... -
oracle_SQL 优化
2012-01-14 04:53 835ORACL ... -
db2 基本命令整理
2012-01-13 13:34 989安装好数据库 进行系统环境变量的设置 可以在doc命令行上面 ... -
db2 数据备份和还原
2012-01-12 17:53 1114connect to odsdb user reportdb ... -
db2命令
2011-12-27 10:57 9041.关闭db2 db2stop 或db2 ... -
cognos 连不上业务库
2011-12-10 17:39 1936Cognos Error 'QE-DEF-0285 The l ... -
编目远程数据库到本地
2011-11-22 20:52 903db2 catalog tcpip node reportdb ... -
PLSQL
2011-09-21 20:27 4863--变量声明 declare -- 程序体 b ... -
快速生成测试数据
2011-09-21 11:34 568select rownum as id, to_char(sy ... -
window下 ORACL卸载
2011-07-28 21:23 1028用Oracle自带的卸载程序不能从根本上卸载Oracle,从而 ... -
SQL优化
2011-07-17 00:24 720SQL优化的一些资料 -
ORACLE 问题
2011-07-04 23:55 782表 张三 英语 张三 语文 张三 英语 李四 英语 李四 语文 ... -
ORACLE 导入导出
2011-07-04 23:54 907Oracle数据导入导出imp/exp就相当于oracle数据 ... -
SQl游标的使用
2011-05-27 14:13 779use testtest-- 定义游标MyTestCursor ... -
序列自增长的问题
2011-05-25 11:16 783用存储过程为多表生成序列: 为每张表生成对应的序列 --创建 ... -
Oracle(SQL查询测试题)
2011-05-20 14:13 1317--客户表a(id name address) 登 ... -
Oracle(SQL 之视图)
2011-05-20 11:55 912-- 查询部门号为10所有的员工,所有得到提成的员工,以及20 ... -
Oracle(SQL)
2011-05-20 11:31 795--插入一条数据 select * from emp; --修 ... -
Oracle(procedure)
2011-05-20 11:07 2154--存储过程 -- 列1: 如果员工工资小于2000的涨百分之 ...
相关推荐
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是两种广泛使用的SQL方言,它们在语法和功能上存在一定的差异。当需要将一个基于Oracle SQL的应用程序迁移到MySQL环境时,就需要进行SQL语句的转换工作。本项目提供了一个...
Oracle SQL 是一种强大的数据库查询和编程语言,广泛用于管理和操作Oracle数据库系统。11g第二版(11G2)是Oracle的一个重要版本,提供了许多增强功能和优化。本官方文档集包括四份重要的参考资料,涵盖了Oracle SQL...
2. 高级查询技术:使用Oracle SQL的高级特性,如分析函数、子查询、连接以及数据聚合等。 3. 事务处理:深入理解如何使用Oracle的事务控制语句,如COMMIT、ROLLBACK以及SAVEPOINT,进行有效的事务管理。 4. 锁机制:...
.oracle 到 SQL Server 跨库查询 Oracle 到 SQL Server 跨库查询是指通过网关工具将数据从 SQL Server 数据库中抽取到 Oracle 数据库中。这个过程需要安装和配置网关软件,并进行相应的设置和配置。 一、网关软件...
Oracle SQL是数据库管理员和开发人员用来与Oracle数据库交互的语言,它是SQL标准的扩展,提供了许多特有的功能和优化。本资源“Oracle Sql基础(beginning oracle sql中文版)”旨在为初学者提供一个全面的Oracle ...
第三章 ORACLE SQL 单行函数 第四章 从多表中查询数据 第五章 用组函数合计数据 第六章 子查询 第七章 操纵数据 第八章 创建和管理表 第九章 内置约束 第十章 创建视图 第十一章 其他数据库对象 第十二章 控制用户...
Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,尤其在企业级应用中占据着重要地位。SQL(Structured Query Language)则是与关系数据库交互的语言,是管理、查询和操作数据库的基础工具。对于初学...
### Oracle SQL Developer 使用教程 #### 一、Oracle Database Home Page 的使用 在开始介绍 Oracle SQL Developer 的使用之前,我们先来看看如何使用 Oracle Database Home Page。这部分内容非常重要,因为它是...
这个工具的强大之处在于其直观的用户界面和广泛的功能集,包括数据查询、数据模型设计、数据库对象管理、SQL脚本执行以及数据库迁移等。 在Oracle SQL Developer中,你可以执行以下关键操作: 1. **数据查询**:...
在Oracle数据库管理中,监控和优化SQL查询是确保系统性能稳定的关键环节之一。对于那些消耗大量资源的SQL语句进行记录和分析可以帮助DBA快速定位问题并采取相应的优化措施。本文将详细介绍如何通过特定的SQL查询来找...
Oracle SQL Developer 是一款由Oracle公司推出的强大的数据库管理工具,它为数据库管理员(DBA)、开发者以及数据分析师提供了全面的功能,以高效地管理和操作Oracle数据库。本文档将深入讲解Oracle SQL Developer的...
在SQL查询中对Oracle数据库进行时间段操作是一项关键技能,特别是在数据恢复和历史数据分析时。Oracle数据库提供了多种方式来处理时间范围的数据,包括SQL查询、闪回功能和快照。下面我们将详细探讨这些知识点。 ...
Oracle SQL是一种标准化的数据查询语言,用于与Oracle数据库进行交互。它允许用户查询、更新、删除数据库中的数据,并执行各种管理任务。Oracle SQL不仅支持标准SQL语句,还提供了许多扩展功能,使其成为处理复杂...
【大型数据库技术-实验二 Oracle SQL PLUS环境与查询】 实验主要涵盖了Oracle数据库系统中的SQL*PLUS工具的使用以及SQL查询语言的基本操作。SQL*PLUS是Oracle数据库管理系统的命令行界面,用于执行SQL语句和PL/SQL...
Oracle SQL,全称为结构化查询语言在Oracle数据库环境中的应用,是数据库管理员和开发人员用于检索、更新和管理Oracle数据库的核心工具。Oracle SQL是SQL标准的扩展,它提供了许多特有的功能,以满足企业级数据库...
Oracle SQL,全称为结构化查询语言,是用于管理和操作Oracle数据库的强大工具。它允许用户查询、更新、插入和删除数据,以及创建和管理数据库对象。本资料“Oracle SQL语法大全”将全面涵盖Oracle SQL的基础概念、...
《精通Oracle SQL(第2版)》是一本深入解析Oracle数据库查询语言的专业书籍,由Oracle ACE和OakTable团队的专家共同撰写,集成了他们的丰富经验和专业知识。这本书旨在帮助读者掌握Oracle SQL的高级技巧,提升在...
在Oracle数据库管理中,SQL性能优化是关键任务之一。SQLTracker提供了一套全面的监测和分析功能,包括: 1. **实时SQL监控**:能够实时显示正在执行的SQL语句,包括执行时间、资源消耗等信息,帮助用户快速定位慢...