DataBase๐Ÿ’พ

EXISTS, NOT EXISTS ๋ž€?

hae02y 2022. 8. 24. 14:15
๋ฐ˜์‘ํ˜•

์˜ค๋ผํด์—์„œ EXISTS( ) ํ•จ์ˆ˜๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋ฉด ์กฐ๊ธˆ ์–ด๋ ค์›€ ๋Š๋‚Œ์ด ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค. EXISTS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋น„์Šทํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์—, EXISTS์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์ตํžˆ์ง€ ์•Š๊ณ  ๋„˜์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

EXISTS(์„œ๋ธŒ ์ฟผ๋ฆฌ)๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ “ํ•œ ๊ฑด์ด๋ผ๋„ ์กด์žฌํ•˜๋ฉด” TRUE ์—†์œผ๋ฉด FALSE๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

EXISTS๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ์— ์ผ์น˜ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ํ•œ ๊ฑด์ด๋ผ๋„ ์žˆ์œผ๋ฉด ์ฟผ๋ฆฌ๋ฅผ ๋” ์ด์ƒ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์•„๋ž˜์˜ ์ƒ˜ํ”Œ ํ…Œ์ด๋ธ”์„ ์ฐธ๊ณ ํ•˜์—ฌ ์˜ˆ์ œ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 
1
2
3
4
5
6
7
8
SELECT a.empno
     , a.ename
     , a.deptno
  FROM emp a
 WHERE a.job = 'MANAGER'
   AND EXISTS (SELECT 1
                 FROM dept_history aa
                WHERE aa.empno = a.empno)

์˜ˆ์ œ์ฟผ๋ฆฌ(ํ…Œ์ด๋ธ”ํฌํ•จ).txt

EXISTS, NOT EXISTS ์‚ฌ์šฉ๋ฒ•

 

– dept_history ํ…Œ์ด๋ธ”์— JONES 2๊ฑด, CLARK 1๊ฑด, BLAKE 0๊ฑด์œผ๋กœ BLAKE๋Š” ์ œ์™ธํ•˜๊ณ  ์กฐํšŒ๋œ๋‹ค.

– ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ dept_history ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ ํ•œ ๊ฑด์ด๋ผ๋„ ์กด์žฌํ•ด์•ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ ๋œ๋‹ค.

 [ SELECT 1 ] SELECT ์ ˆ์— ์ปฌ๋Ÿผ์€ ๋ถˆํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ์—†๋Š” 1์„ ๊ธฐ์ž… ํ•˜์˜€๋‹ค.

 

– dept_history ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” BLAKE๋งŒ ์กฐํšŒ๋œ๋‹ค.

CASE ๋ฌธ์—์„œ ์‚ฌ์šฉ๋ฒ•

 

– EXISTS๋Š” TRUE, FALSE๋ฅผ ๋ฆฌํ„ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— If๋ฌธ๊ณผ ๋น„์Šทํ•œ CASE๋ฌธ์˜ ์กฐ๊ฑด์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

– CASE๋ฌธ์—์„œ EXISTS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฟผ๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ถŒ์žฅํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.

IN๊ณผ EXISTS ๋น„๊ต

 

– ์œ„์˜ ์ฟผ๋ฆฌ๋ฅผ ๋น„๊ตํ•ด ๋ณด๋ฉด IN๊ณผ EXISTS๋Š” ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์กฐํšŒ๋œ๋‹ค.

– IN์€ ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•˜๊ณ , EXISTS๋Š” ์ผ์น˜ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์œผ๋ฉด ๋” ์ด์ƒ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.

– ์„œ๋ธŒ ์ฟผ๋ฆฌ ํ…Œ์ด๋ธ”(dept_history)์— ๋ฐ์ดํ„ฐ๋Ÿ‰์ด ๋งŽ์œผ๋ฉด EXISTS๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์„ฑ๋Šฅ์ด ์ข‹๋‹ค.

JOIN๊ณผ EXISTS ๋น„๊ต

 

– EXISTS์˜ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ๋ฉ”์ธ ์ฟผ๋ฆฌ JOIN์œผ๋กœ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ ์œ„์™€ ๊ฐ™์ด ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

– JOIN์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์„ฑ๋Šฅ์ƒ ์ข‹์„ ์ˆ˜ ์žˆ์œผ๋‚˜ ๋ฉ”์ธ ์ฟผ๋ฆฌ์™€ ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ 1:1์ผ ๊ฒฝ์šฐ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฐ˜์‘ํ˜•