제5장 다표는 교실 노트와 연습을 연결한다

– 다중 테이블 연결
                  ,    
    ,             

-oracle 자체 쓰기: 등치 연결, 비등치 연결, 외부 연결, 자체 연결
  • 피리칼 적: 연결 조건이 생략되거나 연결 조건이 무효
       select * from emp,dept;--       :emp  *dept  
    
  • 등치 연결: 여러 테이블에 공통된 열이 있음 주의: n장 테이블 연결은 n-1개의 연결 조건이 있어야 하며, 그렇지 않으면 피리칼 적
    select emp.*,dept.*
      from emp,dept 
     where emp.deptno = dept.deptno;
    
    select empno,ename,dept.deptno,loc
      from emp,dept 
     where emp.deptno = dept.deptno;
     --         ,        
    
    --        
                            ;
                     ;
                                 ;
    
     ----  and            
    select empno,ename,dept.deptno,loc
      from emp,dept 
     where emp.deptno = dept.deptno and loc = 'NEW YORK';
    
  • 이 발생해야 함
  • 비등치 연결: 다중 테이블 사이에 공통열이 없음
        select e.ename, e.sal, s.grade 
          from emp e,salgrade s
         where e.sal between s.losal and s.hisal;
    
  • 다중 테이블 연결 쓰기
         1.              ,  FROM  ;
    
         2.            ,           
          ,            ,    FROM   
               ;
    
         3.    WHERE             ,  N 
         ,    N-1     ;
    
         4.            ,   WHERE      
            ,      ;
    
         5.           ,  SELECT  。
    
         6.         ,              
        ,      2           ,      
              ;
    
  • 외부 연결 주의: (+)는 만능행을 표시하고 어느 쪽에 놓으면 차표이고 다른 한 쪽은 주표
    --          ,    ,    ,               
        SELECT e.ename, d.deptno, d.dname
          FROM emp e, dept d
         WHERE e.deptno(+) = d.deptno
         ORDER BY e.deptno;
    
    --          ,    ,    ,                    
        SELECT e.ename, d.deptno, d.dname
          FROM emp e, dept d
         WHERE e.deptno = d.deptno(+)
         ORDER BY e.deptno;
    
  • 자체 연결 - 별명을 사용하여 자체 연결
     --                  
        select e.ename,
               mgr.ename
          from emp e,emp mgr
         where e.mgr = mgr.empno;
    
    - SQL:1999 구문의 연결
  • 교차 연결: (표명crossjoin표명) 피리칼 적
      select * from emp cross join dept;
    
  • 자연 연결: (표명 natural join 표명) 열 이름이 같고 데이터 형식이 같은 열과 자동으로 일치하는 열은 한 번만 표시되며 기본적으로 첫 번째 열
      select * from emp natural join dept;
    
  • 에 표시됩니다.
  • using 자문 (표명join표명using(열명 조건)): 일렬 연결 주의 지정: 1.열 이름은 테이블 이름이나 테이블 별칭 수식을 허용하지 않습니다.natural join 자구와 using 자구는 서로 배척되어 동시에 사용할 수 없습니다.3. 몇 개의 열 이름이 같지만 데이터 형식이 다르면 자연연결 서브문장은 USING 서브문장으로 대체하여 같은 값의 연결이 발생하는 열을 지정할 수 있다.4. 하나 이상의 열이 일치하는 경우 USING 자구를 사용하여 열 중 하나만 지정할 수 있습니다.
      select * from emp join dept using(deptno);
    
  • on 자문(표명join표명on(연결조건)1.자연 연결 조건은 기본적으로 같은 열명을 가진 표 간의 등치 연결이다.2. 임의의 연결 조건을 지정하거나 연결할 열을 지정하려면 ON자구를 사용할 수 있다.3. ON으로 연결 조건과 다른 검색 조건을 분리하고 다른 검색 조건은 WHERE 자문에 쓴다.
      select * from emp join dept on(emp.deptno = dept.deptno);
    
  • 왼쪽 외부 연결(left outer join) 왼쪽 테이블을 위주로 하고 오른쪽 테이블에 만능 줄(+)을 추가합니다. - 왼쪽 외부 연결은 FROM 자구의 왼쪽 테이블을 기본 테이블로 합니다. 이 테이블의 모든 줄 데이터는 연결 조건에 따라 오른쪽 테이블과 일치하는지 여부에 관계없이 표시됩니다
       select * from emp 
           left outer join dept on(emp.deptno = dept.deptno);
    
  • 오른쪽 외부 연결(right outer join) 오른쪽 테이블을 주요 테이블로 하고 왼쪽 테이블에 만능 줄(+)을 추가합니다. - 오른쪽 외부 연결은 FROM 자구의 오른쪽 테이블을 기본 테이블로 하고 이 테이블의 모든 줄 데이터는 연결 조건에 따라 왼쪽 테이블과 일치하는지 여부에 관계없이 표시됩니다
      select * from emp 
          right outer join dept on(emp.deptno = dept.deptno);
    
  • 전외 연결(full outer join) 두 테이블 모두 만능 줄 추가(+) - 전외 연결은 두 테이블의 등치 연결 결과를 되돌려주고 두 테이블의 모든 등치 연결 실패 기록
      select * from emp 
          full outer join dept on(emp.deptno = dept.deptno);
    
  • 좋은 웹페이지 즐겨찾기