[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)
[ 참고자료 ]
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 |