查工资等级:

--工资等级
SELECT 
e.empno,e.ename,e.sal,s.grade
FROM emp e,salgrade s
WHERE e.sal BETWEEN S.LOSAL AND S.HISAL;

 

查工资等级,并用中文表示:

--将等级替换成中文
SELECT 
e.empno,e.ename,e.sal,s.grade,
decode(s.grade,1,'E等工资',2,'D等工资',3,'C等工资',4,'B等工资',5,'A等工资')
FROM emp e,salgrade s
WHERE e.sal BETWEEN S.LOSAL AND S.HISAL;

 

三张表的查询:

--三张表的查询
SELECT e.empno,e.ename,e.job,e.sal, s.grade,
decode(s.grade,1,'E等工资',2,'D等工资',3,'C等工资',4,'B等工资',5,'A等工资')
FROM emp e,dept d,salgrade s
WHERE e.deptno=d.deptno AND  e.sal BETWEEN S.LOSAL AND S.HISAL

 

左连接、右链接的查询:

--使用内连接只有满足连接条件的数据才会全部显示,可是如果说现在emp或者dept显示完整,那么可以利用外链接进行
--显示部门40
SELECT 
*
FROM emp e,dept d
WHERE e.deptno=d.deptno(+)

SELECT 
*
FROM emp e,dept d
WHERE e.deptno(+)=d.deptno

 

自身查询:

--自身关联
--在emp表存在mgr字段,表示雇员的领导
--查询出对应领导信息,
SELECT *
FROM emp e, emp m 
WHERE  e.mgr=m.empno(+)

 

 

复杂的查询方法:

--查询在1981年雇佣的全部雇员的编号、姓名、雇佣日期、工作,领导、月工资、年工资、工资等级、部门编号、名称、位置,同时要求这些雇员的月工资在1500-3500之间,最后的结果按照年工资进行排列,工资相同,按照工作排序
       --确定所需要的表
         --emp:编号、姓名、雇佣日期、工作、月工资、计算年工资
         --emp:领导姓名
         --salgrade:工资等级
       --确定已知的关联字段
         --雇员和领导:emp.mgr=emp.empno
         --雇员和部门:emp.deptno=dept.deptno
         --雇员和工资等级:emp.sal between salgrade.losal and salgrade.hisal
 步骤一:查询出所有1981年雇佣的雇员编号、姓名、雇佣日期、工作、月工资、年工资
 
 SELECT 
 e.empno,e.ename,e.hiredate,e.sal,         (e.sal+NVL(e.comm,0))*12 income,m.ename,
 s.grade,
 decode(s.grade,1,'E等工资',2,'D等工资',3,'C等工资',4,'B等工资',5,'A等工资')
 FROM emp e,                                      emp m,salgrade s,dept d
 WHERE TO_CHAR(e.hiredate,'YYYY')='1981' AND e.sal BETWEEN 1500 AND 3500 
       AND e.mgr=m.empno(+) AND e.deptno=d.deptno
       AND e.sal BETWEEN s.losal AND s.hisal 
       ORDER BY income DESC ,e.job

 

 

还有其他的全连接及其他子句连接方法:

--还差全外链接
 --SQL:1999语法
 --交叉连接
 --主要功能,产生笛卡儿积,产生56行,emp的14*dept4
 SELECT *
 FROM emp CROSS JOIN dept 

--内链接的方式
 SELECT *
 FROM emp NATURAL JOIN dept 
 
 --USING子句
  SELECT *
 FROM emp JOIN dept USING(deptno) 
 
 --ON子句
 SELECT *
 FROM emp e JOIN salgrade s ON (e.sal BETWEEN s.losal AND s.hisal)
 
 --全外链接只能依靠sql1999语法的
--右外连接
SELECT * FROM emp RIGHT OUTER JOIN dept USING(deptno) 


--全外链接只能够sql1999语法 实现,但是对于这种全外链接,使用的情况不多 --个人建议,如果使用的是oracle,就用外链接(+) SELECT * FROM emp e FULL OUTER JOIN dept d ON (e.deptno=d.deptno)