多表查询基本语法

//查询表中的记录数

select count(*) from emp;

select e.empno,e.ename,d.deptno,d.dname,d.loc from emp e,dept d where e.deptno=d.deptno;

select e.ename,e.sal,d.dname,s.grade from emp e,dept d,salgrade s where e.deptno=d.deptno and e.sal between s.losal and s.hisal;



select e.ename,e.sal,d.dname,decode(s.grade,1,'第五等工资',2,'第四等工资',3,'第三等工资') from emp e,dept d,salgrade s where e.deptno=d.deptno and e.sal between s.losal and s.hisal;

二,左右连接

//右连接,得到匹配结果后将右侧的结果全部显示出来

select e.empno,e.ename,d.deptno,d.dname,d.loc from emp e,dept d where e.deptno(+)=d.deptno;

//左连接,得到匹配结果后将左侧的结果全部显示出来

select e.empno,e.ename,d.deptno,d.dname,d.loc from emp e,dept d where e.deptno=d.deptno(+);

默认是左连接

三,sql:1999语法

交叉连接:产生笛卡尔积

select * from emp cross join dept;

自然连接:自动进行关联字段的匹配

select * from emp natural join dept;

using子句:直接关联的操作列

select * from emp e join dept d using(deptno) where deptno=30;

on子句:用户自己编写连接的条件

select * from emp e join dept d on(e.deptno=d.deptno) where e.deptno=30;

右外连接:

select * from emp e right outer join dept d on(e.deptno=d.deptno);

左外连接:

select * from emp e left outer join dept d on(e.deptno=d.deptno);

原文地址:https://www.cnblogs.com/jinzhengquan/p/1949465.html