Oracle学习笔记4 稍复杂的查询和分页
仍然使用SCOTT用户来操作:
1、 显示工资比部门30的所有员工的工资都高的员工的信息:
Select * from emp where sal>all(select sal from emp where deptno=30);
2、 显示工资比部门30的任意一个员工的工资高就可以的员工的信息:
Select * from emp where sal>any(select sal from emp where deptno=30);
其实,换种方法也是可以的:
Select * from emp where sal>(select min(sal) from emp where deptno=30);
3、 找出和SMITH的部门号、工作都相同的员工的信息:
Select * from emp where (deptno,job)=(Select deptno,job from emp where ename=’SMITH’);
4、 如何显示高于自己部门平均工资的员工的信息
解决这个复杂一点的查询,我们可以这样考虑:
先找出每个部门的平均工资:
Select deptno,avg(sal) avg_sal from emp group by deptno;结果如下:
SQL> select deptno,avg(sal) avg_sal from emp group by deptno;
DEPTNO AVG_SAL
------ ----------
30 1566.66666
20 2175
10 2916.66666
然后我们就可以把这张表当成一张子表使用:
select a2.ename,a2.sal,a2.deptno,a1.avg_sal from emp a2,(select deptno,avg(sal) avg_sal from emp group by deptno) a1 where a2.deptno=a1.deptno and a2.sal>a1.avg_sal;
结果为:
ENAME SAL DEPTNO AVG_SAL
---------- --------- ------ ----------
ALLEN 1600.00 30 1566.66666
JONES 2975.00 20 2175
BLAKE 2850.00 30 1566.66666
SCOTT 3000.00 20 2175
K
相关文档:
oracle数据库的导入与导出是做为一名实施工程师或维护工程师每经常要做的工作。当数据库结构需要做变化的时候,我们一般先将数据做备份,此时我们需要使用到Oracle的导出功能。当我们在做导入的时候出错或者我们的数据遭到错误删除的时候,我们需要恢复数据库,那我们需要使用到导入的功能。现在也有很多功能能够帮我们做到 ......
ORACLE 如何产生一个随机数:DBMS_RANDOM
--1、小数( 0 ~ 1)
select dbms_random.value from dual ;
--2、指定范围内的小数 ( 0 ~ 100 )
select dbms_random.value(0,100) from dual ;
--3、指定范围内的整数 ( 0 ~ 100 )
select trunc(d ......
转载一个BDB的相关介绍,基本可以当速成手册用,更多的文档可以去Oracle官方网站下载。
SQL 开发人员 Oracle Berkeley DB 指南
作者:Margo Seltzer
Oracle Berkeley DB 中常用 SQL 函数使用指南。
2007 年 9 月发表
常常有人问 Oracle Berkeley DB “我如何在 Berkeley DB 中进行 <SQL 查询>?"因此,我们 ......
DBWn进程负责将脏数据块写入磁盘。它是一个非常重要的进程,随着内存的增加,一个DBWn进程可能不够用了。从oracle8i起,我们可以为系统配置多个DBWn进程。初始化参数db_writer_process决定了启动多少个DBWn进程。每个DBWn进程都会分配一个cache lru chain latch。
DBWn作为一个后台进程, ......
表的查找:
select * from emp where (sal>500 or job='MANAGER') and ename like 'J%';
引号里边的字符是区分大小写的。
查找之后把结果排序:
select * from emp order by sal asc;
asc是升序,desc是降序
对列重命名,只要打个空格,后跟新列名就可以
select ename,sal*12+nvl(comm,0)*12 "年薪" from ......