知识大全 ORACLE查询练习
Posted 员工
篇首语:采得百花成蜜后,为谁辛苦为谁甜。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ORACLE查询练习相关的知识,希望对你有一定的参考价值。
ORACLE查询练习 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
emp 员工表(empno 员工号/ename 员工姓名/job 工作/mgr 上级编号/hiredate 受雇日期/sal 薪金/m 佣金/deptno 部门编号)
dept 部门表(deptno 部门编号/dname 部门名称/loc 地点)
工资= 薪金+ 佣金
.列出至少有一个员工的所有部门
.列出薪金比 SMITH 多的所有员工
.列出所有员工的姓名及其直接上级的姓名
.列出受雇日期早于其直接上级的所有员工
.列出部门名称和这些部门的员工信息 同时列出那些没有员工的部门
.列出所有 CLERK (办事员)的姓名及其部门名称
.列出最低薪金大于 的各种工作
.列出在部门 SALES (销售部)工作的员工的姓名 假定不知道销售部的部门编号
.列出薪金高于公司平均薪金的所有员工
.列出与 SCOTT 从事相同工作的所有员工
.列出薪金等于部门 中员工的薪金的所有员工的姓名和薪金
.列出薪金高于在部门 工作的所有员工的薪金的员工姓名和薪金
.列出在每个部门工作的员工数量 平均工资和平均服务期限
.列出所有员工的姓名 部门名称和工资
.列出所有部门的详细信息和部门人数
.列出各种工作的最低工资
.列出各个部门的MANAGER(经理)的最低薪金
.列出所有员工的年工资 按年薪从低到高排序
select dname from dept where deptno in(
select deptno from emp);
select * from emp where sal>(
select sal from emp where ename= SMITH );
select a ename (
select ename from emp b where b empno=a mgr) as bossname from emp a;
select a ename from emp a where a hiredate<(
select hiredate from emp b where b empno=a mgr);
select a dname b empno b ename b job b mgr b hiredate b sal m b deptno
from dept a left join emp b on a deptno=b deptno;
select a ename b dname from emp a join dept b
on a deptno=b deptno and a job= CLERK ;
select distinct job as HighSalJob from emp group by job having min(sal)> ;
select ename from emp where deptno=(
select deptno from dept where dname= SALES );
select ename from emp where sal>(
select avg(sal) from emp);
select ename from emp where job=(
select job from emp where ename= SCOTT );
select a ename a sal from emp a where a sal in (
select b sal from emp b where b deptno= ) and a deptno<> ;
select ename sal from emp where sal>(
select max(sal) from emp where deptno= );
select
(select b dname from dept b where a deptno=b deptno) as deptname
count(deptno) as deptcount
avg(sal) as deptavgsal
from emp a group by deptno;
select
a ename
(select b dname from dept b where b deptno=a deptno) as deptname
sal
from emp a;
select
a deptno
a dname
a loc
(select count(deptno) from emp b where b deptno=a deptno group by b deptno) as deptcount
from dept a;
select job avg(sal) from emp group by job;
select deptno min(sal) from emp where job= MANAGER group by deptno;
select ename (sal+nvl(m ))* as salpersal from emp order by salpersal;
ORACLE 子句查询 分组等
A 同表子查询作为条件
a 给出人口多于Russia(俄国)的国家名称SELECT name FROM bbc
WHERE population>
(SELECT population FROM bbc
WHERE name= Russia )
b 给出 India (印度) Iran (伊朗)所在地区的所有国家的所有信息SELECT * FROM bbc
WHERE region IN
(SELECT region FROM bbc
WHERE name IN ( India Iran ))
c 给出人均GDP 超过 United Kingdom (英国)的欧洲国家 SELECT name FROM bbc
WHERE region= Europe AND gdp/population >
(SELECT gdp/population FROM bbc
WHERE name= United Kingdom )
d 这个查询实际上等同于以下这个:
select e ename from emp e (select empno from emp where ename = KING ) e whe
re e mgr = e empno;
你可以用EXISTS 写同样的查询 你只要把外部查询一栏移到一个像下面这样的子查询环境中就可以了
select ename from emp e
where exists (select from emp where e mgr = empno and ename = KING );
当你在一个WHERE 子句中写EXISTS 时 又等于向最优化传达了这样一条信息 即你想让外部查询先运行 使用每一个值来从内部查询(假定 EXISTS=由外而内)中得到一个值
B 异表子查询作为条件
a select * from studentExam where studentid=( select studentid from student where name= 吴丽丽 );
b select * from studentexam where studentid in (select studentid from student) order by studentid;
c select * from student where studentid in (select studentid from studentexam where mark> );
select studentexam mark studentexam studentid as seid student studentid student name from studentexam student where student studentid=studentexam studentid;
过滤分组:
顺序为先分组 再过滤 最后进行统计(实际值)
select studentid count(*) as highpasses from studentexamwhere mark> group by studentid;
假使我们不想通过数据表中的实际值 而是通过聚合函数的结果来过过滤查询的结果
select studentid avg(mark) as averagemarkfrom studentexamwhere avg(mark)< oravg(mark)> group by studentid;(此句错误 where 句子是不能用聚合函数作条件的)此时要用having
select studentid avg(mark) from studentexam group by studentid having avg(mark)> or avg(mark)< ;
select studentid avg(mark) from studentexam where studentid in( )group by
studentid having avg(mark)> ;(先分组 再过滤 再having 聚合 最后再统计)
select studentid avg(mark) as averagemarkfrom studentexamwhere examid in( )group by studentidhaving avg(mark)< or avg(mark)> ;
返回限定行数查询:
select name from student where rownum<= ;
oracle 中使用rownum 关键字指定 但该关键字必须在where 子句中与一个比较运算符一起指定 而不能与order by 一起配合便用 因为rownum 维护的是原始行号 如果需要用group
by\\order by 就用子句查询作表使用的方法:
select studentid averagemark from(select studentid avg(mark) as averagemarkfrom
cha138/Article/program/Oracle/201311/18907相关参考
Oracle的sql语句练习题含答案(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 选择部
Oracle查询表、视图、序列等信息查询 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这几天做
(一)子查询select*fromtableA whereidoperator(select*fromtableAawhereaid=) operaor 单条记录子查询(
别名 oracle别名如果别名包含空格特殊字符(如#$)或需区分大小写(Name)需要用双引号把别名引起来 selectenameName sal*AnnualSalary fromemp
Oracle树查询及相关函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle树查询的
ORACLE提供了一种树形结构用来实现层次查询 STARTWITH指定查询的根行 CONNECTBY指定父行和子行的关系 PRIOR引用父行 为测试方便使用如下Demo 建立数据库表Tr
子查询目标 子查询是一种把查询的结果作为参数返回给另一个查询的一种查询 子查询可以让你将多个查询绑定在一起 嵌套子查询 多层子查询 相关子查询 可接受外部的引用 exists/any
oracle常用经典SQL查询 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 常用SQL查询
Oracle用户权限查询 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 查看所有用户 sele
ORACLE查询树型关系 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! oracle中的sele