---------------------------------------------------------------------------- --自连接 select worker.ename,boss.empno from emp worker,emp boss where worker.mgr=boss.empno; --选出雇员名字为FORD的老板的名字 select worker.ename,boss.ename from emp worker,emp boss where worker.mgr=boss.empno and worker.ename='FORD'; --如何显示和SMITH同一部门的所有员工 select * from emp where DEPTNO=(select DEPTNO from emp e where e.ename='SMITH'); ---多列查询的时候显示办法 --查询与SMITH的部门和岗位完全相同的所有雇员 (多列模式----------------------) select deptno,job from emp where ename='SMITH'; select * from emp where(deptno,job)=(select deptno,job from emp where ename='SMITH'); ------------------------------------------------------------------------------------------------------------------------------------- --在from子句中使用子查询 --如何显示(高于自己部门)平均工资的所有员工的信息 --:逻辑要清晰,分析 --1:首先要查询出各个部门的平均工资信息 select deptno,avg(sal) from emp group by deptno; --2:把上面的信息当做是一张表来处理 --3:指定查询列,只需要修改最里层的子查询就可以了 --4:如何排序,也只需要修改最里层的子查询就可以了 select e.*,avg_sal from emp e,(select deptno,avg(sal) as avg_sal from emp group by deptno)a where e.deptno=a.deptno and e.sal>avg_sal; --创建表 create table myemp as select * from emp; create table myemp1(eno,ename,sal) as select EMPNO,ename,sal from emp; --修改scott的工资,岗位,奖金都和SMITH的工资,岗位,和奖金都一样 update emp set(sal,job,comm)=(select sal,job,comm from emp where ename='SMITH')where ename='SCOTT'; --事务的几个重要操作 --1:设置保存点 savepoint a1 --2:取消部分事务 rollback to a1; --3:取消全部事务 rollback ------------------------------------------------------------------------------------------------------- --Oracle中的字符函数的应用 --1:lower(char):将字符串转化为小写的格式 --2:upper(char):将字符串转化为大写的格式 --3:length(char):返回字符串的长度 --4:substr(char,m,n):取字符串的子串 --要求:以首字母大写的方式显示所有员工的姓名: select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1)) from emp; --要求:以首字母小写的方式显示所有员工的姓名: select lower(substr(ename,1,1))||upper(substr(ename,2,length(ename)-1)) from emp; --在做oracle的函数测试的时候可以使用dual表 select mod(10,3) from dual;