๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT์ž๊ฒฉ์ฆ ๊ณต๋ถ€/SQLD ๊ธฐ์ถœ๋ฌธ์ œ

[SQLD] 33ํšŒ ๊ธฐ์ถœ๋ฌธ์ œ ( 50๋ฌธ์ œ/์ •๋‹ต )

by yunamom 2022. 7. 15.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“–SQLD. ์ œ 33 ํšŒ ๊ธฐ์ถœ ๋ฌธ์ œ


๋ฌธ์ œ 1. ์•„๋ž˜ ์„ค๋ช…์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ€์žฅ ์ ์ ˆํ•œ ํŒŒํ‹ฐ์…˜ ๋ถ„ํ•  ๊ธฐ๋ฒ•์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. 

๋Œ€์ƒ ํ…Œ์ด๋ธ”์ด ๋‚ ์งœ ๋˜๋Š” ์ˆซ์ž ๊ฐ’์œผ๋กœ ๋ถ„๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ๊ฐ ์˜์—ญ๋ณ„๋กœ ํŠธ๋žœ์žญ์…˜์ด ๋ถ„๋ฆฌ๋œ๋‹ค.
๋ฐ์ดํ„ฐ ๋ณด๊ด€ ์ฃผ๊ธฐ์— ๋”ฐ๋ผ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ง€์šฐ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

โœ๏ธ ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

๋ฌธ์ œ 2. ์†์„ฑ์˜ ๋ถ„๋ฅ˜ ์ค‘ ์†์„ฑ์˜ ํŠน์„ฑ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜๋กœ ์•Œ๋งž์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

 
1) ๊ธฐ๋ณธ ์†์„ฑ, ์ผ๋ฐ˜ ์†์„ฑ, ํŒŒ์ƒ ์†์„ฑ

2) ๊ธฐ๋ณธ ์†์„ฑ, ์„ค๊ณ„ ์†์„ฑ, ํŒŒ์ƒ ์†์„ฑ

3) ๊ธฐ๋ณธ ์†์„ฑ, ์„ค๊ณ„ ์†์„ฑ, ์ผ๋ฐ˜ ์†์„ฑ

4) ์ผ๋ฐ˜ ์†์„ฑ, ์„ค๊ณ„ ์†์„ฑ, ํŒŒ์ƒ ์†์„ฑ

 

๋ฌธ์ œ 3. ์†์„ฑ์˜ ๋ถ„๋ฅ˜ ์ค‘ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜๋กœ ์•Œ๋งž์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

1) ๊ธฐ๋ณธ ์†์„ฑ

2) ์ผ๋ฐ˜ ์†์„ฑ

3) ์„ค๊ณ„ ์†์„ฑ

4) ํŒŒ์ƒ ์†์„ฑ


๋ฌธ์ œ 4. ๋‹ค์Œ ์ฃผ์–ด์ง„ ๊ทธ๋ฆผ์— ํ•ด๋‹นํ•˜๋Š” ERD ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์•Œ๋งž์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

1) Barker

2) IE

3) UML

4) IDEFIX

 

๋ฌธ์ œ 5. ์‹๋ณ„์ž ์™€ ๋น„์‹๋ณ„์ž ๊ด€๊ณ„์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ๋ถ€์ ์ ˆํ•œ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

1) ์‹๋ณ„์ž ๊ด€๊ณ„๋Š” ๊ฐ•ํ•œ ๊ด€๊ณ„, ๋น„์‹๋ณ„์ž ๊ด€๊ณ„๋Š” ์•ฝํ•œ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค.

2) ์‹๋ณ„์ž ๊ด€๊ณ„๋Š” ์ƒ์†๋ฐ›์€ ์ฃผ์‹๋ณ„์ž ์†์„ฑ์„ ํƒ€ ์—”ํ‹ฐํ‹ฐ์— ์ด์ „์ด ํ•„์š”ํ•˜๊ณ  ๋น„์‹๋ณ„์ž ๊ด€๊ณ„๋Š” ์ฐจ๋‹จ์ด ํ•„์š”ํ•˜๋‹ค.

3) ์‹๋ณ„์ž ๊ด€๊ณ„๋Š” ์‹ค์„ ์œผ๋กœ, ๋น„์‹๋ณ„์ž ๊ด€๊ณ„๋Š” ์ ์„ ์œผ๋กœ ํ‘œ์‹œํ•œ๋‹ค.

4) ์‹๋ณ„์ž ๊ด€๊ณ„๋Š” ์ž์‹ ์—”ํ‹ฐํ‹ฐ์˜ ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ์— ๋Œ€ํ•ด ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ณ  ๋น„์‹๋ณ„์ž ๊ด€๊ณ„์—์„œ๋Š” ์ข…์†์ ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

 

๋ฌธ์ œ 6. 3์ฐจ ์ •๊ทœํ™”์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์•Œ๋งž์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ์†์„ฑ์˜ ์ค‘๋ณต ๊ฐ’์„ ์ œ๊ฑฐํ•œ๋‹ค.

2) ๋ณตํ•ฉ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ๊ฐ ์ธ์Šคํ„ด์Šค์˜ ์ข…์†์„ฑ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ๋‹ค.

3) ๋‹ค์น˜์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•œ๋‹ค.

4) ์ผ๋ฐ˜ ์†์„ฑ์˜ ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•œ๋‹ค.

 

๋ฌธ์ œ 7. ๋‹ค์Œ ์ฃผ์–ด์ง„ ERD ์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์•Œ๋งž์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ



1) ๊ณ ๊ฐ ์ •๋ณด๊ฐ€ ์—†๋Š” ์ฃผ๋ฌธ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. (๊ณ ๊ฐ ์ •๋ณด๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค.)

2) ๊ณ„์•ฝ ํ…Œ์ด๋ธ”์€ ์ฃผ๋ฌธ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋ชจ๋‘ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

3) ์ฃผ๋ฌธ ํ…Œ์ด๋ธ”์€ ๋ฐ˜๋“œ์‹œ ์ฒญ์•ฝ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

4) ๊ณ„์•ฝ์€ ๊ณ„์•ฝ ๊ทธ๋ฃน์— ์†ํ•ด ์žˆ์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. (๊ณ„์•ฝ ์ •๋ณด๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค.)

 

๋ฌธ์ œ 8. ๊ณ ๊ฐ, ๊ณ ๊ฐ ๋กœ๊ทธ์ธ ๋‚ด์—ญ ํ…Œ์ด๋ธ”์—์„œ ๊ณ ๊ฐ์˜ 10ํผ์„ผํŠธ๋Š” ๋กœ๊ทธ์ธ ๋‚ด์—ญ์„ ํ™•์ธํ•˜๊ณ  ๋กœ๊ทธ์ธ ๋‚ด์—ญ์€ 3๋…„๋™์•ˆ ๋ณด๊ด€ํ•˜๊ณ  ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค. ์•„๋ž˜์˜ ์„ค๋ช… ์ค‘ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ๊ธฐ๋ณธํ‚ค(Primary Key)์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

2) ์™ธ๋ž˜ํ‚ค(Foreign Key)์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋Š” ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

3) ๊ธฐ๊ฐ„์„ Range ํŒŒํ‹ฐ์…˜ํ•œ๋‹ค.

4) Hash ํŒŒํ‹ฐ์…˜์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

๋ฌธ์ œ 9. ๋‹ค์Œ ์ค‘ ๋ณด๊ธฐ์˜ ํ…Œ์ด๋ธ”์„ ์„ค๊ณ„ํ•  ์‚ฌํ•ญ์œผ๋กœ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

- ๊ฐœ์ธ ๊ณ ๊ฐ๊ณผ ๋ฒ•์ธ ๊ณ ๊ฐ์ด ์žˆ๊ณ  ๊ฐ ๊ณ ๊ฐ ๋ฐ์ดํ„ฐ๋Š” ๊ณตํ†ต ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
- ๊ฐ๊ฐ์˜ ๊ณ ๊ฐ ๋ฐ์ดํ„ฐ์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋ณ„ ์†์„ฑ๋„ ์žˆ๋‹ค.
- ๋กœ๊ทธ์ธ ๊ด€๋ฆฌ๋Š” ๋™์ผํ•˜๊ฒŒ ๊ด€๋ฆฌ๋œ๋‹ค.
- ๋ฒ•์ธ ๊ณ ๊ฐ๊ณผ ๊ฐœ์ธ ๊ณ ๊ฐ ์ค‘ ๊ฐœ์ธ ๊ณ ๊ฐ์˜ ๋น„์œจ์ด 98%๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค.
- ๊ฐœ์ธ ๊ณ ๊ฐ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ด ์••๋„์ ์œผ๋กœ ๋งŽ๋‹ค.
1) ํ†ตํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ ๋‹ค. (All in One)

2) ๊ณตํ†ต ์†์„ฑ์„ ์ค‘๋ณต์œผ๋กœ ๋‘์–ด ์Šˆํผ-์„œ๋ธŒ ํƒ€์ž…์œผ๋กœ ํ•œ๋‹ค. (์Šˆํผ-์„œ๋ธŒํƒ€์ž…)

3) ๊ณตํ†ต ์†์„ฑ์„ ๋ณ„๋„๋กœ ๋‘๊ณ  ๊ฐœ์ธ ๊ณ ๊ฐ๊ณผ ๋ฒ•์ธ ๊ณ ๊ฐ๋„ ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”๋กœ ์ƒ์„ฑํ•œ๋‹ค. (1:1)

4) ์œ„ ๋ณด๊ธฐ ๋ชจ๋‘ ์„ฑ๋Šฅ ์กฐ์ ˆ์„ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ถ€์ ์ ˆํ•œ๋‹ค.

 

๋ฌธ์ œ 10. ์กฐ์ธ์ด ๋ณต์žกํ•œ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ํ…Œ์ด๋ธ”๋“ค์„ ๋ฐ˜์ •๊ทœํ™” ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๋ฐ˜์ •๊ทœํ™” ๊ธฐ๋ฒ•์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ์ค‘๋ณต ๊ด€๊ณ„ ์ถ”๊ฐ€

2) ํŒŒ์ƒ ์นผ๋Ÿผ ์ถ”๊ฐ€

3) ํ†ต๊ณ„ ํ…Œ์ด๋ธ” ์ถ”๊ฐ€


4) ๊ธฐ๋ณธํ‚ค์— ์˜ํ•œ ์นผ๋Ÿผ ์ถ”๊ฐ€

 

๋ฌธ์ œ 11. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ ์„œ๋ธŒ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ณ์ง€ ์•Š์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ๋ฉ”์ธ ์ฟผ๋ฆฌ์—์„œ ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ ์นผ๋Ÿผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

2) ์„œ๋ธŒ ์ฟผ๋ฆฌ์—์„œ๋Š” ORDER BY๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค.

3) ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ๋‹จ์ผ ํ–‰(Single Row) ๋˜๋Š” ๋ณต์ˆ˜ ํ–‰(Multi Row) ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

4) ๋ฉ”์ธ ์ฟผ๋ฆฌ ๋ ˆ๋ฒจ์ด 1์ด๊ณ  ์„œ๋ธŒ ์ฟผ๋ฆฌ๊ฐ€ M์ด๋ฉด ํ•ญ์ƒ ๋ฉ”์ธ ์ฟผ๋ฆฌ ๋ ˆ๋ฒจ1๋กœ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์ด ์ƒ์„ฑ๋œ๋‹ค.

 

๋ฌธ์ œ 12. ์ฃผ์–ด์ง„ ํ…Œ์ด๋ธ”์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” SQL๋ฌธ์„ ๊ณ ๋ฅด์‹œ์˜ค.  ์ •๋‹ตํ™•์ธ๐ŸŒผ

[SQLD_33_12]
DNAME      YEAR     SAL
------------------------
๊ฒฝ์˜์ง€์›๋ถ€    2010     4900
๊ฒฝ์˜์ง€์›๋ถ€    2011     5000
๊ฒฝ์˜์ง€์›๋ถ€    2012     5100
์ธ์‚ฌ๋ถ€       2010     4800
์ธ์‚ฌ๋ถ€       2011     4900
์ธ์‚ฌ๋ถ€       2012     5000

[RESULT]
DNAME      YEAR     SUM(SAL)
----------------------------
์ธ์‚ฌ๋ถ€       2010     4800
์ธ์‚ฌ๋ถ€       2011     4900
์ธ์‚ฌ๋ถ€       2012     5000
์ธ์‚ฌ๋ถ€                14700
๊ฒฝ์˜์ง€์›๋ถ€    2010     4900
๊ฒฝ์˜์ง€์›๋ถ€    2011     5000
๊ฒฝ์˜์ง€์›๋ถ€    2012     5100
๊ฒฝ์˜์ง€์›๋ถ€             15000
                    29700
 
1)
SELECT DNAME, YEAR, SUM(SAL)
FROM SQLD_33_12
GROUP BY ROLLUP((DNAME, YEAR), NULL);

2)
SELECT DNAME, YEAR, SUM(SAL)
FROM SQLD_33_12
GROUP BY ROLLUP(DNAME, (DNAME, YEAR));

3)
SELECT DNAME, SUM(SAL)
FROM SQLD_33_12
GROUP BY ROLLUP((DNAME, YEAR));

4)
SELECT DNAME, SUM(SAL)
FROM SQLD_33_12
GROUP BY ROLLUP(DNAME, YEAR, (DNAME, YEAR));

 

๋ฌธ์ œ 13. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ ์ˆซ์žํ˜• ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ ๊ฐ’์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) SELECT FLOOR(35.8) FROM DUAL; 
๊ฒฐ๊ณผ โ†’ 36

2) SELECT CEIL(35.8) FROM DUAL;
๊ฒฐ๊ณผ โ†’ 36

3) SELECT ROUND(36.8, 9) FROM DUAL;
๊ฒฐ๊ณผ โ†’ 36

4) SELECT TRUNC(35.8) FROM DUAL;
๊ฒฐ๊ณผ โ†’ 36

 

 

 

๋ฌธ์ œ 14. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ SQL๋ฌธ์˜ ์‹คํ–‰ ์ˆœ์„œ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์„ ๊ณ ๋ฅด์‹œ์˜ค. ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

1) FROM - WHERE - GROUP BY - HAVING - ORDER BY - SELECT

2) FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY

3) FROM - WHERE - HAVING - GROUP BY - ORDER BY - SELECT

4) FROM - WHERE - GROUP BY - SELECT - HAVING - ORDER BY

 

๋ฌธ์ œ 15. ์˜ค๋ผํด ํ™˜๊ฒฝ์—์„œ ๋‚ ์งœํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๊ฒฝ์šฐ ์•„๋ž˜ SQL๋ฌธ์˜ ๊ฒฐ๊ณผ๋กœ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

SELECT TO_CHAR(TO_DATE('2015.01.10 10', 'YYYY.MM.DD HH24')
       +1/24/(60/10),'YYYY.MM.DD HH24:MI:SS')
FROM DUAL;
1) 2015.01.10 11:01:00

2) 2015.01.10 10:05:00

3) 2015.01.10 10:10:00

4) 2015.01.10 10:30:00

 

๋ฌธ์ œ 16. ์•„๋ž˜ SQL ๋ฌธ์žฅ ์‹คํ–‰ ์ˆœ์„œ๋กœ ์•Œ๋งž์€ ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

1. Nested Loops
2.     Hash Join
3.              TABLE ACCESS (FULL) TAB1
4.              TABLE ACCESS (FULL) TAB2
5.     TABLE ACCESS (BY ROWID) TAB3
6.              INDE (UNIQUE SCAN) PK_TAB3
1) 3, 4, 2, 6, 5, 1

2) 1, 2, 3, 4, 5, 6

3) 3, 4, 6, 2, 5, 1

4) 3, 4, 2, 1, 6, 5
 

 

๋ฌธ์ œ 17. ๋ช…์‹œ์  ์ปค์„œ์—์„œ FETCH ๋‹จ๊ณ„ ์ดํ›„ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ธ๊ฐ€?์ •๋‹ตํ™•์ธ๐ŸŒผ

1) CURSOR DEFINE

2) OPEN CURSOR

3) CLOSE CURSOR

4) EXIT

 

๋ฌธ์ œ 18. ์•„๋ž˜ ํŒ€ ๋ณ„ ์„ฑ์  ํ…Œ์ด๋ธ”์—์„œ ์Šน๋ฆฌ ๊ฑด์ˆ˜๊ฐ€ ๋†’์€ ์ˆœ์œผ๋กœ 3์œ„๊นŒ์ง€ ์ถœ๋ ฅํ•˜๋˜ 3์œ„์˜ ์Šน๋ฆฌ ๊ฑด์ˆ˜๊ฐ€ ๋™์ผํ•œ ํŒ€์ด ์žˆ๋‹ค๋ฉด ํ•จ๊ป˜ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์žฅ์œผ๋กœ ์•Œ๋งž์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

[TABLE : ํŒ€๋ณ„์„ฑ์ ]
ํŒ€๋ช…     ์Šน๋ฆฌ๊ฑด์ˆ˜       ํŒจ๋ฐฐ๊ฑด์ˆ˜
---------------------------
AํŒ€      120          80
BํŒ€      20           180
CํŒ€      10           190
DํŒ€      100          100
EํŒ€      110          90
FํŒ€      100          100
GํŒ€      70           130
1)                               3)
SELECT TOP(3) ํŒ€๋ช…, ์Šน๋ฆฌ๊ฑด์ˆ˜         SELECT ํŒ€๋ช…, ์Šน๋ฆฌ๊ฑด์ˆ˜     
FROM ํŒ€๋ณ„์„ฑ์                        FROM ํŒ€๋ณ„์„ฑ์ 
ORDER BY ์Šน๋ฆฌ๊ฑด์ˆ˜ DESC;             WHERE ROWNUM <= 3
                                  ORDER BY ์Šน๋ฆฌ๊ฑด์ˆ˜ DESC;
                                  
2)                               4)
SELECT TOP(3) ํŒ€๋ช…, ์Šน๋ฆฌ๊ฑด์ˆ˜         SELECT TOP(3) WITH TIES ํŒ€๋ช…, ์Šน๋ฆฌ๊ฑด์ˆ˜     
FROM ํŒ€๋ณ„์„ฑ์ ;                      FROM ํŒ€๋ณ„์„ฑ์ 
                                  ORDER BY ์Šน๋ฆฌ๊ฑด์ˆ˜ DESC;

 

๋ฌธ์ œ 19. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ ์„ธ๋ฒˆ์งธ ๋ฌธ์ž๊ฐ€ 'N'์ธ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ์กฐ๊ฑด์œผ๋กœ ์ ์ ˆํ•œ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

1) SELECT*FROM ํ…Œ์ด๋ธ”๋ช… WHERE like LIKE 'N%';

2) SELECT*FROM ํ…Œ์ด๋ธ”๋ช… WHERE like '%N%';

3) SELECT*FROM ํ…Œ์ด๋ธ”๋ช… WHERE like '[__N]%';

4) SELECT*FROM ํ…Œ์ด๋ธ”๋ช… WHERE like '__N%';

 

๋ฌธ์ œ 20. ๋‹ค์Œ ๋ณด๊ธฐ์—์„œ Hash Join์˜ ์ˆœ์„œ๋กœ ์˜ณ์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

๊ฐ€) ์„ ํ–‰ ํ…Œ์ด๋ธ”์—์„œ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ํ•„ํ„ฐ๋งํ•œ๋‹ค.
๋‚˜) ์„ ํ–‰ ํ…Œ์ด๋ธ”์˜ ์กฐ์ธ ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜์—ฌ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค.
๋‹ค) 1๋ฒˆ, 2๋ฒˆ ์ž‘์—…์„ ์„ ํ–‰ ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ชจ๋“  ํ–‰์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
๋ผ) ํ›„ํ–‰ ํ…Œ์ด๋ธ”์—์„œ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ํ•„ํ„ฐ๋งํ•œ๋‹ค.
๋งˆ) ํ›„ํ–‰ ํ…Œ์ด๋ธ”์˜ ์กฐ์ธ ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜์—ฌ ์„ ํ–‰ ํ…Œ์ด๋ธ”์—์„œ ํ•ด์‹œ ํ•จ์ˆ˜ ๋ฐ˜ํ™˜๊ฐ’๊ณผ ๊ฐ™์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•ด๋‹น ๋ฒ„ํ‚ท์„ ์ฐพ๋Š”๋‹ค.
1) ๊ฐ€-๋‚˜-๋‹ค-๋ผ-๋งˆ

2) ๊ฐ€-๋‚˜-๋ผ-๋งˆ-๋‹ค

3) ๋‚˜-๊ฐ€-๋งˆ-๋ผ-๋‹ค

4) ๊ฐ€-๋ผ-๋‚˜-๋งˆ-๋‹ค

 

๋ฌธ์ œ 21. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‹ค๋ฅธ SQL๋ฌธ์€ ๋ฌด์—‡์ธ๊ฐ€?์ •๋‹ตํ™•์ธ๐ŸŒผ

 

[SQLD_33_21]
๊ณ ๊ฐ     ๊ฑฐ๋ž˜๋‚ด์—ญ
--------------
์ฒ ์ˆ˜      100
๋ฏผ์ •
์•„๋ฆ„      300
์˜ˆ์ง„
1) SELECT NULL*2 FROM SQLD_33_21;

2) SELECT NULL*3 FROM SQLD_33_21;

3) SELECT NULL*NULL FROM SQLD_33_21;

4) SELECT COUNT(๊ณ ๊ฐ) FROM SQLD_33_21 WHERE ๊ฑฐ๋ž˜๋‚ด์—ญ IS NULL;

 

๋ฌธ์ œ 22. ๋‹ค์Œ ์ฃผ์–ด์ง„ SQL๋ฌธ๊ณผ ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ ํ•˜๋Š” SQL๋ฌธ์€ ๋ฌด์—‡์ธ๊ฐ€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

[SQL]

SELECT * FROM SQLD_33_22
WHERE (COL1 = 1 AND COL2 = 3)
OR (COL1 = 1 AND COL2 = 4);

1) SELECT*FROM SQLD_33_22
   WHERE COL1 IN (1, 3) AND COL2 IN (1, 4);

2) SELECT*FROM SQLD_33_22
   WHERE COL1 IN (1, 3) OR COL2 IN(1, 4);

3) SELECT*FROM SQLD_33_22
   WHERE COL1 = 1 OR (COL2 = 3 OR COL2 = 4);

4) SELECT*FROM SQLD_33_22
   WHERE COL1 = 1 AND (COL2 = 3 OR COL2 = 4);

 

๋ฌธ์ œ 23. ๋‹ค์Œ ์ฃผ์–ด์ง„ ํ…Œ์ด๋ธ”์—์„œ ์•„๋ž˜์˜ SQL์„ ์ˆ˜ํ–‰ํ•˜์˜€์„ ๋•Œ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์„ ๋•Œ ๊ฒฐ๊ณผ์—์„œ ๋นˆ์นธ์— ๋“ค์–ด๊ฐˆ MGR_SUM ๊ฐ’์œผ๋กœ ์•Œ๋งž์€ ๊ฒƒ์„ ๊ณ ๋ฅด์‹œ์˜ค.  ์ •๋‹ตํ™•์ธ๐ŸŒผ

[SQLD_33_23]

MGR   ENAME   HIREDATE   SAL
-----------------------------
์œ ๋น„    ๊ด€์šฐ      2017    1000
์œ ๋น„    ์žฅ๋น„      2018    1500
์œ ๋น„    ์ œ๊ฐˆ๋Ÿ‰     2015    2000
์กฐ์กฐ    ํ•˜ํ›„๋ˆ     2016    2000
์กฐ์กฐ    ํ•˜ํ›„์—ฐ     2017    3500
์กฐ์กฐ    ์ˆœ์šฑ      2015    3000
์†๊ถŒ    ์ฃผ์œ       2015    2500
์†๊ถŒ    ํ™ฉ๊ฐœ      2019    3000
์†๊ถŒ    ๋…ธ์ˆ™      2013    2000
[SQL]

SELECT MGR, ENAME, HIREDATE, SAL,
   SUM(SAL) OVER(PARTITION BY MGR 
            ORDER BY HIREDATE
            ROWS BETWEEN 1 PRECEDING
            AND 1 FOLLOWING) AS MGR_SUM
    FROM SQLD_33_23;
[RESULT]

MGR   ENAME   HIREDATE   SAL   MGR_SUM
---------------------------------------
์†๊ถŒ    ๋…ธ์ˆ™      2013    2000  (       )
์†๊ถŒ    ์ฃผ์œ       2015    2500  (       )
์†๊ถŒ    ํ™ฉ๊ฐœ      2019    3000  (       )
์œ ๋น„    ์ œ๊ฐˆ๋Ÿ‰     2015    2000  (       )
์œ ๋น„    ๊ด€์šฐ      2017    1000  (       )
์œ ๋น„    ์žฅ๋น„      2018    1500  (       )
์กฐ์กฐ    ์ˆœ์šฑ      2015    3000  (       )
์กฐ์กฐ    ํ•˜ํ›„๋ˆ     2016    2000  (       )
์กฐ์กฐ    ํ•˜ํ›„์—ฐ     2017    3500  (       )
1) 2000, 2500, 3000, 2000, 1000, 1500, 3000, 2000, 3500

2) 4500, 7500, 5500, 3000, 4500, 2500, 5000, 8500, 5500

3) 2000, 4500, 7500, 2000, 3000, 4500, 3000, 5000, 8500

4) 4500, 7500, 7500, 3000, 4500, 4500, 5000, 8500, 8500

 

๋ฌธ์ œ 24. ๋‹ค์Œ ์ฃผ์–ด์ง„ SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜์˜€์„ ๋•Œ ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ˜์˜๋˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ธ๊ฐ€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

[SQL]
INSERT INTO SQLD_33_24 VALUES(1);
INSERT INTO SQLD_33_24 VALUES(2);
SAVEPOINT SV1;
UPDATE SQLD_33_24 SET COL1 = 7 WHERE COL1 = 2;
INSERT INTO SQLD_33_24 VALUES(9);
SAVEPOINT SV2;
DELETE SQLD_33_24 WHERE COL1 = 7;
INSERT INTO SQLD_33_24 VALUES(11);
SAVEPOINT SV3;
INSERT INTO SQLD_33_24 VALUES(9);
ROLLBACK TO SV2;
COMMIT;
1) 1, 2

2) 1, 9, 11

3) 1, 9, 11, 9

4) 1, 7, 9

 

๋ฌธ์ œ 25. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ B-tree ์ธ๋ฑ์Šค์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์•Œ๋งž์€ ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ์ธ๋ฑ์Šค์˜ ๋ฆฌํ”„ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณง ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋‹ค.

2) ๋ธŒ๋žœ์น˜ ๋ธ”๋ก๊ณผ ๋ฆฌํ”„ ๋ธ”๋ก์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ๋ธŒ๋žœ์น˜ ๋ธ”๋ก์€ ๋ถ„๊ธฐ๋ฅผ ๋ชฉ์ ์œผ๋กœ ํ•˜๊ณ  ๋ฆฌํ”„ ๋ธ”๋ก์€ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์นผ๋Ÿผ์˜ ๊ฐ’์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค.

3) ํ•˜๋‚˜์˜ ์ธ๋ฑ์Šค ํ‚ค ์—”ํŠธ๋ฆฌ๊ฐ€ ๋งŽ์€ ํ–‰์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

4) ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋  ์งˆ์˜๋ฅผ ์‹œ์Šคํ…œ ๊ตฌํ˜„ ์‹œ์— ๋ชจ๋‘ ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์ธ DW ๋ฐ AD-HOC ์งˆ์˜ ํ™˜๊ฒฝ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค.

 

๋ฌธ์ œ 26. HASH JOIN์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ณ์ง€ ์•Š์€ ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ๋™๋“ฑ ์กฐ์ธ ์ด์™ธ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

2) ๋ฐ์ดํ„ฐ ๊ฑด์ˆ˜๊ฐ€ ์ ์€ ํ…Œ์ด๋ธ”์„ ์„ ํ–‰ ํ…Œ์ด๋ธ”๋กœ ๋‘๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค.

3) ์กฐ์ธ ์นผ๋Ÿผ์˜ ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

4) ์ž์—ฐ ์กฐ์ธ ์‹œ ๋“œ๋ผ์ด๋น™ ์ง‘ํ•ฉ์ชฝ์œผ๋กœ ์กฐ์ธ ์•ก์„ธ์Šค์–‘์ด ๋งŽ์•„ Random ์•ก์„ธ์Šค ๋ถ€ํ•˜๊ฐ€ ์‹ฌํ•  ๋•Œ ์œ ๋ฆฌํ•˜๋‹ค.

 

๋ฌธ์ œ 27. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ ROLE์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์•Œ๋งž์€ ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ๋‹ค์–‘ํ•œ ์œ ์ €์—๊ฒŒ ๋‹ค์–‘ํ•œ ๊ถŒํ•œ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ '๋ช…๋ น์–ด' ์ด๋‹ค.

2) ROLE์€ DBA ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์œ ์ €์— ์˜ํ•ด์„œ ์ƒ์„ฑ๋œ๋‹ค.

3) ROLE์€ GRANT ๋ช…๋ น์–ด๋กœ ๋ถ€์—ฌํ•˜๊ณ  REVOKE ๋ช…๋ น์–ด๋กœ ํšŒ์ˆ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

4) ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ROLL์„ ๋ถ€์—ฌํ•ด์•ผ ํ•œ๋‹ค.

 

๋ฌธ์ œ 28. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ๊ณผ์˜ ํ†ต์‹  ์ˆ˜๋‹จ์ด ํ•„์š”ํ•œ๋ฐ ์ด๋ฅผ ๋ฐ์ดํ„ฐ ์–ธ์–ด(Data Language) ๋ผ๊ณ  ํ•˜๋ฉฐ ๊ทธ ๊ธฐ๋Šฅ๊ณผ ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ ์ •์˜์–ด(DDL), ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(DML), ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด(DCL)๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. ๋‹ค์Œ ์ค‘ ๋ฐ์ดํ„ฐ ์–ธ์–ด์™€ SQL ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ๊ฐ€์žฅ ๋ถ€์ ์ ˆ ํ•œ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ๋น„์ ˆ์ฐจ์  ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(DML)๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์Šจ ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋ฉฐ, ์–ด๋–ป๊ฒŒ ๊ทธ๊ฒƒ์„ ์ ‘๊ทผํ•ด์•ผ ๋˜๋Š”์ง€๋ฅผ ๋ช…์„ธํ•˜๋Š” ์–ธ์–ด์ด๋‹ค.

2) DML์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž๊ฐ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์งˆ์˜์–ด๋ฅผ ํ†ตํ•˜์—ฌ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‹ค์งˆ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ SELECT, INSERT, DELETE, UPDATE ๋“ฑ์ด ์žˆ๋‹ค.

3) DDL์€ ์Šคํ‚ค๋งˆ, ๋„๋ฉ”์ธ, ํ…Œ์ด๋ธ”, ๋ทฐ, ์ธ๋ฑ์Šค๋ฅผ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ ๋˜๋Š” ์ œ๊ฑฐ ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ CREATE, ALTER, DROP, RENAME ๋“ฑ์ด ์žˆ๋‹ค.

4) ํ˜ธ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ ์†์— ์‚ฝ์ž…๋˜์–ด ์‚ฌ์šฉ๋˜๋Š” DML ๋ช…๋ น์–ด๋“ค์„ ๋ฐ์ดํ„ฐ ๋ถ€์†์–ด(Data Sub Language)๋ผ๊ณ  ํ•œ๋‹ค.

 

๋ฌธ์ œ 29. ๋‹ค์Œ ์•„๋ž˜์˜ SQL๋ฌธ์„ ํ‘œ์ค€ ANSI SQL๋กœ ์•Œ๋งž๊ฒŒ ๋ฐ”๊พผ ๊ฒƒ์€?(๋‹จ, ์กฐ์ธ ์กฐ๊ฑด๊ณผ ์กฐํšŒ ์กฐ๊ฑด์€ ๋ถ„๋ฆฌํ•œ๋‹ค.)  ์ •๋‹ตํ™•์ธ๐ŸŒผ

SELECT * FROM SCOTT.EMP A, SCOTT.DEPT B
WHERE A.DEPTNO = B.DEPTNO AND
B.DNAME = 'SALES';
1)                                   3)
SELECT *                             SELECT *
FROM SCOTT.EMP A LEFT OUTER JOIN     FROM SCOTT.EMP A INNER JOIN
SCOTT.DEPT B                         SCOTT.DEPT B
ON (A.DEPTNO = B.DEPTNO AND          ON (A.DEPTNO = B.DEPTNO AND
    B.DNAME = 'SALES')                   B.DNAME = 'SALES')
WHERE 1=1;                           WHERE 1=1;

2)                                   4)
SELECT *                             SELECT *
FROM SCOTT.EMP A RIGHT OUTER JOIN     FROM SCOTT.EMP A INNER JOIN
SCOTT.DEPT B                         SCOTT.DEPT B
ON (A.DEPTNO = B.DEPTNO AND          ON A.DEPTNO = B.DEPTNO
    B.DNAME = 'SALES')               WHERE 1=1 AND
WHERE 1=1;                           B.DNAME = 'SALES'

 

๋ฌธ์ œ 30. ์ฃผ์–ด์ง„ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด์„œ ์•„๋ž˜์˜ SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜์˜€์„ ๋•Œ ์ด ๋ช‡๊ฐœ์˜ ํ–‰(ROW)์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฐ€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

[SQLD_30_1]
COL1    COL2
------------
1        2
1        2
1        3

[SQLD_30_2]
COL1    COL2
------------
1        2
1        4
1        5

[SQL]
SELECT DISTINCT COL1, COL2 FROM
SQLD_30_1
UNION ALL
SELECT COL1, COL2 FROM SQLD_30_2;
1) 2, 4

2) 5

3) 4

4) 2, 5

 

๋ฌธ์ œ 31. ์•„๋ž˜์˜ ๊ณ„์ธตํ˜• SQL์—์„œ ๋ฆฌํ”„ ๋ฐ์ดํ„ฐ์ด๋ฉด 1, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋นˆ์นธ์— ๋“ค์–ด๊ฐˆ ํ‚ค์›Œ๋“œ๋กœ ์•Œ๋งž์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

[SQL]
SELECT LEVEL, 
LPAD(' ',4*(LEVEL - 1)) || EMPNO,
MGR, (          ) AS ISLEAF
FROM SQLD_33_31
START WITH MGR IS NULL
CONNECT BY PRIOR EMPNO = MGR;
1) CONNECT_BY_ISLEAF

2) CONNECT_BY_ISCYCLE

3) SYS_CONNECT_BY_PATH

4) CONNECT_BY_ROOT

 

๋ฌธ์ œ 32. ๋‹ค์Œ ์ฃผ์–ด์ง„ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด์„œ ์•„๋ž˜์˜ SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜์˜€์„ ๋•Œ์˜ ๊ฒฐ๊ณผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

[SQLD_32_1]
N1   V1
-------
1    A
2  
3    B
4    C

[SQLD_32_2]
N1   V1
-------
1    A
2  
3    B
 
[SQL]
SELECT SUM(A.N1)
FROM SQLD_32_1 A,
SQLD_32_2 B
WHERE A.V1 <> B.V1;
1) 10

2) 30

3) 12

4) 8

 

๋ฌธ์ œ 33. ์„œ๋ธŒ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ๊ฐ€์žฅ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์„œ ์‚ฌ์šฉํ•œ๋‹ค.

2) ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

3) ๋ฉ”์ธ ์ฟผ๋ฆฌ๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ์นผ๋Ÿผ์„ ์“ธ ์ˆ˜ ์—†๋‹ค.

4) ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” SELECT์ ˆ, FROM์ ˆ, WHERE์ ˆ ๋“ฑ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๋ฌธ์ œ 34. ์•„๋ž˜์˜ ์‹คํ–‰ ๊ณ„ํš์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค๋ช…ํ•œ ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

-----------------------------------------------------
0 SELECT STATEMENT Optimizer = ALL_ROWS
  (Cost=7 Card=9 Bytes=1k)
1 0 HASH JOIN (Cost=7 Card=9 Bytes=1k)
2 1   TABLE ACCESS (FULL) OF 'SCOTT.DEPT' (TABLE)
      (Cost=3 Card=1 Bytes=30)
3 1     VIEW(Cost=3 Card=9 Bytes=783)
4 3       COUNT(STOPKEY)
5 4         TABLE ACESS (FULL) OF 'SCOTT.EMP' (TABLE)
            (Cost=3 Card=14 Bytes=1k)
-----------------------------------------------------
Predicate information (identified by opera-tion id);
-----------------------------------------------------
1 - access("A"."DEPTNO"="B"."DEPTNO")
2 - filter("B"."DNAME"='SALES')
4 - filter(ROWNUM < 10)
-----------------------------------------------------
1) DEMP TABLE์— ๋Œ€ํ•œ ํ–‰ ์ œํ•œ ๊ตฌ๋ฌธ์ด ์žˆ๋‹ค.

2) EMP TABLE๊ณผ DEPT TABLE์€ OUTER JOIN์œผ๋กœ ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ๋‹ค.

3) EMP TABLE๊ณผ DEPT TABLE์—์„œ ์„ ํ–‰ ํ…Œ์ด๋ธ”์€ EMP TABLE์ด๋‹ค.

4) DEPT TABLE์€ ๋ณ„๋„์˜ ์กฐ๊ฑด์ด ์—†์–ด FULL SCAN์„ ํ•˜๊ณ  ์žˆ๋‹ค.

 

๋ฌธ์ œ 35. ์•„๋ž˜์˜ SQL๋ฌธ์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์žฅ ์ž˜ ์„ค๋ช…ํ•œ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

[EMP_A]
ENO     MNO    SALARY
----------------------
A1      B1     400
A2      B2     8000
A3      B3     9000
A4      B4     4000
A5      B5     5000


[EMP_B]
ENO     MNO    SALARY
----------------------
B1      C1     2000
B2      C2     7000
B3      C3     10000
B4      C4     3000
B5      C5     6000

[SQL]
SELECT B. * FROM EMP_A A, EMP_B B
WHERE A.MNO = B.ENO
AND B.SALARY >= A.SALARY;
1) ์–ด๋–ค ๋ถ€ํ•˜์ง์›๋ณด๋‹ค๋„ ์—ฐ๋ด‰์ด ๋†’์€ ์ƒ์‚ฌ

2) ์–ด๋–ค ๋ถ€ํ•˜์ง์›๋ณด๋‹ค๋„ ์—ฐ๋ด‰์ด ๋‚ฎ์€ ์ƒ์‚ฌ

3) ์–ด๋–ค ์ƒ์‚ฌ๋ณด๋‹ค๋„ ์—ฐ๋ด‰์ด ๋†’์€ ๋ถ€ํ•˜ ์ง์›

4) ์–ด๋–ค ์ƒ์‚ฌ๋ณด๋‹ค๋„ ์—ฐ๋ด‰์ด ๋‚ฎ์€ ๋ถ€ํ•˜ ์ง์›

 

๋ฌธ์ œ 36. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ ์–ธ์–ด์˜ ์ข…๋ฅ˜์™€ ํ•ด๋‹น๋˜๋Š” ๋ช…๋ น์–ด๋ฅผ ๋ฐ”๋ฅด๊ฒŒ ์—ฐ๊ฒฐํ•œ ๊ฒƒ์„ 2๊ฐœ ๊ณ ๋ฅด์‹œ์˜ค.  โœ๏ธ ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) DML - SELECT

2) DML - ALTER

3) DCL - DROP

4) TCL - COMMIT

 

๋ฌธ์ œ 37. ๋‹ค์Œ ์ค‘ ์•„๋ž˜์˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ ๊ฐ™์€ ํ…Œ์ด๋ธ” ๋ฐ ๊ธฐ๋ณธํ‚ค (Primary Key) ์ œ์•ฝ์กฐ๊ฑด์„ ์ƒ์„ฑํ•˜๋Š” DDL ๋ฌธ์žฅ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?(DBMS ๋Š” Oracle์„ ๊ธฐ์ค€)  ์ •๋‹ตํ™•์ธ๐ŸŒผ

[IE ํ‘œ๊ธฐ๋ฒ•]                       [Barker ํ‘œ๊ธฐ๋ฒ•]

PRODUCT                          PRODUCT()
PROD_ID: VARCHAR2(10)NOT NULL    # PROD_ID VARCHAR2(10)
-----------------------------    * PROD_NM: VARCHAR2(100)
PROD_NM: VARCHAR2(100)NOT NULL   * REG_DT DATE
REG_DT: DATE NOT NULL            0 REGR_NO: NUMBER(10)
REGR_NO: NUMBER(10) NULL
1)                                    3)
CREATE TABLE PRODUCT(                  CREATE TABLE PRODUCT(
PROD_ID VARCHAR2(10) NOT NULL,         PROD_ID VARCHAR2(10) NOT NULL,
PROD_NM VARCHAR2(100) NOT NULL,        PROD_NM VARCHAR2(100) NOT NULL,
REG_DT DATE NOT NULL,                  REG_DT DATE NOT NULL,
REGR_NO NUMBER(10) NULL);              REGR_NO NUMBER(10) NULL);

ALTER TABLE PRODUCT ADD PRIMARY KEY
PRODUCT_PK ON (PROD_ID);

2)                                    4)
CREATE TABLE PRODUCT(                  CREATE TABLE PRODUCT(
PROD_ID VARCHAR2(10),                  PROD_ID VARCHAR2(10) NOT NULL,
PROD_NM VARCHAR2(100),                 PROD_NM VARCHAR2(100) NOT NULL,
REG_DT DATE,                           REG_DT DATE NOT NULL,
REGR_NO NUMBER(10));                   REGR_NO NUMBER(10),
                                       CONSTRAINT PRODUCT_PK PRIMARY KEY(PROD_ID));
ALTER TABLE PRODUCT ADD CONSTRAINT
PRODUCT_PK PRIMARY KEY (PROD_ID);

 

๋ฌธ์ œ 38. ์•„๋ž˜ ํ…Œ์ด๋ธ” T, S, R์ด ๊ฐ๊ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธ๋˜์—ˆ๋‹ค. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ DELETE FROM T ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„์— ํ…Œ์ด๋ธ” R์— ๋‚จ์•„์žˆ๋Š” ๋ฐ์ดํ„ฐ๋กœ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

CREATE TABLE T(
C INTEGER PRIMARY KEY,
D INTEGER);

CREATE TABLE S(
B INTEGER PRIMARY KEY,
C INTEGER REFERENCES T(C) 
ON DELETE CASCADE);

CREATE TABLE R(
A INTEGER PRIMARY KEY,
B INTEGER REFERENCES S(B) 
ON DELETE SET NULL);

[T]        [S]        [R]
C    D      B    C     A    B
------      ------     ------
1    1      1    1     1    1
2    1      2    1     2    2
1) (1, NULL)๊ณผ (2, 2)

2) (1, NULL)๊ณผ (2, NULL)

3) (2, 2)

4) (1, 1)

 

๋ฌธ์ œ 39. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ ์นผ๋Ÿผ๋ณ„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ œ์•ฝ์กฐ๊ฑด(Constraints)์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ๊ฐ€์žฅ ๋ถ€์ ์ ˆํ•œ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) UNIQUE : ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ์ค‘๋ณต๋˜๋Š” ๊ฐ’ ์ด ์—†์œผ๋ฉด NULL ์ž…๋ ฅ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

2) Primary Key : ์ฃผ ํ‚ค๋กœ ํ…Œ์ด๋ธ”๋‹น 1๊ฐœ๋งŒ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

3) Foreign Key : ์™ธ๋ž˜ํ‚ค๋กœ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

4) NOT NULL : ๋ช…์‹œ์ ์œผ๋กœ NULL ์ž…๋ ฅ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

 

๋ฌธ์ œ 40. ๋‹ค์Œ ์ค‘ ์•„๋ž˜์˜ (1), (2), (3) ์˜ SQL์—์„œ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์€ ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

(1)
SELECT A.ID, B.ID
FROM SQLD_40_1 A FULL OUTER JOIN
SQLD_40_2 B
ON A.ID = B.ID;

(2)
SELECT A.ID, B.ID
FROM SQLD_40_1 A LEFT OUTER JOIN
SQLD_40_2 B
ON A.ID = B.ID
UNION
SELECT A.ID, B.ID
FROM SQLD_40_1 A RIGHT OUTER JOIN
SQLD_40_2 B
ON A.ID = B.ID;

(3)
SELECT A.ID, B.ID
FROM SQLD_40_1 A, SQLD_40_2 B
WHERE A.ID = B.ID
UNION ALL
SELECT A.ID, NULL FROM SQLD_40_1 A
WHERE NOT EXISTS(SELECT 1 FROM 
                 SQLD_40_2 B 
                 WHERE A.ID = B.ID)
UNION ALL
SELECT NULL, B.ID
FROM SQLD_40_2 B
WHERE NOT EXISTS(SELECT 1 FROM
                 SQLD_40_1 A
                 WHERE B.ID = A.ID);
1) 1, 2

2) 1, 3

3) 2, 3

4) 1, 2, 3

 

๋ฌธ์ œ 41. ์•„๋ž˜์˜ SQL๋กœ ์กฐํšŒ๋˜๋Š” ํ–‰ ์ˆ˜๋ฅผ ๊ตฌํ•˜์‹œ์˜ค.  ์ •๋‹ตํ™•์ธ๐ŸŒผ

[SQLD_41_1]
DEPTNO     JOB      SAL
------------------------
20       CLERK     800
30       SALESMAN  1600
30       SALESMAN  1250
20       MANAGER   2976
30       SALESMAN  1250
30       MANAGER   2850
10       MANAGER   2450
20       ANALYST   3000
10       PRESIDENT 5000
30       SALESMAN  1500
20       CLERK     1100
30       CLERK     950
20       ANALYST   3000
10       CLERK     1300

[SQLD_41_2]

DEPTNO    DNAME
-----------------
10       ACCOUNTING
20       RESEARCH
30       SALES
40       OPERATIONS
SELECT DNAME, JOB,
COUNT(*) "TOTAL EMP",
SUM(SAL) "TOTAL SAL"
FROM SQLD_41_1 A, SQLD_41_2 B
WHERE A.DEPTNO = B.DEPTNO
GROUP BY CUBE(DNAME, JOB);
1) 10

2) 14

3) 18

4) 20

 

๋ฌธ์ œ 42. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ Oracle ๊ณ„์ธตํ˜• ์งˆ์˜์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ๊ฐ€์žฅ ๋ถ€์ ์ ˆํ•œ ๊ฒƒ์€?   ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) START WITH์ ˆ์€ ๊ณ„์ธต ๊ตฌ์กฐ์˜ ์‹œ์ž‘์ ์„ ์ง€์ •ํ•˜๋Š” ๊ตฌ๋ฌธ์ด๋‹ค.

2) ORDER SIBLINGS BY์ ˆ์€ ํ˜•์ œ ๋…ธ๋“œ ์‚ฌ์ด์—์„œ ์ •๋ ฌ์„ ์ง€์ •ํ•˜๋Š” ๊ตฌ๋ฌธ์ด๋‹ค.

3) ์ˆœ๋ฐฉํ–ฅ ์ „๊ฐœ๋ž€ ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์ž์‹ ๋…ธ๋“œ ๋ฐฉํ–ฅ์œผ๋กœ ์ „๊ฐœํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

4) ๋ฃจํŠธ ๋…ธ๋“œ์˜ LEVEL ๊ฐ’์€ 0์ด๋‹ค.

 

๋ฌธ์ œ 43. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ ์ฃผ์–ด์ง„ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด์„œ ์•„๋ž˜์˜ SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜์˜€์„๋•Œ์˜ ๊ฒฐ๊ณผ๋กœ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

[SQLD_33_43]
EMPLOYEE_ID   NAME   DATE_OF_ENTRY   MANAGER_ID
------------------------------------------------
1000         ๊ฐ•๋™์›     2018-01-01     NULL
1001         ์กฐ์ธ์„ฑ     2018-01-01     1000
1002         ์›๋นˆ      2019-01-01     1000
1003         ์ •์šฐ์„ฑ     2019-01-01     1000
1004         ํ˜„๋นˆ      2019-01-01     NULL
1005         ์žฅํ˜      2020-01-01     1004
1006         ์ด๋ณ‘ํ—Œ     2020-01-01     1004
1007         ์•ˆ์„ฑ๊ธฐ     2020-01-01     1004

[SQL]
SELECT EMPLOYEE_ID, NAME, DATE_OF_ENTRY, MANAGER_ID
FROM SQLD_33_43
START WITH MANAGER_ID IS NULL
CONNECT BY PRIOR EMPLOYEE_ID = MANAGER_ID
AND DATE_OF_ENTRY BETWEEN '2019-01-01'
AND '2019-12-31'
ORDER SIBLINGS BY EMPLOYEE_ID;
1)
EMPLOYEE_ID  NAME  DATE_OF_ENTRY  MANAGER_ID
--------------------------------------------
1000        ๊ฐ•๋™์›    18/01/01       NULL
1002        ์›๋นˆ     19/01/01       1000
1003        ์ •์šฐ์„ฑ    19/01/01       1000
1004        ํ˜„๋นˆ     19/01/01       NULL

2)
EMPLOYEE_ID  NAME  DATE_OF_ENTRY  MANAGER_ID
--------------------------------------------
1002        ์›๋นˆ     19/01/01       1000
1003        ์ •์šฐ์„ฑ    19/01/01       1000
1004        ํ˜„๋นˆ     19/01/01       NULL

3)
EMPLOYEE_ID  NAME  DATE_OF_ENTRY  MANAGER_ID
--------------------------------------------
1000        ๊ฐ•๋™์›    18/01/01       NULL

3)
EMPLOYEE_ID  NAME  DATE_OF_ENTRY  MANAGER_ID
--------------------------------------------
1000        ๊ฐ•๋™์›    18/01/01       NULL
1004        ํ˜„๋นˆ     19/01/01       NULL
1005        ์žฅํ˜     20/01/01       1004
1006        ์ด๋ณ‘ํ—Œ    20/01/01       100
1007        ์•ˆ์„ฑ๊ธฐ    20/01/01       1004

- - - - - - - - ์ฃผ๊ด€์‹ - - - - - - - -

๋ฌธ์ œ 44. ์•„๋ž˜์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜๋˜๋„๋ก ์ฃผ์–ด์ง„ SQL๋ฌธ์˜ ๋นˆ์นธ์„ ์™„์„ฑํ•˜์‹œ์˜ค.์ •๋‹ตํ™•์ธ๐ŸŒผ

SELECT COL1, COL2, COL3,
LEAD(COL3,(    ),(    )) 
OVER(PARTITION BY COL1 ORDER BY COL3)
AS AFTER_COL3
FROM SQLD_33_44;

[RESULT]
COL1   COL2   COL3  AFTER_COL3
-----------------------------
A      ๊ฐ€      1      10
A      ๊ฐ€      5      9
A      ๋‹ค      10     9
B      ๊ฐ€      20     100
B      ๊ฐ€      30     9
B      ๊ฐ€      100    9
C      ๊ฐ€      50     1000
C      ๊ฐ€      100    9
C      ๊ฐ€      1000   9
D      ๊ฐ€      1200   9
D      ๊ฐ€      1400   9

โœ๏ธ

 

๋ฌธ์ œ 45. ์ฃผ์–ด์ง„ ํ…Œ์ด๋ธ”์—์„œ ์•„๋ž˜์˜ SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜์˜€์„๋•Œ ๊ฒฐ๊ณผ๊ฐ’์ด ์•„๋ž˜์˜ ๊ฒฐ๊ณผ์™€ ๊ฐ™์„๋•Œ ๊ฒฐ๊ณผ์˜ (      )์— ๋“ค์–ด๊ฐˆ ๊ฐ’์„ ์ ์œผ์‹œ์˜ค.

[SQLD_33_45]
COL1   COL2    COL3
---------------------
A       ๊ฐ€       1
A       ๊ฐ€       5
A       ๋‹ค       10
B       ๊ฐ€       20
B       ๋‚˜       30
B       ๋‚˜       100
C       ๋‹ค       50
[SQL]

SELECT NTILE_2, COUNT(*) AS CNT
FROM (
      SELECT COL1, COL2, COL3, NTILE(3) OVER
      (ORDER BY COL3) AS NTILE_2
      FROM SQLD_33_45
      )
      WHERE 1=1
GROUP BY NTILE_2;

[RESULT]
NTILE_2    CNT
----------------
(    )    (    )
2           2
3           2

โœ๏ธ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

๋ฌธ์ œ 46. ์•„๋ž˜ SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ ์œผ์‹œ์˜ค.

[SQL]
SELECT COALESCE(NULLIF(1,1),2,3)
FROM DUAL;

โœ๏ธ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

๋ฌธ์ œ 47. ์ฃผ์–ด์ง„ ํ…Œ์ด๋ธ”์—์„œ ๋‚ ์งœ ๊ฐ’์„ 2020, 02๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ถ”์ถœํ•˜๋„๋ก ์•„๋ž˜ SQL๋ฌธ์˜ (      )์„ ์™„์„ฑํ•˜์‹œ์˜ค. ์ •๋‹ตํ™•์ธ๐ŸŒผ

[SQLD_33_47]
COL1
--------
2020-2-1

[SQL]
SELECT EXTRACT(YEAR FROM SYSDATE),
LPAD(EXTRACT(month from sysdate),(     ))
FROM SQLD_33_47;

โœ๏ธ

 

๋ฌธ์ œ 48. ์•„๋ž˜์˜ ๋ณด๊ธฐ๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์กฐ์ธ ๊ธฐ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€?

- ๋จผ์ € ์„ ํ–‰ ํ…Œ์ด๋ธ”์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํ–‰์„ ์ถ”์ถœํ•˜์—ฌ ํ›„ํ–‰ ํ…Œ์ด๋ธ”์„ ์ฝ์œผ๋ฉด์„œ ์กฐ์ธ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
- ๋žœ๋ค ๋ฐฉ์‹์œผ๋กœ ์—‘์„ธ์Šค ํ•œ๋‹ค.
- ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€๋Šฅํ•œ ๋นจ๋ฆฌ ํ™”๋ฉด์— ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋Š” ์˜จ๋ผ์ธ ํ”„๋กœ๊ทธ๋žจ์— ์ ๋‹นํ•˜๋‹ค.

โœ๏ธ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

๋ฌธ์ œ 49. ์ฃผ์–ด์ง„ ํ…Œ์ด๋ธ”์—์„œ ์•„๋ž˜์˜ SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜์˜€์„๋•Œ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ ์œผ์‹œ์˜ค.

[SQLD_33_49]
COL1   COL2   COL3
-------------------
A      100     50
A      300     130
A      400     70
B      50      100
C      500     500

[SQL]
SELECT SUM(CASE WHEN COL1 = 'A'
           THEN 1 END) AS SUM1,
       SUM(CASE WHEN COL2 < 200
           THEN 1 END) AS SUM2
FROM SQLD_33_49;

โœ๏ธ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

๋ฌธ์ œ 50. ์ฃผ์–ด์ง„ ํ…Œ์ด๋ธ”์—์„œ ์•„๋ž˜์˜ SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ๊ฐ€ RESULT์™€ ๊ฐ™์„๋•Œ SQL๋ฌธ์˜ ๋นˆ์นธ์„ ๊ทธ๋ฃน ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™„์„ฑํ•˜์‹œ์˜ค.

[SQLD_33_50]
COL1   COL2   COL3
------------------
A      ๊ฐ€      2
A      ๊ฐ€      4
A      ๋‹ค      3
A      ๋‹ค      3
A      ๋‹ค      1
B      ๊ฐ€      10
B      ๊ฐ€      10
B      ๋‚˜      50
B      ๋‚˜      50
B      ๋‚˜      30
C      ๋‚˜      50
C      ๋‚˜      50
C      ๋‹ค      500
C      ๋‹ค      500
C      ๋‹ค      50

[SQL]
SELECT COL1, COL2, SUM(COL3)
FROM SQLD_33_50
GROUP BY(     );

[RESULT]
COL1    COL2   SUM(COL3)
-------------------------
A       ๊ฐ€       6
A       ๋‹ค       7
A               13
B       ๊ฐ€       20
B       ๋‚˜       130
B               150
C       ๋‚˜       100
C       ๋‹ค       1050
C               1150

โœ๏ธ์ •๋‹ตํ™•์ธ๐ŸŒผ


๐Ÿ“SQLD. ์ œ 33 ํšŒ ๊ธฐ์ถœ ๋ฌธ์ œ(์ด 50) - ์ •๋‹ต / ํ•ด์„ค

 

1. ์ •๋‹ต :  Range Partition

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : ํŒŒํ‹ฐ์…”๋‹ (ํ…Œ์ด๋ธ”์„ ์ข€ ๋” ์ž‘๊ฒŒ ๋ถ„ํ• ํ•ด์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•)

๋ถ„ํ•  ๊ธฐ์ค€ ์„ค๋ช…
๋ฒ”์œ„ ๋ถ„ํ• 
(Range Partitioning)
- ๋ถ„ํ•  ํ‚ค ๊ฐ’์ด ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.
- ์˜ˆ๋ฅผ ๋“ค์–ด, ์šฐํŽธ ๋ฒˆํ˜ธ๋ฅผ ๋ถ„ํ•  ํ‚ค๋กœ ์ˆ˜ํ‰ ๋ถ„ํ• ํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.
๋ชฉ๋ก ๋ถ„ํ• 
(List Partitioning)
- ๊ฐ’ ๋ชฉ๋ก์— ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹น ๋ถ„ํ•  ํ‚ค ๊ฐ’์„ ๊ทธ ๋ชฉ๋ก์— ๋น„์ถ”์–ด ํŒŒํ‹ฐ์…˜์„ ์„ ํƒํ•œ๋‹ค.
- ์˜ˆ๋ฅผ ๋“ค์–ด, Country๋ผ๋Š” ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด Iceland, Norway, Sweden, Finland, Denmark์ค‘ ํ•˜๋‚˜์— ์žˆ๋Š”ํ–‰์„ ๊ฐ€์ ธ์˜ฌ๋•Œ ๋ถ์œ ๋Ÿฝ ๊ตญ๊ฐ€ ํŒŒํ‹ฐ์…˜์„ ๊ตฌ์ถ• ํ• ์ˆ˜ ์žˆ๋‹ค.
ํ•ด์‹œ ๋ถ„ํ• 
(Hash Partitioning)
- ํ•ด์‹œ ํ•จ์ˆ˜์˜ ๊ฐ’์— ๋”ฐ๋ผ ํŒŒํ‹ฐ์…˜์— ํฌํ•จํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.
- ๋ฐ์ดํ„ฐ์˜ ๊ด€๋ฆฌ ๋ณด๋‹ค๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋ชฉ์ ์„ ๋‘”๋‹ค.
- ์˜ˆ๋ฅผ ๋“ค์–ด, 4๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด์‹œ ํ•จ์ˆ˜๋Š” 0-3์˜ ์ •์ˆ˜๋ฅผ ๋Œ๋ ค์ค€๋‹ค.
ํ•ฉ์„ฑ ๋ถ„ํ• 
(Composite Partitioning)
- ๋ถ„ํ•  ๊ธฐ์ค€์œผ๋กœ ์—ฌ๋Ÿฌ ๊ธฐ๋ฒ•์„ ๊ฒฐํ•ฉํ•ด ์‚ฌ์šฉํ•œ๋‹ค. 
๋ผ์šด๋“œ ๋กœ๋นˆ
(Round Robin)
- ๋ผ์šด๋“œ๋กœ๋นˆ ๋ถ„ํ• ์€ ํŒŒํ‹ฐ์…˜์— ํ–‰์˜ ๊ณ ๋ฅธ ๋ถ„ํฌ๋ฅผ ์›ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
- *ํ•ด์‹œ๋ถ„ํ• ๊ณผ ๋‹ฌ๋ฆฌ ๋ถ„ํ•  ์นผ๋Ÿผ์„ ๋ช…์‹œํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
- ํšŒ์ „ํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ํ–‰์ด ํŒŒํ‹ฐ์…˜์— ํ• ๋‹น๋œ๋‹ค. 
- ํ•˜๋‚˜์˜ ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜๋ฅผ ์ž„์˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ฐจ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ค‘์•™์ฒ˜๋ฆฌ์žฅ์น˜๋ฅผ ์กฐ๊ธˆ์”ฉ ๋Œ์•„๊ฐ€๋ฉฐ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ๋ฆฌ๋ˆ…์Šค๋ฅผ ํฌํ•จํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋Š”๋ฐฉ์‹์ด๋‹ค.
์˜ˆ: ๋ฌด๋”์šด ์—ฌ๋ฆ„, ์„ธ ๋ช…์˜ ์•„์ด๋“ค์ด ํ•˜๋‚˜์˜ ์•„์ด์Šคํฌ๋ฆผ์„ 1/3์”ฉ ๋‚˜๋ˆ„์–ด ๋จน์œผ๋ ค ํ•œ๋‹ค. ๋จผ์ € A๊ฐ€ 1/3์„ ๋จน๊ณ , ๊ทธ ๋‹ค์Œ B๊ฐ€ 1/3์„ ๋จน๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ C๊ฐ€ ๋‚˜๋จธ์ง€๋ฅผ ๋จน๋Š” ๊ฒƒ๋ณด๋‹ค๋Š”, ์„ธ ๋ช…์ด ์กฐ๊ธˆ์”ฉ ๋Œ์•„๊ฐ€๋ฉฐ ๋จน๋Š” ํŽธ์ด ๋ชจ๋“  ์•„์ด๋“ค์˜ ๊ฐˆ์ฆ์„ ๋™์‹œ์— ํ•ด์†Œํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

2. ์ •๋‹ต :  2

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : ์†์„ฑ์˜ ํŠน์„ฑ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ ( ๊ธฐ๋ณธ์†์„ฑ, ์„ค๊ณ„์†์„ฑ, ํŒŒ์ƒ์†์„ฑ) 

๊ตฌ๋ถ„ ์„ค๋ช…
๊ธฐ๋ณธ ์†์„ฑ ์‚ฌ์›์ด๋ฆ„, ์ง์ฑ…์ด๋ฆ„, ๊ณ ์šฉ์ผ์ž ๋“ฑ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์†์„ฑ
์„ค๊ณ„ ์†์„ฑ ์—…๋ฌด์ƒ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์™ธ์— ์—…๋ฌด๋ฅผ ๊ทœ์น™ํ™” ํ•˜๊ธฐ ์œ„ํ•ด ์†์„ฑ์„ ์ƒˆ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋ณ€ํ˜•ํ•˜์—ฌ ์ •์˜ํ•˜๋Š” ์†์„ฑ
ํŒŒ์ƒ ์†์„ฑ ๋‹ค๋ฅธ ์†์„ฑ์— ์˜ํ–ฅ์„ ๋ฐ›์•„ ๋ฐœ์ƒํ•˜๋Š” ์†์„ฑ, ๊ณ„์‚ฐ๋œ ๊ฐ’๋“ค์ด ์—ฌ๊ธฐ์— ํ•ด๋‹น (์˜ˆ: ์ด ๊ฒฐ์ œ๊ธˆ์•ก ๋“ฑ)

 

 

 

3. ์ •๋‹ต :  2

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : ์†์„ฑ์„ ์—”ํ‹ฐํ‹ฐ ๊ตฌ์„ฑ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ ( PK ์†์„ฑ, FK ์†์„ฑ, ์ผ๋ฐ˜์†์„ฑ )

 

 ์†์„ฑ์˜ ๋ถ„๋ฅ˜ 

 

๊ฐ€. ์†์„ฑ์˜ ํŠน์„ฑ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

 

์†์„ฑ์„ ํŠน์„ฑ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„๋ฅ˜๋˜์–ด์ง„๋‹ค.

 

1) ๊ธฐ๋ณธ์†์„ฑ

์—…๋ฌด๋ถ„์„์„ ํ†ตํ•ด ์ •์˜ํ•œ ์†์„ฑ

(์ œํ’ˆ์ด๋ฆ„, ์ œ์กฐ๋…„์›”, ์ œ์กฐ์›๊ฐ€ ๋“ฑ) 

 

2) ์„ค๊ณ„์†์„ฑ

์›๋ž˜ ์—…๋ฌด์ƒ ์กด์žฌํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์„ค๊ณ„๋ฅผ ํ•˜๋ฉด์„œ ๋„์ถœํ•ด๋‚ด๋Š” ์†์„ฑ

(001-์‹ํ’ˆ์šฉ๊ธฐ, 002-์•ฝํ’ˆ์šฉ๊ธฐ, 003-๊ธฐํƒ€์šฉ๊ธฐ ๋“ฑ)

 

3) ํŒŒ์ƒ์†์„ฑ

๋‹ค๋ฅธ ์†์„ฑ์œผ๋กœ๋ถ€ํ„ฐ ๊ณ„์‚ฐ์ด๋‚˜ ๋ณ€ํ˜•์ด ๋˜์–ด ์ƒ์„ฑ๋˜๋Š” ์†์„ฑ

 

๋‹ค๋ฅธ ์†์„ฑ์— ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค ์„ค๊ณ„ ์‹œ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์œ ์˜ํ•ด์•ผ ํ•  ์ ์ด ๋งŽ๋‹ค.

ํŒŒ์ƒ์†์„ฑ์€ ๊ทธ ์†์„ฑ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณ„์‚ฐ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ์–ด๋–ค ์—”ํ„ฐํ‹ฐ์— ์–ด๋–ค ์†์„ฑ์— ์˜ํ•ด ์˜ํ–ฅ์„ ๋ฐ›๋Š”์ง€ ์ •์˜๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋ฉฐ๊ฐ€๊ธ‰์  ํŒŒ์ƒ์†์„ฑ์„ ์ ๊ฒŒ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

(์ „์ฒด์šฉ๊ธฐ์ˆ˜(sum(๊ฐœ๋ณ„์šฉ๊ธฐ), ์šฉ๊ธฐ์˜ ์ด๊ธˆ์•ก(sum(๋‹จ๊ฐ€) ๋“ฑ)

 

 

๋‚˜. ์—”ํ„ฐํ‹ฐ ๊ตฌ์„ฑ๋ฐฉ์‹์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

 

 

์†์„ฑ์„ ์—”ํ‹ฐํ‹ฐ ๊ตฌ์„ฑ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„๋ฅ˜๋˜์–ด์ง„๋‹ค.

 

์—”ํ„ฐํ‹ฐ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์„ PK(Primary Key)์†์„ฑ, ๋‹ค๋ฅธ ์—”ํ„ฐํ‹ฐ์™€์˜ ๊ด€๊ณ„์—์„œ ํฌํ•จ๋œ ์†์„ฑ์„ FK(Foreign Key)์†์„ฑ, ์—”ํ„ฐํ‹ฐ์— ํฌํ•จ๋˜์–ด ์žˆ๊ณ  PK, FK์— ํฌํ•จ๋˜์ง€ ์•Š์€ ์†์„ฑ์„ ์ผ๋ฐ˜์†์„ฑ์ด๋ผ ํ•œ๋‹ค.

 

1) PK(Primary Key) ์†์„ฑ

์—”ํ„ฐํ‹ฐ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ

2) FK(Foreign Key) ์†์„ฑ 

๋‹ค๋ฅธ ์—”ํ„ฐํ‹ฐ์™€์˜ ๊ด€๊ณ„์—์„œ ํฌํ•จ๋œ ์†์„ฑ

3) ์ผ๋ฐ˜์†์„ฑ 

PK, FK์— ํฌํ•จ๋˜์ง€ ์•Š์€ ์†์„ฑ

 

  

๋˜ํ•œ ์†์„ฑ์˜ ์„ธ๋ถ€ ์˜๋ฏธ๋ฅผ ๋” ์ชผ๊ฐค ์ˆ˜ ์žˆ๋Š”์ง€์˜ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

1) ๋‹จ์ˆœ ์†์„ฑ(Simple Attribute)

๋” ์ด์ƒ ๋‹ค๋ฅธ ์†์„ฑ๋“ค๋กœ ์ชผ๊ฐค ์ˆ˜ ์—†๋Š” ๋‹จ์ˆœํ•œ ์†์„ฑ

(๋‚˜์ด, ์„ฑ๋ณ„)

 

2) ๋ณตํ•ฉ ์†์„ฑ(Composite Attribute)

์—ฌ๋Ÿฌ ์„ธ๋ถ€ ์†์„ฑ๋“ค๋กœ ์ชผ๊ฐค ์ˆ˜ ์žˆ๋Š” ์†์„ฑ

(์ฃผ์†Œ - ์‹œ, ๊ตฌ, ๋™, ๋ฒˆ์ง€ ๋“ฑ์œผ๋กœ ์ชผ๊ฐœ์งˆ ์ˆ˜ ์žˆ๋‹ค)

 

ํ•˜๋‚˜์˜ ์†์„ฑ ์•ˆ์— ๋™์ผํ•œ ์„ฑ์งˆ์˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์ด ์กด์žฌ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€์˜ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

(๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์ด 1:1๋กœ ํ•˜๋‚˜๋ฟ์ด๋ƒ, 1:N์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์กด์žฌ ํ•  ์ˆ˜ ์žˆ๋Š๋ƒ์˜ ์—ฌ๋ถ€)

 

1) ๋‹จ์ผ๊ฐ’ ์†์„ฑ(Single-Valued Attribute)

์†์„ฑ ํ•˜๋‚˜์— ํ•œ ๊ฐœ์˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ

(๋ชจ๊ตญ, ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ)

 

2) ๋‹ค์ค‘๊ฐ’ ์†์„ฑ(Multi-Valued Attribute)

์†์„ฑ ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ

(์ „ํ™”๋ฒˆํ˜ธ, ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ ๊ต์ˆ˜๋ช…)

 

๋‹ค์ค‘๊ฐ’ ์†์„ฑ์˜ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ์—”ํ„ฐํ‹ฐ์— ํฌํ•จ๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ 1์ฐจ ์ •๊ทœํ™”๋ฅผ ํ•˜๊ฑฐ๋‚˜, ์•„๋‹ˆ๋ฉด ๋ณ„๋„์˜ ์—”ํ„ฐํ‹ฐ๋ฅผ ๋งŒ๋“ค์–ด ๊ด€๊ณ„๋กœ ์—ฐ๊ฒฐํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

 

4. ์ •๋‹ต :  2

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : I/E ํ‘œ๊ธฐ๋ฒ• (Information Engineering Notation)

 

 

5. ์ •๋‹ต :  4

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

์‹๋ณ„์ž ๊ด€๊ณ„ ๋น„์‹๋ณ„์ž ๊ด€๊ณ„
๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ๋กœ๋ถ€ํ„ฐ ์†์„ฑ์„ ๋ฐ›์•„ ์ž์‹์—”ํ‹ฐํ‹ฐ์˜ ์ฃผ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ๋กœ๋ถ€ํ„ฐ ์†์„ฑ์„ ๋ฐ›์•˜์ง€๋งŒ ์ž์‹์—”ํ‹ฐํ‹ฐ์˜ ์ฃผ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์ผ๋ฐ˜์ ์ธ ์†์„ฑ(์ฆ‰, ์ผ๋ฐ˜ ์†์„ฑ ์™ธ๋ถ€์‹๋ณ„์ž)์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
์‹๋ณ„์ž ๊ด€๊ณ„์—์„œ Null๊ฐ’์ด ์˜ค๋ฉด ์•ˆ๋˜๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ๋ถ€๋ชจ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์ƒ์„ฑ๋˜์–ด์•ผ ์ž๊ธฐ ์ž์‹ ์˜ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์ƒ์„ฑ๋จ ์•ฝํ•œ ์ข…์† ๊ด€๊ณ„๋กœ ์ž์‹ ์ฃผ์‹๋ณ„์ž ๊ตฌ์„ฑ์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ์„ฑ
๋ถ€๋ชจ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์†์„ฑ์„ ์ž์‹์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ๊ฒƒ๋งŒ์„ ์ฃผ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ถ€๋ชจ์—”ํ‹ฐํ‹ฐ์™€ ์ž์‹์—”ํ‹ฐํ‹ฐ์˜ 1:1 ๊ด€๊ณ„ ์ƒ์†๋ฐ›์€ ์ฃผ์‹๋ณ„์ž์†์„ฑ์„ ํƒ€ ์—”ํ‹ฐํ‹ฐ์— ์ฐจ๋‹จ ํ•„์š”
๋ถ€๋ชจ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์†์„ฑ ์ด์™ธ์—, ๋‹ค๋ฅธ ๋ถ€๋ชจ๋กœ ๋ถ€ํ„ฐ ๋ฐ›์€ ์†์„ฑ์„ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์Šค์Šค๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†์„ฑ๊ณผ ํ•จ๊ป˜ ์ฃผ์‹๋ณ„์ž๋กœ ๊ตฌ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ๋Š” 1:M ๊ด€๊ณ„ ๋ถ€๋ชจ์ชฝ์˜ ๊ด€๊ณ„์ฐธ์—ฌ๊ฐ€ ์„ ํƒ๊ด€๊ณ„
์‹๋ณ„์ž ๊ด€๊ณ„๋กœ๋งŒ ๊ด€๊ณ„๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ์กฐ์ธ์กฐ๊ฑด์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๋ฐœ์ž ๋ณต์žก์„ฑ๊ณผ ์˜ค๋ฅ˜๊ฐ€๋Šฅ์„ฑ์„ ์œ ๋ฐœ์‹œํ‚ฌ์ˆ˜ ์žˆ๋Š” ์š”์ธ์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ๋น„์‹๋ณ„์ž ๊ด€๊ณ„๋กœ๋งŒ ๊ด€๊ณ„๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ๋งŽ์€ ์กฐ์ธ์ด ๊ฑธ๋ฆฌ๊ฒŒ ๋˜๊ณ , ๊ทธ์— ๋”ฐ๋ผ ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•˜๊ณ  ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
์‹ค์„ ์œผ๋กœ ํ‘œํ˜„ ์ ์„ ์œผ๋กœ ํ‘œํ˜„

 

6. ์ •๋‹ต :  4

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 3์ฐจ ์ •๊ทœํ™” โ†’ ํ•œ ์—”ํ‹ฐํ‹ฐ ์•ˆ์˜ ๋ชจ๋“  ์ฃผ์‹๋ณ„์ž๊ฐ€ ์•„๋‹Œ ์†์„ฑ๋“ค์€ ์ฃผ์‹๋ณ„์ž์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค. ์†์„ฑ์— ์ข…์†์ ์ธ(์ด์ „์ข…์†) ์†์„ฑ์ด ์žˆ๋‹ค๋ฉด ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. 

 

 

 

7. ์ •๋‹ต :  4

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : ๊ณ„์•ฝ์€ ๊ณ„์•ฝ ๊ทธ๋ฃน์— ์†ํ•˜๊ฑฐ๋‚˜ or ์†ํ•˜์ง€ ์•Š์„์ˆ˜ ์žˆ๋‹ค.

O = or (์žˆ์„์ˆ˜๋„ ์žˆ๊ณ  or ์—†์„์ˆ˜๋„ ์žˆ๋‹ค.)

8. ์ •๋‹ต :  3

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : Range ํŒŒํ‹ฐ์…˜์€ ์ฃผ๋กœ ๋‚ ์งœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ท ๋“ฑํ•˜๊ฒŒ ๋‚˜๋ˆ„์–ด์ ธ์„œ ๋น„์Šทํ•œ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ๋ณด์žฅํ•œ๋‹ค. ๋˜ํ•œ ๋ณด๊ด€ ์ฃผ๊ธฐ์— ๋”ฐ๋ผ์„œ ํ•„์š”์น˜ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋„ ์‰ฝ๊ฒŒ ์ง€์šฐ๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

9. ์ •๋‹ต :  2

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : ์Šˆํผ/์„œ๋ธŒํƒ€์ž…  ๋ฐ์ดํ„ฐ์˜ ํŠน์ง•์€ ๊ณตํ†ต์ ๊ณผ ์ฐจ์ด์ ์„ ๊ณ ๋ คํ•˜์—ฌ ํšจ๊ณผ์ ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰, ๊ณตํ†ต์˜ ๋ถ€๋ถ„์„ ์Šˆํผํƒ€์ž…์œผ๋กœ ๋ชจ๋ธ๋งํ•˜๊ณ  ๊ณตํ†ต์œผ๋กœ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์•„ ๋‹ค๋ฅธ ์—”ํ„ฐํ‹ฐ์™€ ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ์†์„ฑ์— ๋Œ€ํ•ด์„œ๋Š” ๋ณ„๋„์˜ ์„œ๋ธŒ์—”ํ„ฐํ‹ฐ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์—…๋ฌด์˜ ๋ชจ์Šต์„ ์ •ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋ฉด์„œ ๋ฌผ๋ฆฌ์ ์ธ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋กœ ๋ณ€ํ™˜์„ ํ•  ๋•Œ ์„ ํƒ์˜ ํญ์„ ๋„“ํž ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

์Šˆํผ/์„œ๋ธŒ ํƒ€์ž… ๊ด€๊ณ„์˜ ๋ณ€ํ™˜

 

๋ฐ์ดํ„ฐ๋Ÿ‰์ด ์†Œ๋Ÿ‰์ผ ๊ฒฝ์šฐ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ์˜ ์œ ์—ฐ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ 1:1 ๊ด€๊ณ„๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ์šฉ๋Ÿ‰์ด ๋งŽ์•„์ง€๋Š” ๊ฒฝ์šฐ ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์—…๋ฌด์ ์ธ ํŠน์ง•์ด ์„ฑ๋Šฅ์— ๋ฏผ๊ฐํ•œ ๊ฒฝ์šฐ๋Š” ํŠธ๋žœ์žญ์…˜์ด ํ•ด๋‹น ํ…Œ์ด๋ธ”์— ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒ๋˜๋Š”์ง€์— ๋”ฐ๋ผ 3๊ฐ€์ง€ ๋ณ€ํ™˜๋ฐฉ๋ฒ•์„ ์ฐธ์กฐํ•˜์—ฌ ์ƒํ™ฉ์— ๋งž๊ฒŒ ๋ณ€ํ™˜ํ•˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.

 

์Šˆํผ/์„œ๋ธŒํƒ€์ž… ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ๋ณ€ํ™˜

 

10. ์ •๋‹ต :  1

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : ๋ฐ˜์ •๊ทœํ™”๋ž€? (DB์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๊ณ  ์กฐ์ธ์„ ์ค„์ด๋Š” ๊ฒƒ์œผ๋กœ, ๋ฐ˜์ •๊ทœํ™”๋ฅผ ํ†ตํ•ด ์กฐํšŒ ์„ฑ๋Šฅ์€ ์ข‹์•„์ง€์ง€๋งŒ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์œ ์—ฐ์„ฑ์€ ๋‚ฎ์•„์ง€๋ฉฐ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ๊นจ์งˆ ์œ„ํ—˜์ด ์žˆ๋‹ค.)

๋ฐ˜์ •๊ทœํ™”์˜ ๊ธฐ๋ฒ•

  • ํ…Œ์ด๋ธ” ๋ฐ˜์ •๊ทœํ™”: ํ…Œ์ด๋ธ” ๋ณ‘ํ•ฉ/๋ถ„ํ• /์ถ”๊ฐ€
  • ์นผ๋Ÿผ ๋ฐ˜์ •๊ทœํ™”: ์ค‘๋ณต์นผ๋Ÿผ ์ถ”๊ฐ€/ํŒŒ์ƒ์นผ๋Ÿผ ์ถ”๊ฐ€/์ด๋ ฅํ…Œ์ด๋ธ” ์นผ๋Ÿผ์ถ”๊ฐ€/PK์— ์˜ํ•œ ์นผ๋Ÿผ ์ถ”๊ฐ€ ๋“ฑ
  • ๊ด€๊ณ„ ๋ฐ˜์ •๊ทœํ™”: ์ค‘๋ณต๊ด€๊ณ„ ์ถ”๊ฐ€

*ํ…Œ์ด๋ธ”๊ณผ ์นผ๋Ÿผ์˜ ๋ฐ˜์ •๊ทœํ™”๋Š” ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€๋งŒ ๊ด€๊ณ„์˜ ๋ฐ˜์ •๊ทœํ™”๋Š” ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๊นจ๋œจ๋ฆด ์œ„ํ—˜์—†์ด ๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

11. ์ •๋‹ต :  1

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :ํ•ด์„ค :

์„œ๋ธŒ์ฟผ๋ฆฌ๋ž€ ํ•˜๋‚˜์˜ SQL๋ฌธ ์•ˆ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๋„ ๋‹ค๋ฅธ SQL๋ฌธ์„ ๋งํ•œ๋‹ค.

์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๋ฉ”์ธ์ฟผ๋ฆฌ์˜ ์ปฌ๋Ÿผ์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฉ”์ธ์ฟผ๋ฆฌ๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์ปฌ๋Ÿผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

์งˆ์˜ ๊ฒฐ๊ณผ์— ์„œ๋ธŒ์ฟผ๋ฆฌ ์ปฌ๋Ÿผ์„ ํ‘œ์‹œํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์กฐ์ธ ๋ฐฉ์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜, ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ ๋“ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉ์‹œ ์ฃผ์˜์‚ฌํ•ญ1. ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์„œ ์‚ฌ์šฉํ•œ๋‹ค.2. ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๋‹จ์ผํ–‰(Single row) ๋˜๋Š” ๋ณต์ˆ˜ํ–‰ (Multiple row)๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹จ์ผํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜๋“œ์‹œ 1๊ฑด ์ดํ•˜์—ฌ์•ผ ํ•˜๊ณ  ๋ณต์ˆ˜ํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ์„œ๋ธŒ์ปค๋ฆฌ์˜ ๊ฒฐ๊ณผ ๊ฑด์ˆ˜์™€ ์ƒ๊ด€์—†๋‹ค.

 

12. ์ •๋‹ต :  2

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

13. ์ •๋‹ต :  2

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 

14. ์ •๋‹ต :  2

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

15. ์ •๋‹ต :  3

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 

16. ์ •๋‹ต :  1

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 

17. ์ •๋‹ต :  3

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 


18. ์ •๋‹ต :  4

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 

 

19. ์ •๋‹ต :  4

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 

20. ์ •๋‹ต :  1

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

21. ์ •๋‹ต :  4

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

ROWS |  RANGE BETWEEN
UNBOUNDED PRECEDING | CURRENT ROW | VALUE_EXPR PRECEDING/FOLLOWING
AND
UNBOUNDED FOLLOWING | CURRENT ROW | VALUE_EXPR PRECEDING/FOLLOWING
  • ROWS : ๋ฌผ๋ฆฌ์ ์ธ ROW ๋‹จ์œ„๋กœ ํ–‰ ์ง‘ํ•ฉ์„ ์ง€์ • ( ํ˜„์žฌํ–‰์„ ๊ธฐ์ค€์œผ๋กœ ๋ช‡๊ฐœ์˜ ํ–‰์„ ํฌํ•จํ•˜๋Š”์ง€ )
  • RANGE : ๋…ผ๋ฆฌ์ ์ธ ์ƒ๋Œ€๋ฒˆ์ง€๋กœ ํ–‰ ์ง‘ํ•ฉ์„ ์ง€์ • ( ํ˜„์žฌํ–‰์„ ๊ธฐ์ค€์œผ๋กœ ์–ด๋–ค ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ํฌํ•จํ•˜๋Š”์ง€ )
  • BETWEEN ~ AND ์ ˆ : ์œˆ๋„์šฐ์˜ ์‹œ์ž‘๊ณผ ๋ ์œ„์น˜๋ฅผ ์ง€์ •
  • UNBOUNDED PRECEDING : PARTITION์˜ ์ฒซ ๋ฒˆ์งธ ๋กœ์šฐ์—์„œ ์œˆ๋„์šฐ๊ฐ€ ์‹œ์ž‘
  • UNBOUNDED FOLLOWING : PARTITION์˜ ๋งˆ์ง€๋ง‰ ๋กœ์šฐ์—์„œ ์œˆ๋„์šฐ๊ฐ€ ์‹œ์ž‘
  • CURRENT ROW : ์œˆ๋„์šฐ์˜ ์‹œ์ž‘์ด๋‚˜ ๋ ์œ„์น˜๊ฐ€ ํ˜„์žฌ ๋กœ์šฐ

 

22. ์ •๋‹ต :  4

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

 

23. ์ •๋‹ต :  2

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 1 PRECEDING / 1 FOLLOWING - ํ˜„์žฌํ–‰์„ ๊ธฐ์ค€์œผ๋กœ ์ด์ „ํ–‰+ํ˜„์žฌ+๋‹ค์Œํ–‰ ํ•ฉ๊ณ„๋ฅผ ํ‘œ์‹œ

 

- ROWS : ๋ฌผ๋ฆฌ์ ์ธ ROW ๋‹จ์œ„๋กœ ํ–‰ ์ง‘ํ•ฉ์„ ์ง€์ •ํ•œ๋‹ค.(ํ˜„์žฌ ํ–‰์˜ ์•ž ๋’ค ๊ฑด์ˆ˜)
- RANGE : ํ˜„์žฌ ํ–‰์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์•ž ๋’ค ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.
- BETWEEN ~ AND ์ ˆ : ์œˆ๋„์šฐ์˜ ์‹œ์ž‘๊ณผ ๋ ์œ„์น˜๋ฅผ ์ง€์ •ํ•œ๋‹ค.
- UNBOUNDED PRECEDING : PARTITION์˜ ์ฒซ ๋ฒˆ์งธ ๋กœ์šฐ์—์„œ ์œˆ๋„์šฐ๊ฐ€ ์‹œ์ž‘ํ•œ๋‹ค.
- UNBOUNDED FOLLOWING : PARTITION์˜ ๋งˆ์ง€๋ง‰ ๋กœ์šฐ์—์„œ ์œˆ๋„์šฐ๊ฐ€ ์‹œ์ž‘ํ•œ๋‹ค.
- CURRENT ROW : ์œˆ๋„์šฐ์˜ ์‹œ์ž‘์ด๋‚˜ ๋ ์œ„์น˜๊ฐ€ ํ˜„์žฌ ๋กœ์šฐ ์ด๋‹ค.

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป์œˆ๋„์šฐ ํ•จ์ˆ˜(WINDOW FUNCTION) ๋ž€? 

- ํ–‰๊ณผ ํ–‰๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์‰ฝ๊ฒŒ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ํ•จ์ˆ˜

- ์œˆ๋„์šฐ์ ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด PARTITION BY ์ ˆ์— ๋ช…์‹œ๋œ ๊ทธ๋ฃน์„ ์ข€ ๋” ์„ธ๋ถ€์ ์œผ๋กœ ๊ทธ๋ฃนํ™” ํ• ์ˆ˜์žˆ๋‹ค.

[ ์ž‘์„ฑ๋ฒ• ์˜ˆ์ œ ]
SELECT SUM(SAL)
       OVER -- ํ•„์ˆ˜ ํ‚ค์›Œ๋“œ
       ([PARTITION BY ์นผ๋Ÿผ] -- ๊ทธ๋ฃน ์ปฌ๋Ÿผ๋ช…
          [ORDER BY ์ ˆ] -- ์ •๋ ฌ ์ปฌ๋Ÿผ๋ช…
          [WINDOWING ์ ˆ])FROM ํ…Œ์ด๋ธ” ๋ช…;

 

- WINDOW_FUNCTION

๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ํ•จ์ˆ˜๋„ ์žˆ๊ณ , ๋ถ„์„ํ•จ์ˆ˜์ค‘์—์„œ ์ผ๋ถ€(AVG, COUNT, SUM, MAX, MIN)๋งŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ARGUMENTS (์ธ์ˆ˜)

๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ํ•จ์ˆ˜๋„ ์žˆ๊ณ ,

- PARTITION BY ์ ˆ

 ์ „์ฒด ์ง‘ํ•ฉ์„ ๊ธฐ์ค€์— ์˜ํ•ด ์†Œ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.(์„ธ๋ถ€์ ์œผ๋กœ ๊ทธ๋ฃนํ•‘)

- ORDER BY ์ ˆ

์–ด๋–ค ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์ˆœ์œ„๋ฅผ ์ง€์ •ํ• ์ง€์— ๋Œ€ํ•ด ๊ธฐ์ˆ ํ•œ๋‹ค.

- WINDOWING ์ ˆ 

ํ•จ์ˆ˜์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ํ–‰ ๊ธฐ์ค€์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ง€์ •ํ•œ๋‹ค. ( ์˜ค๋ผํด ์ง€์› )

ROWS  โ†’ ํ˜„์žฌ ํ–‰์˜ ์•ž ๋’ค ๊ฑด์ˆ˜๋ฅผ ์˜๋ฏธ (๋ฌผ๋ฆฌ์ )

RANGE โ†’ ํ˜„์žฌ ํ–‰์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์•ž ๋’ค ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ํ‘œ์‹œ (๋…ผ๋ฆฌ์ )

ROWS, RANGE ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

--[BETWEEN TYPE]
ROWS | RANGE BETWEEN
UNBOUNDED PRECEDING | 
CURRENT ROW | VALUE_EXPR PRECEDING/FOLLOWING 
AND
UNBOUNDED FOLLOWING |
CURRENT ROW | VALUE_EXPR PRECEDING/FOLLOWING

--[NOT BETWEEN]
ROWS | RANGE
UNBOUNDED PRECEDING |
CURRENT ROW | VALUE_EXPR PRECEDING

--[DEFAULT]
RANGE BETWEEN UNBOUNDED PRECEDING
AND
CURRENT ROW

-- UNBOUNDED : ํ•œ๊ณ„๋ฅผ ๋‘์ง€ ์•Š๊ณ , ํ•ด๋‹น ํŒŒํ‹ฐ์…˜์˜ ๋๊นŒ์ง€๋ฅผ ์˜๋ฏธ
-- PRECEDING : ํ˜„์žฌํ–‰์—์„œ ์ด์ „ ํ–‰์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
-- FOLLOWING : ํ˜„์žฌํ–‰์—์„œ ๋‹ค์Œ ํ–‰์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. (BETWEEN ~ AND ~ ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•จ)

[RANGE, ROWS์—์„œ ์‚ฌ์šฉํ•˜๋Š” UNBOUNDED PRECEDING, CURRENT ROW, UNBOUNDED FOLLOWING ]

1. UNBOUNDED PRECEDING / UNBOUNDED FOLLOWING 

- ์ฒ˜์Œํ–‰๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ํ–‰ ๊ฒฐ๊ณผ๊นŒ์ง€ ๊ณ„์‚ฐํ•œ ํ•ฉ๊ณ„๋ฅผ ํ‘œ์‹œํ•ด์ค๋‹ˆ๋‹ค 

2. UNBOUNDED PRECEDING / CURRENT ROW

- ์ฒ˜์Œํ–‰๋ถ€ํ„ฐ ํ˜„์žฌํ–‰ ๊ฒฐ๊ณผ๊นŒ์ง€ ๊ณ„์‚ฐํ•œ ํ•ฉ๊ณ„๋ฅผ ํ‘œ์‹œํ•ด์ค๋‹ˆ๋‹ค 

3. CURRENT ROW / UNBOUNDED FOLLOWING

- ํ˜„์žฌํ–‰๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ํ–‰ ๊ฒฐ๊ณผ๊นŒ์ง€ ๊ณ„์‚ฐํ•œ ํ•ฉ๊ณ„๋ฅผ ํ‘œ์‹œํ•ด์ค๋‹ˆ๋‹ค 

4. 1 PRECEDING / 1 FOLLOWING

- ํ˜„์žฌํ–‰์— ์ด์ „ํ–‰+๋ณธ์ธ+๋‹ค์Œํ–‰ ํ•ฉ๊ณ„๋ฅผ ํ‘œ์‹œํ•ด์ค๋‹ˆ๋‹ค

 

๐Ÿ’ก์•Œ์•„๋‘๊ธฐ

๊ทธ๋ฃน ๋‚ด ํ–‰ ์ˆœ์„œ ํ•จ์ˆ˜

 

FIRST_VALUE -  ๊ฐ€์žฅ ๋จผ์ € ๋‚˜์˜จ ๊ฐ’, MIN ํ•จ์ˆ˜์™€ ๊ฐ™๋‹ค

LAST_VALUE - ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋‚˜์˜จ ๊ฐ’, MAX ํ•จ์ˆ˜์™€ ๊ฐ™๋‹ค

 

LAG : ์ด์ „ ๊ฐ’

- LAG(SAL, 2, 0)

์ฒซ๋ฒˆ์งธ : ๋Œ€์ƒ ์ปฌ๋Ÿผ๋ช…

๋‘๋ฒˆ์งธ : ๋ช‡ ๋ฒˆ์งธ ์ด์ „ ํ–‰์„ ๊ฐ€์ ธ์˜ฌ ๊ฑด์ง€ ๊ฒฐ์ •(DEFAULT๋Š” 1)

์„ธ๋ฒˆ์งธ : NULL์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค(NVL, ISNULL๊ณผ ๊ฐ™์Œ)

 

LEAD : ๋‹ค์Œ ๊ฐ’

- LEAD(SAL, 2, 0)

์ฒซ๋ฒˆ์งธ : ๋Œ€์ƒ ์ปฌ๋Ÿผ๋ช…

๋‘๋ฒˆ์งธ : ๋ช‡ ๋ฒˆ์งธ ๋‹ค์Œ ํ–‰์„ ๊ฐ€์ ธ์˜ฌ ๊ฑด์ง€ ๊ฒฐ์ •(DEFAULT๋Š” 1)

์„ธ๋ฒˆ์งธ : NULL์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค(NVL, ISNULL๊ณผ ๊ฐ™์Œ)

 

RATIO_TO_REPORT - ํŒŒํ‹ฐ์…˜ ๋‚ด ์ „์ฒด SUM()๊ฐ’์— ๋Œ€ํ•œ ํ–‰๋ณ„ ์นผ๋Ÿผ ๊ฐ’์˜ ๋ฐฑ๋ถ„์œจ์„ ์†Œ์ˆ˜์ ์œผ๋กœ ๊ตฌํ•œ๋‹ค.

PERCENT_RANK - ๋จผ์ €๋‚˜์˜ค๋Š”๊ฒƒ์„ 0, ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋‚˜์˜ค๋Š” ๊ฒƒ์„ 1๋กœ ํ•˜์—ฌ ๊ฐ’์ด ์•„๋‹Œ ํ–‰์˜ ์ˆœ์„œ๋ณ„ ๋ฐฑ๋ถ„์œจ์„ ๊ตฌํ•œ๋‹ค.

CUME_DIST - ํŒŒํ‹ฐ์…˜๋ณ„ ์œˆ๋„์šฐ์˜ ์ „์ฒด๊ฑด์ˆ˜์—์„œ ํ˜„์žฌ ํ–‰๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฑด์ˆ˜์— ๋Œ€ํ•œ ๋ˆ„์  ๋ฐฑ๋ถ„์œจ์„ ๊ตฌํ•œ๋‹ค.

NTILE - ํŒŒํ‹ฐ์…˜๋ณ„ ์ „์ฒด ๊ฑด์ˆ˜๋ฅผ ARGUMENT ๊ฐ’์œผ๋กœ N๋“ฑ๋ถ„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ•œ๋‹ค.(์˜ˆ: ์ˆ˜๋Šฅ๋“ฑ๊ธ‰)

 

 

24. ์ •๋‹ต :  4

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

 

25. ์ •๋‹ต :  2

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

26. ์ •๋‹ต :  1

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 

27. ์ •๋‹ต :  3

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

๋กค(Role)

- ์‚ฌ์šฉ์ž์—๊ฒŒ ํ—ˆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ๋“ค์˜ ์ง‘ํ•ฉ

- ๋กค์„ ์ด์šฉํ•˜๋ฉด ๊ถŒํ•œ ๋ถ€์—ฌ์™€ ํšŒ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ๋กค์€ CREATE ROLE ๊ถŒํ•œ์„ ๊ฐ€์ง„ USER ์— ์˜ํ•ด์„œ ์ƒ์„ฑ๋œ๋‹ค.

- ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ROLE์„ ACCESS ํ•  ์ˆ˜ ์žˆ๊ณ , ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ™์€ ROLE ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

- ์‹œ์Šคํ…œ ๊ถŒํ•œ์„ ๋ถ€์—ฌ & ์ทจ์†Œํ•  ๋•Œ์™€ ๋™์ผํ•œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€์—ฌํ•˜๊ณ  ์ทจ์†Œํ•œ๋‹ค.

- ์‚ฌ์šฉ์ž๋Š” ROLE์— ROLE์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

- Oracle DB๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ CONNECT, RESOURCE, DBA ROLE์ด ์ œ๊ณต๋œ๋‹ค.

 

-- 1. ROLE ์ƒ์„ฑํ•˜๊ธฐ

SQL> CREATE ROLE manager;

-- 2. ROLE์— ๊ถŒํ•œ ๋ถ€์—ฌํ•˜๊ธฐ

SQL> GRANT CREATE SESSION, CREATE TABLE TO manager;

-- 3. ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ ROLE์„ USER ๋‚˜ ROLE ์— ๋ถ€์—ฌํ•˜๊ธฐ

SQL> GRANT manager TO scott, test; // ์—ฌ๊ธฐ์„œ๋Š” scott, test ๋ผ๋Š” ์œ ์ €์— ๋ถ€์—ฌํ•จ.

 

28. ์ •๋‹ต :  1

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : ๋น„์ ˆ์ฐจ์  ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(DML)๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์Šจ ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š”์ง€๋งŒ ๋ช…์„ธํ•œ๋‹ค.

 

๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด

- ์ ˆ์ฐจ์  ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(procedural DML) : ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๊ณ  ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ช…์„ธํ•จ
- ๋น„์ ˆ์ฐจ์  ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(nonprocedural DML) : ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š”์ง€๋งŒ ๋ช…์„ธํ•จ
- ํ˜ธ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ ์†์— ์‚ฝ์ž…๋˜์–ด ์‚ฌ์šฉ๋˜๋Š” DML๋ช…๋ น์–ด๋“ค์„ ๋ฐ์ดํ„ฐ ๋ถ€์†์–ด(Data Sub Language)๋ผ๊ณ  ํ•œ๋‹ค.

๋ช…๋ น์–ด์˜ ์ข…๋ฅ˜ ๋ช…๋ น์–ด ์„ค๋ช…
๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด
(DML : Data Manipulation Language)
SELECT ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋“ค์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์œผ๋กœ RETRIEVE ๋ผ๊ณ ๋„ ํ•œ๋‹ค.
INSERT
UPDATE
DELETE
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์— ๋“ค์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๋ณ€ํ˜•์„ ๊ฐ€ํ•˜๋Š” ์ข…๋ฅ˜์˜ ๋ช…๋ น์–ด๋“ค์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ํ–‰์„ ์ง‘์–ด๋„ฃ๊ฑฐ๋‚˜, ์›ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ๋“ค์˜ ๋ช…๋ น์–ด๋“ค์„ DML์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
๋ฐ์ดํ„ฐ ์ •์˜์–ด
(DDL : Data Definition Language)
CREATE
ALTER
DROP
RENAME
ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ช…๋ น์–ด๋“ค๋กœ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑ, ๋ณ€๊ฒฝ, ์‚ญ์ œ ๋ฐ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ๊ด€๋ จ๋œ ๋ช…๋ น์–ด๋“ค์„ DDL์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
๋ฐ์ดํ„ฐ ์ œ์–ด์–ด
(DCL : Data Control
GRANT
REVOKE
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ณ  ๊ฐ์ฒด๋“ค์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ถŒํ•œ์„ ์ฃผ๊ณ  ํšŒ์ˆ˜ํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ DCL์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด
(TCL : Transaction Control Language
COMMIT
ROLLBACK
๋…ผ๋ฆฌ์ ์ธ ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ๋ฌถ์–ด์„œ DML์— ์˜ํ•ด ์กฐ์ž‘๋œ ๊ฒฐ๊ณผ๋ฅผ ์ž‘์—…๋‹จ์œ„(ํŠธ๋žœ์žญ์…˜) ๋ณ„๋กœ ์ œ์–ดํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ๋งํ•œ๋‹ค.

 

 

29. ์ •๋‹ต :  4

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 

30. ์ •๋‹ต :  2

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

31. ์ •๋‹ต :  1

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 

32. ์ •๋‹ต :  3

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

33. ์ •๋‹ต :  3

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

34. ์ •๋‹ต :  1

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 

35. ์ •๋‹ต :  1

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

SQL> SELECT B. *FROM EMP_A A, EMP_B B  WHERE A.ENO = B.ENO AND B.SALARY >= ANY A.SALARY;

ENO	   MNO     SALARY
------------------------
B1	   C1      2000
B3	   C3      10000
B5	   C5      6000

 

36. ์ •๋‹ต :  1, 4

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

 

37. ์ •๋‹ต :  4

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

38. ์ •๋‹ต :  2

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

39. ์ •๋‹ต :  1

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :  

 

 

40. ์ •๋‹ต :  4

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

41. ์ •๋‹ต :  3

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : CUBE ํ•จ์ˆ˜๋Š” ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์†Œ๊ณ„์™€ ํ•ฉ๊ณ„๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

SQL> SELECT DNAME, JOB, COUNT(*) "TOTAL EMP", SUM(SAL) "TOTAL SAL" FROM SQLD_41_1 A, SQLD_41_2 B WHERE A.DEPTNO = B.DEPTNO GROUP BY CUBE(DNAME, JOB);

DNAME	   JOB	       TOTAL EMP  TOTAL SAL
---------- ---------- ---------- ----------
			      14      29026
	   clerk	       4       4150
	   analyst	       2       6000
	   manager	       3       8276
	   salesman	       4       5600
	   president	       1       5000
sales			       6       9400
sales	   clerk	       1	950
sales	   manager	       1       2850
sales	   salesman	       4       5600
research		       5      10876
research   clerk	       2       1900
research   analyst	       2       6000
research   manager	       1       2976
accounting		       3       8750
accounting clerk	       1       1300
accounting manager	       1       2450
accounting president	       1       5000

18 rows selected.

 

 

42. ์ •๋‹ต :  4

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

 

43. ์ •๋‹ต : 1

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 

- - - - - - - - ์ฃผ๊ด€์‹ - - - - - - - -

 

44. ์ •๋‹ต :  2, 9

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 

45. ์ •๋‹ต :  1, 3

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

NTILE ํ•จ์ˆ˜๋ž€? ํ–‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃน๋ณ„๋กœ ๋‚˜๋ˆ„์–ด ์ฐจ๋ก€๋Œ€๋กœ ํ–‰ ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ถ„์„ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

[๊ตฌ๋ฌธ ํ˜•์‹]

SELECT NTILE([๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆŒ ์ •์ˆ˜]) OVER (PARTITION BY [์ปฌ๋Ÿผ1] ORDER BY [์ปฌ๋Ÿผ2])

[ํŠน์ง•]

1.์ „์ฒด ํ–‰ ๋ฐ์ดํ„ฐ ์ˆ˜๋ฅผ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ ์กด์žฌํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ๊ทธ๋ฃน๋ถ€ํ„ฐ ๋‚˜๋จธ์ง€๊ฐ€ ์•ˆ๋‚จ์„ ๋•Œ๊นŒ์ง€ 1์”ฉ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

(์˜ˆ : ์ „์ฒดํ–‰์ด 12๊ฐœ๊ณ  ๊ทธ๋ฃน์ด 5์ผ ๋•Œ 12๋ฅผ 5๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 2์ด๋ฏ€๋กœ 1~5๋ฒˆ ๊ทธ๋ฃน์— 2ํ–‰์„ ๋ถ€์—ฌํ•˜๊ณ  1,2๋ฒˆ ๊ทธ๋ฃน์— 1ํ–‰์”ฉ ์ถ”๊ฐ€ ๋ถ€์—ฌํ•จ.)

2.PARTITION BY๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์ „์ฒด ํ–‰์— ๋Œ€ํ•ด์„œ ๊ทธ๋ฃนํ™”๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ PARTITION BY๋ฅผ ์ง€์ •ํ•˜๋ฉด ํ•ด๋‹น ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ ๊ทธ๋ฃนํ™”๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ ํ–‰ ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

 

46. ์ •๋‹ต :  2

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

 

47. ์ •๋‹ต :  2, '0'

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

48. ์ •๋‹ต :  Nested Loop Join

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 

49. ์ •๋‹ต :  3, 2

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค : 

 

 

50. ์ •๋‹ต :  GROUPING SETS(COL1, (COL1, COL2))

๐Ÿ“–๋ฌธ์ œํ™•์ธ

 

ํ•ด์„ค :

 

 

๋ฐ˜์‘ํ˜•