本文共 2752 字,大约阅读时间需要 9 分钟。
1.多表连接基本查询
使用一张以上的表做查询就是多表查询 语法:SELECT { DISTINCT} *|列名... FROM 表明 别名, 表名1 别名 { WHERE 限制条件 ORDER BY 排序字段 ASC|DESC...}
示例:查询员工表和部门表
select * from emp,dept;
select * from emp,dept where emp.deptno = dept.deptno;
关联之后我们发线数据条数是14条,不再是56条。
select * from emp e, dept d where e.deptno = d.deptno;
示例:查询出雇员的编号,姓名,部门的编号和名称,地址
select e.empno, e.ename, d.deptno, d.dname, d.locfrom emp e, dept dwhere e.deptno = d.deptno;
select e.empno, e.ename, e2.empno,e2.enamefrom emp e, emp e2where e.mgr = e2.empno;
select e.empno, e.ename, e1.empno, e1.ename, d.dnamefrom emp e, emp e1, dept dwhere e.mgr = e1.empno and e.deptno=d.deptno;
select e.empno,e.ename, decode(s.grade, 1,'一级', 2,'二级', 3,'三级', 4,'四级', 5,'五级') grade, d.dname,e1.empno, e1.ename, decode(s1.grade, 1,'一级', 2,'二级', 3,'三级', 4,'四级', 5,'五级')gradefrom emp e, emp e1, dept d, salgrade s, salgrade s1where e.mgr = e1.empno and e.deptno = d.deptnoand e.sal between s.losal and s.hisaland e1.sal between s1.losal and s1.hisal;
select e.empno, e.ename, d.deptno, d.dnamefrom emp e, dept dwhere e.deptno(+) = d.deptno;
使用(+)表示左连接或者右连接。
示例:查询出所有员工的上级领导
分析:我们使用以前的做法发现KING的没有上级领导,需要使用外连接把他查询出来select e.empno, e.ename, m.empno, m.enamefrom emp e, emp mwhere e.mgr = m.empno(+);
select e.deptno, e.ename, m.deptno, m.enamefrom emp e left join emp mon e.mgr = m.empno;
层次化查询,即树型结构查询,是SQL中经常用到的功能之一,通常由根节点,父节点,子节点,叶节点组成,其语法如下:
SELECT [LEVEL] ,column,expression,... FROM table_name [WHERE where_clause] [[START WITH start_condition] [CONNECT BY PRIOR prior_condition]];
示例:查询所有员工的上级领导
分析:select level, empno, ename, mgrfrom empstart with mgr is nullconnect by prior empno = mgrorder by 1;
转载地址:http://rjsqb.baihongyu.com/