์ฝ์ง๋จ
์๋ธ์ฟผ๋ฆฌ,๋จ์ผํ ์๋ธ์ฟผ๋ฆฌ ๋ณธ๋ฌธ
๐ก ์๋ธ์ฟผ๋ฆฌ๋? ( ์ค๋ผํด emp ํ ์ด๋ธ ์ฌ์ฉ )
์๋ธ์ฟผ๋ฆฌ๋ SQL๋ฌธ์ ์คํํ๋๋ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ๋ก ์กฐํํ๊ธฐ ์ํด SQL๋ฌธ ๋ด๋ถ์์ ์ฌ์ฉํ๋ SELECT๋ฌธ์ ์๋ฏธํ๋ค. ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ ๊ฐ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ์ ์ํํ๋ ์์ญ์ ๋ฉ์ธ์ฟผ๋ฆฌ(main query)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
โ
ex) ์๋ธ์ฟผ๋ฆฌ๋ก JONES์ ๊ธ์ฌ๋ณด๋ค ๋์ ๊ธ์ด๋ฅด ๋ฐ๋ ์ฌ์์ ๋ณด ์ถ๋ ฅํ๊ธฐ
โ
SELECT *
FROM EMP
WHERE SAL > (SELECT SAL
FROM EMP
WHERE ENAME = 'JONES');
โ
โ
SELECT SAL FROM EMPWHERE ENAME = 'JONES'; ์๋ธ์ฟผ๋ฆฌ
SELECT * FROM EMP WHERE SAL > :๋ฉ์ธ์ฟผ๋ฆฌ
โ
โ
๐ก์๋ธ์ฟผ๋ฆฌ ํน์ง
โ์๋ธ์ฟผ๋ฆฌ๋ ์ฐ์ฐ์์ ๊ฐ์ ๋น๊ต ๋๋ ์กฐํ ๋์์ ์ผ๋ก ์ชฝ์ ๋์ด๋ฉฐ ๊ดํธ ()๋ก ๋ฌถ์ด์ ์ฌ์ฉํ๋ค.
โํน์ํ ๋ช๋ช ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ ๋๋ถ๋ถ์ ์๋ธ์ฟผ๋ฆฌ๋ ORDER BY ์ ์ ์ฌ์ฉํ ์ ์๋ค.
โ์๋ธ์ฟผ๋ฆฌ์ SELECT์ ์ ๋ช ์ํ ์ด์ ๋ฉ์ธ์ฟผ๋ฆฌ์ ๋น๊ต ๋์๊ณผ ๊ฐ์ ์๋ฃํ๊ณผ ๊ฐ์ ๊ฐ์๋ก ์ง์ ํด์ผ ํฉ๋๋ค. ์ฆ, ๋ฉ์ธ์ฟผ๋ฆฌ์ ๋น๊ต ๋์ ๋ฐ์ดํฐ๊ฐ ํ๋๋ผ๋ฉด ์๋ธ์ฟผ๋ฆฌ SELECT์ ์ญ์ ๊ฐ์ ์๋ฃํ์ธ ์ด์ ํ๋ ์ง์ ํด์ผ ํ๋ค.
โ์๋ธ์ฟผ๋ฆฌ์ ์๋ SELECT๋ฌธ์ ๊ฒฐ๊ณผ ํ ํจ๊ป ์ฌ์ฉํ๋ ๋ฉ์ธ์ฟผ๋ฆฌ์ ์ฐ์ฐ์ ์ข ๋ฅ์ ํธํ ๊ฐ๋ฅํด์ผํ๋ค. ์๋ฅผ๋ค์ด ๋ฉ์ธ์ฟผ๋ฆฌ์ ์ฌ์ฉํ ์ฐ์ฐ์๊ฐ ๋จ ํ๋์ ๋ฐ์ดํฐ๋ก๋ง ์ฐ์ฐ์ด ๊ฐ๋ฅํ ์ฐ์ฐ์๋ผ๋ฉด ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ ํ ์๋ ๋ฐ๋์ ํ๋์ฌ์ผ ํ๋ค.
โ
โ
ex)EMP ํ ์ด๋ธ์ ์ฌ์ ์ ๋ณด ์ค์์ ์ฌ์ ์ด๋ฆ์ด ALLEN์ธ ์ฌ์์ ์ถ๊ฐ ์๋น๋ณด๋ค ๋ง์ ์ถ๊ฐ ์๋น์ ๋ฐ๋ ์ฌ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํด๋ผ.
โ
SELECT *
FROM EMP
WHERE COMM > (SELECT COMM
FROM EMP
WHERE ENAME = 'ALLEN');
โ
โ
โ
๐ก์คํ ๊ฒฐ๊ณผ๊ฐ ํ๋์ธ ๋จ์ผํ ์๋ธ์ฟผ๋ฆฌ
๋จ์ผํ ์๋ธ์ฟผ๋ฆฌ(single-row subquery)๋ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋จ ํ๋์ ํ์ผ๋ก ๋์ค๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ๋ปํจ.
โ ์ฐ์ฐ์ ์ข ๋ฅ : > ์ด๊ณผ , >= ์ด์ , = ๊ฐ์ , <= ์ดํ ,< ๋ฏธ๋ง, <> or ^= or != ๊ฐ์ง์์
โ ์์์ ์ดํด๋ณธ JONES์ ๊ธ์ฌ๋ณด๋ค ๋์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ฌ์ ๋ชฉ๋ก์ ๊ตฌํ๊ธฐ ์ํด ์ฌ์ฉํ ์๋ธ์ฟผ๋ฆฌ์ญ์ ๋จ์ผํ ์๋ธ์ฟผ๋ฆฌ๋ผ๊ณ ํ ์ ์๋ค. ํ์ง๋ง JONES๋ผ๋ ์ด๋ฆ์ผ๋ก ๋จ์ผํ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋์ค์ ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค.
โ
WHY?
์ฌ๋ ์ด๋ฆ์ ๊ฐ์ ์ด๋ฆ์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ๊ฐ ๊ฐ์ง์๋ ์๊ธฐ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์๋ ์๋ค., ์ด์ ๊ฐ์ด ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ก ์ฌ๋ฌ ํ์ ๋ฐํํ ๋์๋ ๋ค์คํ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
โ
ex)EMP ํ ์ด๋ธ์์ SCOTT๋ณด๋ค ๋นจ๋ฆฌ ์ ์ฌํ ์ฌ์ ๋ชฉ๋ก์ ์กฐํ ํด๋ณด๊ธฐ
โ
SELECT
FROM EMP
WHERE HIREDATE < (SELECT HIREDATE
FROM EMP
WHERE ENAME = 'SCOTT');
โ
โ
ex)20๋ฒ ๋ถ์์ ์ํ ์ฌ์ ์ค ์ ์ฒด ์ฌ์์ ํ๊ท ๊ธ์ฌ๋ณด๋ค ๋์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ฌ์ ์ ๋ณด์ ์์ ๋ถ์ ์ ๋ณด๋ฅผ ํจ๊ป ์กฐํํด๋ณด๊ธฐ.
โ
(์๋ธ์ฟผ๋ฆฌ ์์์ ํจ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ)
โ
SELECT E.EMPNO, E.JOB, E.SAL , D.DEPTNO,D.DNAME,D.LOC
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND E.DEPTNO = 20
AND E.SAL > (SELECT AVG(SAL)
FROM EMP);
'Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํธ๋์ญ์ (0) | 2021.12.12 |
---|---|
๋ค์คํ ์๋ธ์ฟผ๋ฆฌ (0) | 2021.12.12 |
์๋ธ์ฟผ๋ฆฌ ON, WHERE ์ฐจ์ด์ (0) | 2021.12.12 |
์๋ธ์ฟผ๋ฆฌ ๋? (0) | 2021.12.12 |
์ค๋ผํด ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ฐ๊ณต ํจ์๋ชจ์ (0) | 2021.12.12 |