内连接
等值连接:
查询emp表,dept表中雇员的编号、姓名、工作、部门名称。
select empno,ename,job,dname,loc from emp e,dept d where e.deptno=d.deptno;
select empno,ename,job,dname,loc from emp e inner join dept d on e.deptno=d.deptno;
不等值连接:(注意)
根据salgrade表中最低工资和最高工资,查询emp表员工的工资级别。
select e.empno,e.ename,e.sal,sg.grade from salgrade sg,emp e where e.sal between sg.losal and sg.hisal;
自然连接:
natural join 省略了where语句,自动进行等值匹配。
select emp.empno,emp.ename,emp.sal,dept.loc from emp natural join dept;
外连接
在等值查询时,当两个值相等时,可以查询到记录,如果不相等,则就不能查询,此时就用到了外连接的支持。
左连接:
以左侧(emp)为准,左侧的数据必须都显示出来,右侧(dept)数据补充进去,如果有就补充,没有就显示为空。
select ename,dname from emp e,dept d where e.deptno=d.deptno(+);
select ename,dname from emp e left join dept d on e.deptno=d.deptno;
右连接:
以右侧(dept)为准,右侧的数据必须都显示出来,左侧(emp)数据补充进去,如果有就补充,没有就显示为空。
select ename,dname from emp e,dept d where e.deptno(+)=d.deptno;
select ename,dname from emp e right join dept d on e.deptno=d.deptno;
全连接:
select ename,dname from memp e full join mdept d on e.deptno=d.deptno;
自连接:
select e.ename 领导,l.ename 员工 from emp e,emp l where e.empno=l.mgr;