๊ด€๋ฆฌ ๋ฉ”๋‰ด

์ฝ”์ง„๋‚จ

๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ ๋ณธ๋ฌธ

Database

๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ

woojin126 2021. 12. 12. 15:22

๐Ÿ’ก ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ

๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์‹คํ–‰ ๊ฒฐ๊ณผ ํ–‰์ด ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋‚˜์˜ค๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

์ „์‹œ๊ฐ„์— ๋ณธ ๋‹จ์ผํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ์™€ ๋‹ฌ๋ฆฌ ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ด๋ฏ€๋กœ ๋‹จ์ผํ–‰ ์—ฐ์Šจ์ž๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  ๋‹ค์ค‘ํ–‰ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ๋ฉ”์ธ์ฟผ๋ฆฌ์™€ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€‹

โ€‹

ex) ๊ฐ๋ถ€ ์„œ๋ณ„ ์ตœ๊ณ  ๊ธ‰์—ฌ์™€ ๋™์ผํ•œ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์‚ฌ์› ์ •๋ณด ์ถœ๋ ฅ(IN์—ฐ์‚ฐ์ž)

SELECT *

FROM EMP

WHERE SAL IN (SELECT MAX(SAL)

FROM EMP

GROUP BY DEPTNO);

โ€‹

โ€‹

โ€‹

โ€‹

tip) ANY ์—ฐ์‚ฐ์ž,SOME ์—ฐ์‚ฐ์ž๋ฅผ ๋“ฑ๊ฐ€ ๋น„๊ต ์—ฐ์‚ฐ์ž(=) ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด IN ์—ฐ์‚ฐ์ž์™€ ์ •ํ™•์ด ๊ฐ™์€ ๊ธฐ๋Šฅ์ˆ˜ํ–‰

โ€‹

ex) ๊ฐ๋ถ€ ์„œ๋ณ„ ์ตœ๊ณ  ๊ธ‰์—ฌ์™€ ๋™์ผํ•œ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์‚ฌ์› ์ •๋ณด ์ถœ๋ ฅ(ANY์—ฐ์‚ฐ์ž)

SELECT *

FROM EMP

WHERE SAL = ANY (SELECT MAX(SAL)

FROM EMP

GROUP BY DEPTNO);

โ€‹

โ€‹

ex)30๋ฒˆ ๋ถ€์„œ ์‚ฌ์›๋“ค์˜ ์ตœ๋Œ€ ๊ธ‰์—ฌ๋ณด๋‹ค ์ ์€ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์‚ฌ์› ์ •๋ณด ์ถœ๋ ฅ

โ€‹

SELECT *

FROM EMP

WHERE SAL < ANY (SELECT SAL

FROM EMP

WHERE DEPTNO=30) ORDER BY SAL, EMPNO;

โ€‹

์œ„์˜๊ฒฝ์šฐ ANY ์—ฐ์‚ฐ์ž๋ฉด ์„œ๋ธŒ์ฟผ๋ฆฌ ์˜ ๊ฐ’์ค‘ ํ•˜๋‚˜๋งŒ TRUE๋ฉด ๋œ๋‹ค.

์ตœ๋Œ€๊ฐ€ 2850 ์ž„์œผ๋กœ 2850 ๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•œ๋‹ค.

โ€‹

ex)30๋ฒˆ ๋ถ€์„œ ์‚ฌ์›๋“ค์˜ ์ตœ์†Œ ๊ธ‰์—ฌ๋ณด๋‹ค ๋งŽ์€ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์‚ฌ์› ์ •๋ณด์ถœ๋ ฅ

โ€‹

SELECT *

FROM EMP

WHERE SAL > ANY (SELECT SAL

FROM EMP

WHERE DEPTNO =30);

โ€‹

์—ฌ๋Ÿฌ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ’์ค‘ ์ตœ์†Œ๊ฐ’๋ณด๋‹ค๋งŒ ํฌ๋ฉด๋œ๋‹ค.

โ€‹

ex ๋ถ€์„œ ๋ฒˆํ˜ธ๊ฐ€ 30๋ฒˆ์ธ ์‚ฌ์›๋“ค์˜ ์ตœ์†Œ ๊ธ‰์—ฌ๋ณด๋‹ค ๋” ์ ์€ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์‚ฌ์› ์ถœ๋ ฅ(ALL ์‚ฌ์šฉ)

SELECT * FROM EMP WHERE SAL < ALL

(SELECT SAL FROM EMP WHERE DEPTNO = 30);

โ€‹

โ€‹

ALL์€ ๋ชจ๋“  ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œ์ผœ์•ผํ•œ๋‹ค.

์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ’(950,1250,1500,1600,2850) ๋ณด๋‹ค ์ž‘์€๊ฐ’์„ ๋งŒ์กฑ์‹œ์ผœ์•ผํ•˜๋‹ˆ

์ตœ์†Œ๊ฐ’์ธ 950 ๋ณด๋‹ค ์ž‘์œผ๋ฉด ์œ„์˜ ๋ชจ๋“  5๊ฐœ์˜์กฐ๊ฑด์„ ๋งŒ์กฑ.

โ€‹

EX) ์œ„์™€๋น„์Šทํ•œ ์˜ˆ์ œ์—์„œ (์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ๊ฐ’์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ) EXIST

โ€‹

SELECT *

FROM EMP

WHERE EXISTS ( SELECT DNAME FROM DEPT WHERE DEPTNO = 10;

โ€‹

๐Ÿ’ก๋‹ค์ค‘์—ด ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

๋‹ค์ค‘์—ด ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ SELECT์ ˆ์— ๋น„๊ตํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹.

โ€‹

ex)

SELECT * FROM WHERE (DEPTNO,SAL) IN (SELECT DEPTNO, MAX(SAL)

FROM EMP GROUP BY DETPNO);

โ€‹

๐Ÿ’กFROM์ ˆ์— ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ

์œ„์—์„œ์˜ ์„œ๋ธŒ์ฟผ๋ฆฌ๋“ค์€ WHERE์ ˆ์—์„œ ์กฐ๊ฑด์‹ ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ FROM์—๋„ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. FROM์ ˆ์— ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์ธ๋ผ์ธ ๋ทฐ๋ผ๊ณ ๋ถ€๋ฅธ๋‹ค. ์ธ๋ผ์ธ ๋ทฐ๋Š” ํŠน์ • ํ…Œ์ด๋ธ” ์ „์ฒด ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ SELECT๋ฌธ์„ ํ†ตํ•ด ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์ถ”์ถœํ•ด ์˜จํ›„ ๋ณ„์นญ์„ ์ฃผ์–ด ์‚ฌ์šฉํ•œ๋‹ค.

โ€‹

ex) SELECT E10.EMPNO, E10.ENAME , E10.DEPTNO , D.DNAME , D.LOC

FROM (SELECT * FROM EMP WHERE DEPTNO=10 ) E10,

(SELECT * FROM DEPT) D

WHERE E10.DEPTNO=D.DEPTNO;

โ€‹

โ€‹

๐Ÿ’กSELECT์ ˆ์— ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ

์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” SELECT์ ˆ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”ํ•œ ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์ด ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” SELECT์ ˆ์— ํ•˜๋‚˜์˜ ์—ด ์˜์—ญ์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์Œ ์˜ˆ๋ฅผํ†ตํ•ด SELECT์ ˆ์— ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋ณด์ž.

โ€‹

TIP)SELECT์ ˆ์— ๋ช…์‹œํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋งŒ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ž‘์„ฑํ•ด์ค˜์•ผ ํ•œ๋‹ค.

โ€‹

ex)

SELECT EMPNO,ENAME,SAL,

(SELECT GRADE FROM SALGRADE WHERE e.SAL BETWEEN LOSAL AND HISAL) as SALGRADE

FROM EMP e;