#29 [ORACLE] ์๋ธ์ฟผ๋ฆฌ
๐ ์๋ธ ์ฟผ๋ฆฌ
๐ก ํ๋์ ์ฟผ๋ฆฌ ๋ฌธ์ฅ ๋ด์ ํฌํจ๋ ๋ ํ๋์ ์ฟผ๋ฆฌ ๋ฌธ์ฅ
๐ก ๋น๊ต ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ์ ๊ธฐ์ ํด์ผ ํ๊ณ ๋ฐ๋์ ๊ดํธ ์์ ๋ฃ์ด์ผ ํจ
๐ก ๋ฉ์ธ ์ฟผ๋ฆฌ๊ฐ ์คํ๋๊ธฐ ์ด์ ์ ํ ๋ฒ๋ง ์คํ๋จ
๐ SELECT์ ์๋ธ ์ฟผ๋ฆฌ
SELECT์ ์์ ๋ค์ด์๋ ์๋ธ ์ฟผ๋ฆฌ
: ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋์ ๋จ์ผ ํ์ด๋, SUM, COUNT ๋ฑ์ ์ง๊ณ ํจ์๋ฅผ ๊ฑฐ์น ๋จ์ผ ๊ฐ์ผ๋ก ๋ฆฌํด๋์ด์ผ ํจ
์๋ธ ์ฟผ๋ฆฌ๋ฅผ ๋๋ง์น ๊ฐ ํ๋๋ฅผ ๋ฉ์ธ์ฟผ๋ฆฌ์์ SELECT ํ๊ธฐ ๋๋ฌธ
SELECT ํ์์ด๋ฆ,
( SELECT ํ๊ณผ.ํ๊ณผ์ด๋ฆ
FROM ํ๊ณผ
WHERE ํ๊ณผ.ํ๊ณผID = ํ์.ํ์ID ) AS ํ๊ณผ์ด๋ฆ
FROM ํ์
WHERE ํ์์ด๋ฆ = 'ํ๊ธธ๋' ;
๐ NOTE
๐ก ๋จ์ผํ ์๋ธ์ฟผ๋ฆฌ
: ์๋ธ์ฟผ๋ฆฌ ์ํ ๊ฒฐ๊ณผ๊ฐ ์ค์ง ํ๋์ ROW(ํ)๋ง์ ๋ฐํ
ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ ๋ฉ์ธ ์ฟผ๋ฆฌ๋ ๋น๊ต ์ฐ์ฐ์๋ฅผ ํตํด ์ฟผ๋ฆฌ๋ฅผ ์ํ
๋น๊ต ์ฐ์ฐ์๋ ๋จ์ผํ ๋น๊ต ์ฐ์ฐ์๋ฅผ ์ฌ์ฉ ( >, >=, <, <=, = ,...)
๐ FROM์ ์๋ธ ์ฟผ๋ฆฌ
FROM ์ ์์ ๋ค์ด์๋ ์๋ธ ์ฟผ๋ฆฌ (์ธ๋ผ์ธ ๋ทฐ)
: ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋์ ํ๋์ ํ ์ด๋ธ๋ก ๋ฆฌํด๋์ด์ผ ํจ
์๋ธ ์ฟผ๋ฆฌ๋ฅผ ๋๋ง์น ํ ์ด๋ธ ํ๋๋ฅผ ๋ฉ์ธ ์ฟผ๋ฆฌ์ FROM์์ ํ ์ด๋ธ๋ก ์ก๊ธฐ ๋๋ฌธ
SELECT ํ์์ด๋ฆ, ์ํ์ ์
FROM ( SELECT ํ์.ํ์์ด๋ฆ AS ํ์์ด๋ฆ,
๊ณผ๋ชฉ.๊ณผ๋ชฉ์ ์ AS ์ํ์ ์
FROM ํ์, ๊ณผ๋ชฉ
WHERE ํ์.ํ์์ด๋ฆ = ๊ณผ๋ชฉ.ํ์์ด๋ฆ
AND ๊ณผ๋ชฉ.๊ณผ๋ชฉ์ด๋ฆ = '์ํ' ) ;
๐ WHERE์ ์๋ธ ์ฟผ๋ฆฌ
์ค์ฒฉ์๋ธ ์ฟผ๋ฆฌ๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ WHERE์ ์์ ๋ค์ด์๋ ์๋ธ์ฟผ๋ฆฌ
๊ฐ์ฅ ์์ฃผ ์ฐ์ด๋ ๋์ค์ ์ธ ์๋ธ ์ฟผ๋ฆฌ, ๋จ์ผํ๊ณผ ๋ณต์ํ ๋ ๋ค ๋ฆฌํด ๊ฐ๋ฅ
์๋ธ ์ฟผ๋ฆฌ๋ฅผ ๋๋ง์น ๊ฐ๋ค์ ๋ฉ์ธ์ฟผ๋ฆฌ์ ์กฐ๊ฑด์ ์ ํตํด ๋น๊ต ๋ฑ์ ํ๊ธฐ ๋๋ฌธ
SELECT *
FROM ํ์
WHERE ํ์.ํ์์ด๋ฆ IN ( SELECT ๊ณผ๋ชฉ.ํ์์ด๋ฆ FROM ๊ณผ๋ชฉ WHERE ๊ณผ๋ชฉ.๊ณผ๋ชฉ์ด๋ฆ = '์ํ' ) ;
๐ NOTE
๐ก ๋ณต์ํ ์๋ธ์ฟผ๋ฆฌ
: ์๋ธ ์ฟผ๋ฆฌ์ ์ํ ๊ฒฐ๊ณผ๊ฐ ๋ ๊ฑด ์ด์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ
๋น๊ต ์ฐ์ฐ์๋ ๋ค์คํ ๋น๊ต ์ฐ์ฐ์๋ฅผ ์ฌ์ฉ (IN, ANY, SOME, ALL, EXITS,... )
- IN : ๋ฉ์ธ ์ฟผ๋ฆฌ์ ๋น๊ต์กฐ๊ฑด์ด ์๋ธ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ์ค์ ํ๋๋ผ๋ ์ผ์นํ๋ฉด ์ฐธ
- ALL : ๋ฉ์ธ์ฟผ๋ฆฌ์ ๋น๊ต์กฐ๊ฑด์ด ์๋ธ ์ฟผ๋ฆฌ์ ๊ฒ์ ๊ฒฐ๊ณผ์ ๋ชจ๋ ๊ฐ์ด ์ผ์นํ๋ฉด ์ฐธ
- ANY : ๋ฉ์ธ ์ฟผ๋ฆฌ์ ๋น๊ต์กฐ๊ฑด์ด ์๋ธ ์ฟผ๋ฆฌ์ ๊ฒ์๊ฒฐ๊ณผ์ ํ๋ ์ด์์ด ์ผ์นํ๋ฉด ์ฐธ
- EXITS : ๋ฉ์ธ ์ฟผ๋ฆฌ์ ๋น๊ต์กฐ๊ฑด์ด ์๋ธ ์ฟผ๋ฆฌ์ ๊ฒ์ ๊ฒฐ๊ณผ ์ค์ ํ๋๋ผ๋ ๋ง์กฑํ๋ ๊ฐ์ด ์กด์ฌํ๋ฉด ์ฐธ