라일락 꽃이 피는 날

[Oracle] 조인 - ANSI 조인 본문

프로그래밍/Oracle

[Oracle] 조인 - ANSI 조인

eunki 2022. 6. 1. 22:53
728x90

1999 ANSI 조인 문법 (America National Standard Institute 미국 독립 표준 협회)

  • on 절을 사용한 조인
  • using 절을 사용한 조인
  • natural 조인
  • left/right/full outer 조인
  • cross 조인

하둡, 스파크에서 수행하는 SQL들은 ANSI 문법으로 조인 문법을 작성해야 에러가 안 나고 수행되는 경우가 많다.

 

 

 

 

예제 1. DALLAS 에서 근무하는 사원들의 이름과 부서 위치를 출력

select e.ename, d.loc
    from emp e join dept d
    on (e.deptno = d.deptno)
    where d.loc = 'DALLAS';

 

 

 

예제 2. 사원 이름, 월급, 부서 위치, 급여 등급(grade)을 출력

select e.ename, e.sal, d.loc, s.grade
    from emp e join dept d
                    on (e.deptno = d.deptno)
               join salgrade s
                    on (e.sal between s.losal and s.hisal);

 

 

 

예제 3. CHICAGO 에서 근무하는 사원들의 이름, 월급, 직업, 부서 위치를 출력

select e.ename, e.sal, e.job, d.loc
    from emp e join dept d
    using (deptno)
    where d.loc = 'CHICAGO';

using 절에 e.deptno 또는 d.deptno 라고 하면 안 되고, 테이블 별칭 없이 deptno 만 써야 한다.

 

 

 

예제 4. 이름과 부서 위치를 출력

select e.ename, d.loc
    from emp e natural join dept d;

natural join 을 사용하려면 조인하려는 두 테이블 사이에 연결 고리가 되는 같은 컬럼이 양쪽 테이블에 존재해야 한다.

공통된 컬럼이 없으면 조인을 제대로 하지 못한다.

 

 

 

예제 5. 이름과 부서 위치를 출력하는데, BOSTON이 출력되게 해서 BOSTON에는 사원이 없다는 것을 확인

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

오른쪽에 마치 아웃사이더처럼 하나 더 나와서 오른쪽(right) 아우터 조인을 사용한다.

 

 

 

예제 6. 이름이 jack 이거나 부서 위치가 BOSTON 인 사원들의 이름과 부서 위치를 출력

select e.ename, d.loc
    from emp e full outer join dept d
    on (e.deptno = d.deptno)
    where e.ename = 'jack' or d.loc = 'BOSTON'
728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

[Oracle] 단일행/다중행 서브 쿼리  (0) 2022.06.02
[Oracle] 집합 연산자  (0) 2022.06.02
[Oracle] 테이블 정의서  (0) 2022.06.01
[Oracle] 조인 - 오라클 조인  (0) 2022.06.01
[Oracle] 출력되는 행 제한  (0) 2022.05.31