SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ๋ช
(or ๋ทฐ)
WHERE ์กฐ๊ฑด์ฐ์ฐ์ (SELECT ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ๋ช
WHERE ์กฐ๊ฑด);
์๋ธ์ฟผ๋ฆฌ๋ ํ๋์ SQL๋ฌธ์ ํฌํจ๋์ด ์๋ ๋ ๋ค๋ฅธ SQL๋ฌธ์ ๋งํ๋ค. ์๋ธ์ฟผ๋ฆฌ ๋ถ๋ถ์ WHERE ์ ์ ์ฐ์ฐ์ ์ค๋ฅธ์ชฝ์ ์์นํด์ผ ํ๋ฉฐ ๋ฐ๋์ ๊ดํธ๋ก ๋ฌถ์ฌ์ผ ํ๋ค. ๋จ์ผํ Sub Query์ ๋ค์คํ Sub Query์ ๋ฐ๋ผ ์ฐ์ฐ์๋ฅผ ์ ์ ํํด์ผ ํ๋ค.
โผ๋จ์ผํ Sub Query
-> student ํ ์ด๋ธ์์ Anthony Hopkins์ ์ ๊ณต์ด ๊ฐ์ ์ฌ๋์ ์ด๋ฆ, ํ๊ณผ, ํ๊ณผ๋ช ์ ์ถ๋ ฅํ๊ธฐ
โผ๋ค์คํ Sub Query / IN
๋ฌธ์ ) Emp2 ํ ์ด๋ธ๊ณผ Dept2 ํ ์ด๋ธ์ ์ฐธ์กฐํ์ฌ ๊ทผ๋ฌด์ง์ญ(dept2 ํ ์ด๋ธ์ area ์ปฌ๋ผ)์ด 'Pohang Main Office' ์ธ ๋ชจ๋ ์ฌ์๋ค์ ์ฌ๋ฒ๊ณผ ์ด๋ฆ, ๋ถ์๋ฒํธ๋ฅผ ์ถ๋ ฅํ๊ธฐ.
์ค๋ฅ ๋ฐ์!
ORA-01427:๋จ์ผ ํ ํ์ ์ง์์ 2๊ฐ ์ด์์ ํ์ด ๋ฆฌํด๋์์ต๋๋ค.
ORA-01427์ ์๋ธ์ฟผ๋ฆฌ์์ 1๊ฑด์ ์ด๊ณผํ ๋ ์ฝ๋๊ฐ ๋์ฌ ๋ ๋ฐ์ํ๋ ์๋ฌ์ด๋ค.
area ์ปฌ๋ผ์ 'Pohang Main Office'์ธ ๊ฒ์ 4๊ฑด์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ด ๋ ์ฟผ๋ฆฌ์ '=' ์ฐ์ฐ์๋ฅผ 'IN'์ ๋ก ์์ ํ๋ฉด ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ ์ฝ๋๊ฐ ๋ชจ๋ ์ถ์ถ๋๋ค.
โผ๋ค์คํ Sub Query / EXISTS
์์ ์ฟผ๋ฆฌ๋ฅผ EXISTS๋ก ์์ ํด๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์ ์ ์๋ค.
IN๊ณผ EXISTS์ ์ฐจ์ด๋ฅผ ์ดํด๋ณด์๋ฉด,
IN์ ์ค์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ค์ ๋ชจ๋ ๊ฐ๊น์ง ํ์ธํ์ง๋ง, EXISTS๋ ํ์ด ์กด์ฌํ๋์ง๋ง ์ฒดํฌํ๊ณ ๋ ์ด์ ์ํ๋์ง ์๋๋ค.
โผ๋ค์คํ Sub Query / ANY
๋น๊ต ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉฐ ํ ๊ฐ๋ผ๋ ๋ง์กฑํ๋ฉด true์ด๋ค.
โผ๋ค์คํ Sub Query / ALL
์ ์ฒด ๊ฐ์ ๋น๊ตํ์ฌ ๋ชจ๋ ๋ง์กฑํด์ผ true์ด๋ค.
โผScalar Sub Query
์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ๋ SELECT์ ์์ ์ฌ์ฉํ๋ ์๋ธ์ฟผ๋ฆฌ๋ค. scalar๋ 'ํ ๋ฒ์ ํ๊ฐ์ง๋ง ์ฒ๋ฆฌํ๋'์ด๋ผ๋ ๋ป์ ๊ฐ์ง๊ณ ์๋ค. ์ฆ, Scalar Sub Query์ ์ํด ๋์ค๋ ๊ฒฐ๊ณผ๋ ํ๋์ ํ์ด์ด์ผ ํ๋ค.
์ด๋ ์ด์ ์ ํ์ตํ๋ JOIN์ผ๋ก๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์กฐํํ ์ ์๋ค.