- 浏览: 105408 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
小小诺:
博主实例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 669drop PROCEDURE RSPDB.GET_C ... -
db2工作笔记
2012-02-15 11:03 949// 生成32位随机数 CREATE OR REPLAC ... -
oracle_SQL 优化
2012-01-14 04:53 820ORACL ... -
db2 基本命令整理
2012-01-13 13:34 948安装好数据库 进行系统环境变量的设置 可以在doc命令行上面 ... -
db2 数据备份和还原
2012-01-12 17:53 1101connect to odsdb user reportdb ... -
db2命令
2011-12-27 10:57 8901.关闭db2 db2stop 或db2 ... -
cognos 连不上业务库
2011-12-10 17:39 1898Cognos Error 'QE-DEF-0285 The l ... -
编目远程数据库到本地
2011-11-22 20:52 892db2 catalog tcpip node reportdb ... -
PLSQL
2011-09-21 20:27 4846--变量声明 declare -- 程序体 b ... -
快速生成测试数据
2011-09-21 11:34 556select rownum as id, to_char(sy ... -
window下 ORACL卸载
2011-07-28 21:23 1014用Oracle自带的卸载程序不能从根本上卸载Oracle,从而 ... -
SQL优化
2011-07-17 00:24 695SQL优化的一些资料 -
ORACLE 问题
2011-07-04 23:55 759表 张三 英语 张三 语文 张三 英语 李四 英语 李四 语文 ... -
ORACLE 导入导出
2011-07-04 23:54 891Oracle数据导入导出imp/exp就相当于oracle数据 ... -
SQl游标的使用
2011-05-27 14:13 769use testtest-- 定义游标MyTestCursor ... -
序列自增长的问题
2011-05-25 11:16 769用存储过程为多表生成序列: 为每张表生成对应的序列 --创建 ... -
Oracle(SQL查询测试题)
2011-05-20 14:13 1302--客户表a(id name address) 登 ... -
Oracle(SQL 之视图)
2011-05-20 11:55 864-- 查询部门号为10所有的员工,所有得到提成的员工,以及20 ... -
Oracle(SQL)
2011-05-20 11:31 769--插入一条数据 select * from emp; --修 ... -
Oracle(procedure)
2011-05-20 11:07 2140--存储过程 -- 列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是数据库管理员和开发人员用来与Oracle数据库交互的语言,它是SQL标准的扩展,提供了许多特有的功能和优化。本资源“Oracle Sql基础(beginning oracle sql中文版)”旨在为初学者提供一个全面的Oracle ...
.oracle 到 SQL Server 跨库查询 Oracle 到 SQL Server 跨库查询是指通过网关工具将数据从 SQL Server 数据库中抽取到 Oracle 数据库中。这个过程需要安装和配置网关软件,并进行相应的设置和配置。 一、网关软件...
ORACLE SQL性能优化系列 ORACLE SQL性能优化是数据库管理员和开发者非常关心的一个话题。为了提高数据库的性能,ORACLE 提供了多种优化技术。下面我们将详细介绍 ORACLE SQL 性能优化系列中的一些重要知识点。 一...
第三章 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性能优化是关键任务之一。SQLTracker提供了一套全面的监测和分析功能,包括: 1. **实时SQL监控**:能够实时显示正在执行的SQL语句,包括执行时间、资源消耗等信息,帮助用户快速定位慢...
Oracle SQL,全称为结构化查询语言在Oracle数据库环境中的应用,是数据库管理员和开发人员用于检索、更新和管理Oracle数据库的核心工具。Oracle SQL是SQL标准的扩展,它提供了许多特有的功能,以满足企业级数据库...
Oracle SQL,全称为结构化查询语言,是用于管理和操作Oracle数据库的强大工具。它允许用户查询、更新、插入和删除数据,以及创建和管理数据库对象。本资料“Oracle SQL语法大全”将全面涵盖Oracle SQL的基础概念、...
《精通Oracle SQL(第2版)》是一本深入解析Oracle数据库查询语言的专业书籍,由Oracle ACE和OakTable团队的专家共同撰写,集成了他们的丰富经验和专业知识。这本书旨在帮助读者掌握Oracle SQL的高级技巧,提升在...