SQL_Ansi Join
Ansi Join
Ansi SQL
전세계 표준 SQL
Oracle 뿐만 아니라 다른 DB에서도 사용할 수 있는 SQL
Ansi Inner Join
§ 형식
[ SQL> select 필드명1, 필드명2,,,,
from 테이블명1 inner join 테이블명2
on 테이블명1.필드명 = 테이블명2.필드명; ]
※ inner는 생략가능하며, join만 써도 inner join으로 기능
※ join하는 필드명이 같을 경우
형식) using(공통 필드명)
※ 테이블에 별칭을 줄 수 있음
# 예제
▷ emp테이블에서 사원번호, 이름 출력
dept테이블에서 부서이름 출력
emp테이블의 사원번호와 dept테이블의 사원번호가 같은 데이터만 조회
▶ { on절 }
[ SQL> select empno, ename, dname
from emp e inner join dept d // emp, dept
on e.deptno=d.deptno; ] // where emp.deptno=dept.deptno
▶ { using절 }
[ SQL> select empno, ename, dname from emp inner join dept using(deptno); ]
EMPNO | ENAME | DNAME |
---|---|---|
7369 | SMITH | RESEARCH |
7499 | ALLEN | SALES |
7521 | WARD | SALES |
... | ... | ... |
Ansi Outer Join
종류 | 설명 |
---|---|
Left Outer Join | 조회하려는 레코드양이 왼쪽 테이블에 더 많을 때 사용 |
Right Outer Join | 조회하려는 레코드양이 오른쪽 테이블에 더 많을 때 사용 |
Full Outer Join | 위의 두 Outer Join을 합친 형태라고 할 수 있음 |
§ 형식
[ SQL> select 필드명1, 필드명2,,,
from 테이블명1 별칭1 left / right outer join 테이블명2 별칭2
on 테이블명1.필드명=테이블명2.필드명; ]
※ Ansi Outer Join은 데이터를 더 조회하려는 테이블 쪽에
left / right 를 명시해야 하고 (+)를 쓰지 않음
# 예제
▷ emp, dept 테이블을 Join해서 ename, job, deptno, dname 출력
단, dept테이블의 40번부서까지 다 출력이 되도록 작성
▶ [ SQL> select e.ename, e.job, d.deptno, d.dname
from emp e right outer join dept d
on e.deptno=d.deptno; ]
ENAME | JOB | DEPTNO | DNAME |
---|---|---|---|
SMITH | CLERK | 20 | RESEARCH |
ALLEN | SALESMAN | 30 | SALES |
... | ... | ... | ... |
40 | OPERATIONS |
표준 SQL인 Ansi의 Inner Join과 Outer Join에 대해 알아보았습니다.
Ansi는 국제표준이기 오라클에서는 물론이고 다른 SQL 툴에서도 사용할 수 있습니다.