oracle查询

  1. minus是获取第一张表独有的数据

    intersect是获取两张表中都有的数据

    union是整合两张表的数据,都有的只显示一次

    union all是纯粹的两张表数据整合

  2. 多表查询
    1. from a,b  返回所有满足where条件的行
      select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
        from scott.emp a, scott.dept b
       where a.deptno = b.deptno; 

      2.left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录  

        select * from A left join B  on A.aID = B.bID

        left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
        换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
        B表记录不足的地方均为NULL.

      3.right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

        select * from A right join B on A.aID = B.bID

        和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.

      4.inner join(等值连接) 只返回两个表中联结字段相等的行      

        select * from A inner join B  on A.aID = B.bID

        只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.

       5.full join  全连接 意思是左右表所有的记录全部显示出来

        select e.empno,e.ename,e.job,d.deptno,d.dname from emp e fulljoin dept d on e.deptno=d.deptno orderby e.empno;

               这条SQL语句采用全连接,查询出左表和右表所有的值出来

      6.+在左边 为右连接

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

        

      7.+在右边 为左连接

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

        

 

posted @ 2018-04-19 17:32  mmmmrelax  阅读(85)  评论(0)    收藏  举报