SQL๋ฌธ์ ISO/ANSI์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ค ์ธ์ด๋ก ์ง์ ๋ ํ SQL-92๋ฅผ ๊ฑฐ์ณ SQL-99 ํ์ค ๋ฌธ๋ฒ์ด ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ค๋ผํด์ SQL-99๋ฐฉ์์ ๋ฌธ๋ฒ์ ์ง์ํฉ๋๋ค.
SQL-99 ๋ฌธ๋ฒ ์ค ์กฐ์ธ์, ์ด์ ํฌ์คํ ์์ ๋ฐฐ์ด ๋ฐฉ์๊ณผ ๊ธฐ๋ฅ์ ๊ฐ์ผ๋ ๋ฌธ๋ฒ์์ ์กฐ๊ธ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
SQL-99 ๋ฌธ๋ฒ์ ๋ค๋ฅธ DBMS ์ ํ์์๋ ์ฌ์ฉํ ์ ์๊ธฐ์ ์์๋๋ฉด ๋์์ด ๋ ๊ฒ์ ๋๋ค.
NATURAL JOIN
๋ฑ๊ฐ ์กฐ์ธ(equi join)์ ๋์ ํด ์ฌ์ฉํ ์ ์๋ ์กฐ์ธ ๋ฐฉ์์ผ๋ก, ์กฐ์ธ ๋์์ด ๋๋ ๋ ํ ์ด๋ธ์ ์ด๋ฆ๊ณผ ์๋ฃํ์ด ๊ฐ์ ์ด์ ์ฐพ์ ํ ๊ทธ ์ด์ ๊ธฐ์ค์ผ๋ก ๋ฑ๊ฐ ์กฐ์ธ์ ํด ์ฃผ๋ ๋ฐฉ์์ ๋๋ค.
SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E>HIREDATE, E.SAL, E.COMM,
DEPTNO, D.DNAME, D.LOC
FROM EMP E NATURAL JOIN DEPT D;
์๋ ์ฌ์ฉ ์์์ธ๋ฐ, EMP ํ ์ด๋ธ๊ณผ DEPT ํ ์ด๋ธ์ ๊ณตํต ์ด DEPTNO๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋ฐ๋ผ์ NATURAL JOIN์ ์ฌ์ฉํ ๋ ์๋์ผ๋ก DEPTNO์ด์ ๊ธฐ์ค์ผ๋ก ๋ฑ๊ฐ ์กฐ์ธ๋ฉ๋๋ค.
๊ธฐ์กด ๋ฑ๊ฐ ์กฐ์ธ๊ณผ ๋ค๋ฅด๊ฒ ์กฐ์ธ ๊ธฐ์ค ์ด์ธ DEPTNO๋ฅผ SELECT์ ์ ๋ช ์ํ ๋ ํ ์ด๋ธ ์ด๋ฆ์ ๋ถ์ด๋ฉด ์ ๋๋ ํน์ฑ์ด ์์ต๋๋ค.
JOIN ~ USING
JOIN ~ USING ํค์๋๋ฅผ ์ฌ์ฉํ ์กฐ์ธ ์ญ์ ๋ฑ๊ฐ ์กฐ์ธ์ ๋์ ํ๋ ์กฐ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
NATURAL JOIN๊ณผ ๋ค๋ฅด๊ฐ USING ํค์๋์ ์กฐ์ธ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉํ ์ด์ ๋ช ์ํ์ฌ ์ฌ์ฉํฉ๋๋ค.
FROM TABLE JOIN TABLE USING (์กฐ์ธ์ ์ฌ์ฉํ ๊ธฐ์ค์ด)
๋ค์์ ์์์ ๋๋ค.
SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM,
DEPTNO, D.DNAME, D.LOC
FROM EMP E JOIN DEPT D USING (DEPTNO)
WHERE SAL >= 3000;
JOIN ON
๊ฐ์ฅ ๋ฒ์ฉ์ฑ ์๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
๊ธฐ์กด WHERE์ ์ ์๋ ์กฐ์ธ ์กฐ๊ฑด์์ ON ํค์๋ ์์ ์์ฑํฉ๋๋ค.
์กฐ์ธ ๊ธฐ์ค ์กฐ๊ฑด์๋ง ON์ ๋ช ์ํ ํ ๊ทธ ๋ฐ์ ์ถ๋ ฅํ์ ๊ฑธ๋ฌ๋ด๊ธฐ ์ํด WHERE ์กฐ๊ฑด์์ ๋ฐ๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋๋ค.
FROM TABLE1 JOIN TABLE2 ON (์กฐ์ธ ์กฐ๊ฑด์)
SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM,
E.DEPTNO,
D.DNAME, D.LOC
FROM EMP E JOIN DEPT D ON (E.DEPTNO = D.DEPTNO)
WHERE SAL >= 3000;
(WHERE์ ์ ๋ชจ๋ ์กฐ๊ฑด์ ๋ช ์ํ๋ ๋ฐฉ๋ฒ๋ ์์ผ๋, ์ฑ๋ฅ์ ON์ ์ ๋ช ์ํ๋ ๊ฒ์ด ๋ ์ข๋ค๊ณ ํฉ๋๋ค.)
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=dlscjf1505&logNo=220863122631
OUTER JOIN
OUTER JOIN์ ์ธ๋ถ ์กฐ์ธ์ ์ฌ์ฉํฉ๋๋ค.
๋ค๋ฅธ SQL-99 ๋ฐฉ์์ ์กฐ์ธ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก WHERE์ ์ด ์๋ FROM์ ์์ ์ธ๋ถ ์กฐ์ธ์ ์ ์ธํฉ๋๋ค
์ผ์ชฝ ์ธ๋ถ ์กฐ์ธ (LEFT OUTER JOIN) |
๊ธฐ์กด | WHERE TABLE1.COL1 = TABLE2.COL1(+) |
SQL-99 | FROM TABLE1 LEFT OUTER JOIN TABLE2 ON (์กฐ์ธ ์กฐ๊ฑด์) | |
์ค๋ฅธ์ชฝ ์ธ๋ถ ์กฐ์ธ (RIGHT OUTER JOIN) |
๊ธฐ์กด | WHERE TABLE1.COL1(+) = TABLE2.COL1 |
SQL-99 | FROM TABLE1 RIGHT OUTER JOIN TABLE2 ON (์กฐ์ธ ์กฐ๊ฑด์) | |
์ ์ฒด ์ธ๋ถ ์กฐ์ธ (FULL OUTER JOIN) |
๊ธฐ์กด | ์์ (UNION ์งํฉ ์ฐ์ฐ์๋ฅผ ํ์ฉํ์ฌ ๊ฐ๋ฅ) |
SQL-99 | FROM TABLE1 FULL OUTER JOIN TABLE2 ON (์กฐ์ธ ์กฐ๊ฑด์) |
๋ค์์ ์์์ ๋๋ค.
LEFT OUTER JOIN ์์
SELECT E1.EMPNO, E1.ENAME, E1.MGR,
E2.EMPNO AS MGR_EMPNO,
E2.ENAME AS MGR_ENAME,
FROM EMP E1 LEFT OUTER JOIN EMP E2 ON (E1.MGR = E2.EMPNO);
RIGHT OUTER JOIN ์์
SELECT E1.EMPNO, E1.ENAME, E1.MGR,
E2.EMPNO AS MGR_EMPNO,
E2.ENAME AS MGR_ENAME,
FROM EMP E1 RIGHT OUTER JOIN EMP E2 ON (E1.MGR = E2.EMPNO);
FULL OUTER JOIN ์์
SELECT E1.EMPNO, E1.ENAME, E1.MGR,
E2.EMPNO AS MGR_EMPNO,
E2.ENAME AS MGR_ENAME,
FROM EMP E1 FULL OUTER JOIN EMP E2 ON (E1.MGR = E2.EMPNO);
SQL-99 ์กฐ์ธ ๋ฐฉ์์์ 3๊ฐ ์ด์์ ํ ์ด๋ธ์ ์กฐ์ธํ ๋
FROM TABLE1 JOIN TABLE ON (์กฐ๊ฑด์)
JOIN TABLE3 ON (์กฐ๊ฑด์)
'๐พ DataBase > Oracle DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Oracle DB] ์กฐ์ธ (1) (0) | 2022.01.26 |
---|---|
[Oracle DB] ์ค๋ผํด ํจ์ (8) - GROUP BY์ , HAVING ์ (0) | 2022.01.25 |
[Oracle DB] ์ค๋ผํด ํจ์ (7) - ๋ค์คํ ํจ์ (SUM, COUNT, MAX, MIN, SUM) (0) | 2022.01.25 |
[Oracle DB] ์ค๋ผํด ํจ์ (6) - ๋จ์ผํ ํจ์ - DECODEํจ์์ CASE๋ฌธ (0) | 2022.01.23 |
[Oracle DB] ์ค๋ผํด ํจ์ (5) - ๋จ์ผํ NULL ์ฒ๋ฆฌ ํจ์ (0) | 2022.01.23 |