[08단원] 조인(JOIN)

2021. 9. 13. 19:47
728x90

 

교재명 : Do it! 오라클로 배우는 데이터베이스 입문 (이지스퍼블리싱 / 이지훈 지음)

 

[ Q1 ]

[ A1 ]

-- SQL-99 이전 방식
SELECT D.DEPTNO, D.DNAME, E.EMPNO, E.ENAME, E.SAL
  FROM EMP E, DEPT D
 WHERE E.DEPTNO = D.DEPTNO
   AND E.SAL > 2000;

-- SQL-99방식
SELECT DEPTNO, D.DNAME, E.EMPNO, E.ENAME, E.SAL
  FROM EMP E NATURAL JOIN DEPT D
 WHERE E.SAL > 2000;

[ Q2 ]

[ A2 ]

--SQL-99 이전 방식
SELECT D.DEPTNO,
       D.DNAME,
       TRUNC(AVG(SAL)) AS AVG_SAL,
       MAX(SAL) AS MAX_SAL,
       MIN(SAL) AS MIN_SAL,
       COUNT(*) AS CNT
  FROM EMP E, DEPT D
 WHERE E.DEPTNO = D.DEPTNO
 GROUP BY D.DEPTNO, D.DNAME;

--SQL-99 방식
SELECT DEPTNO,
       D.DNAME,
       TRUNC(AVG(SAL)) AS AVG_SAL,
       MAX(SAL) AS MAX_SAL,
       MIN(SAL) AS MIN_SAL,
       COUNT(*) AS CNT
  FROM EMP E JOIN DEPT D USING (DEPTNO)
 GROUP BY DEPTNO, D.DNAME;

[ Q3 ]

[ A3 ]

--SQL-99 이전 방식
SELECT D.DEPTNO, D.DNAME, E.EMPNO, E.ENAME, E.JOB, E.SAL
  FROM EMP E, DEPT D
 WHERE E.DEPTNO(+) = D.DEPTNO
 ORDER BY D.DEPTNO, E.ENAME;

--SQL-99 방식
SELECT D.DEPTNO, D.DNAME, E.EMPNO, E.ENAME, E.JOB, E.SAL
  FROM EMP E RIGHT OUTER JOIN DEPT D ON (E.DEPTNO = D.DEPTNO)
 ORDER BY D.DEPTNO, E.ENAME;

 

 

[ SQL-99 표준 문법 ]

1. Natural Join (등가 조인)

SELECT ...
  FROM EMP E NATURAL JOIN DEPT D

2. Join ~ using (등가 조인)

SELECT ...
  FROM EMP E JOIN DEPT D USING (DEPTNO)

3. Join ~ on***

SELECT ...
  FROM EMP E JOIN DEPT D ON (E.DEPTNO = D.DEPTNO)

4. Outer Join (외부 조인)

i) Left outer join : 왼쪽 열을 기준으로 오른쪽 열의 데이터 존재 여부 상관없이 출력 (null이어도 출력)

SELECT ...
  FROM EMP E LEFT OUTER JOIN DEPT D ON (E.DEPTNO = D.DEPTNO)

ii) Right outer join : 오른쪽 열을 기준으로 왼쪽 열의 데이터 존재 여부 상관없이 출력 (null이어도 출력)

SELECT ...
  FROM EMP E RIGHT OUTER JOIN DEPT D ON (E.DEPTNO = D.DEPTNO)

 

 [ 참고자료 ] 

 

GitHub - GroovySunday/doit-oracle: 2018.10.30 [이지스퍼블리싱]에서 출간된 [Do it! 오라클로 배우는 데이터

2018.10.30 [이지스퍼블리싱]에서 출간된 [Do it! 오라클로 배우는 데이터베이스 입문] 본문 내 소스코드입니다. Oracle 11g Enterprise Edition 기준으로 작성되었습니다. - GitHub - GroovySunday/doit-oracle: 2018.10.30

github.com

 

728x90

'SQL > Oracle SQL' 카테고리의 다른 글

[09단원] 서브쿼리  (0) 2021.09.13
[07단원] 다중행 함수와 데이터 그룹화  (0) 2021.09.11
[06단원] 데이터 처리와 가공  (0) 2021.08.30
[05단원] Where절과 연산자  (0) 2021.08.30

BELATED ARTICLES

more