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

[SQLD] 37ํšŒ ๊ธฐ์ถœ๋ฌธ์ œ ( 50๋ฌธ์ œ / ์ •๋‹ต, ํ•ด์„คํฌํ•จ )

by yunamom 2022. 9. 5.
728x90
๋ฐ˜์‘ํ˜•
โณ๋‚จ์€์‹œ๊ฐ„ : 89๋ถ„19์ดˆ

 

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


๋ฌธ์ œ 1. ๋‹ค์Œ์—์„œ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์€ ER๋ชจ๋ธ ์ค‘ ์–ด๋–ค ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์„ค๋ช…์ธ๊ฐ€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ๋ชจ๋“  ๋ฆด๋ ˆ์ด์…˜(Relation)์€ ์›์ž๊ฐ’(Atomic)์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
2) ์–ด๋–ค ๋ฆด๋ ˆ์ด์…˜(Relation)์—์„œ ์†์„ฑ ๊ฐ’์ด ๊ฐ€์งˆ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
3) ์‹ค์ œ ์†์„ฑ๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
4) ์†์„ฑ๋ช…๊ณผ ๋ฐ˜๋“œ์‹œ ๋™์ผํ•  ํ•„์š”๋Š” ์—†๋‹ค.
1) ์นด๋””๋‚ ๋ฆฌํ‹ฐ(Cardinality)

2) ๋„๋ฉ”์ธ(Domain)

3) ์ธ์Šคํ„ด์Šค(Instance)

4) ์ฐจ์ˆ˜(Degree)

 

๋ฌธ์ œ 2. ๋‹ค์Œ ์ค‘์—์„œ ๋„๋ฉ”์ธ(Domain) ์—๋Œ€ํ•œ ํŠน์ง•์œผ๋กœ ์˜ณ์ง€ ์•Š์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

 
1) ๋ฆด๋ ˆ์ด์…˜์˜ ์†์„ฑ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ํฌ๊ธฐ์ด๋‹ค.

2) ์†์„ฑ์— ๋Œ€ํ•˜์—ฌ NOT NULL ์ œ์•ฝ์‚ฌํ•ญ์„ ์„ค์ •ํ•˜์—ฌ NULL ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

3) ์†์„ฑ์— ๊ฐ’์„ ์ž…๋ ฅ ํ•  ๋•Œ CHECK ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์„œ ์ž…๋ ฅ ๊ฐ’์„ ๊ฒ€์‚ฌํ•œ๋‹ค.

4) ํ•˜๋‚˜์˜ ๋ฆด๋ ˆ์ด์…˜๊ณผ ๊ด€๊ณ„๋œ ๋‹ค๋ฅธ ๋ฆด๋ ˆ์ด์…˜์˜ FK(Foreign key) ์ œ์•ฝ์กฐ๊ฑด์ด๋‹ค.

 

๋ฌธ์ œ 3. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ ์Šˆํผ/์„œ๋ธŒํƒ€์ž… ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ๋ณ€ํ™˜ํƒ€์ž…์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ณ์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

1) One To One์ด๋ž€ ๊ฐœ๋ณ„๋กœ ๋ฐœ์ƒ๋˜๋Š” ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด์„œ๋Š” ๊ฐœ๋ณ„ ํ…Œ์ด๋ธ”๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ํ…Œ์ด๋ธ”์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง„๋‹ค.

2) Plus Type์€ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์กฐ์ธ(Join)์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

3) Plus Type์€ ์Šˆํผ+์„œ๋ธŒํƒ€์ž… ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ๋กœ ์กฐ์ธ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•˜์—ฌ Super Type๊ณผ Sub Type๋ณ€ํ™˜ ์‹œ์— ํ•ญ์ƒ ์‚ฌ์šฉ๋œ๋‹ค.

4) One To One type์€ ์กฐ์ธ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ๊ฐ€ ํŽธ๋ฆฌํ•˜๋‹ค.


๋ฌธ์ œ 4. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ๋ง์— ๋Œ€ํ•œ ํŠน์ง•์œผ๋กœ ์˜ณ์ง€ ์•Š์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ๋‚ด๋ถ€ํ™”

2) ์ถ”์ƒํ™”

3) ๋‹จ์ˆœํ™”

4) ๋ช…ํ™•ํ™”

 

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

[์‹œ๋‚˜๋ฆฌ์˜ค]
ํ•œ๋ฆผ๋Œ€ํ•™๊ต ์„ฑ์‹ฌ๋ณ‘์›์€ ์ƒ๊ธ‰์ข…ํ•ฉ๋ณ‘์›์ด๊ณ  ๊ตญ๋‚ด์—๋Š” ์•ฝ 43๊ฐœ์˜ ์ƒ๊ธ‰์ข…ํ•ฉ๋ณ‘์›์ด ์žˆ๋‹ค. 
์ƒ๊ธ‰ ์ข…ํ•ฉ๋ณ‘์›์—์„œ ์ง„๋ฃŒ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” ์—์•ฝ์„ ํ•ด์•ผ ํ•œ๋‹ค.
์˜ˆ์•ฝ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ™˜์ž๋กœ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋Š”๋ฐ, ํ™˜์ž ๋“ฑ๋ก์„ ์œ„ํ•ด์„œ๋Š” 
ํ™˜์ž์ด๋ฆ„, ์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ, ๋‚˜์ด, ์ตœ๊ทผ ๋ณ‘๋ ฅ๋“ฑ์˜ ์ •๋ณด๋ฅผ ํ•œ๋ฆผ๋Œ€ํ•™๊ต ์„ฑ์‹ฌ๋ณ‘์› ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•ด์„œ ์ž…๋ ฅํ•ด์•ผํ•œ๋‹ค.
1) ๋‚˜์ด

2) ํ™˜์ž

3) ์ด๋ฆ„

4) ์ฃผ์†Œ

 

๋ฌธ์ œ 6. ๋‹ค์Œ ์•„๋ž˜์˜ ์„ค๋ช…์— ํ•ด๋‹นํ•˜๋Š” ์†์„ฑ์˜ ์ข…๋ฅ˜๋Š” ๋ฌด์—‡์ธ๊ฐ€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

ABC ์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ์€ ๋งค์ผ ๊ณ ๊ฐ๋“ค์˜ ์ฃผ๋ฌธ์ •๋ณด๋ฅผ ์ฃผ๋ฌธ ๋ฆด๋ ˆ์ด์…˜์— ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋งค์ผ 24์‹œ์— ์ฃผ๋ฌธ ๋ฆด๋ ˆ์ด์…˜์— ์žˆ๋Š” ๊ธˆ์•ก์„ ์กฐํšŒํ•˜์—ฌ ์ผ๋ณ„ ์ฃผ๋ฌธํ•ฉ๊ณ„ ํ…Œ์ด๋ธ”์— ์ƒํ’ˆ๋ณ„, ์ผ๋ณ„, ์ฃผ๋ฌธํ•ฉ๊ณ„ ๊ธˆ์•ก์„ ๋ณด๊ด€ํ•œ๋‹ค.
์ด๋•Œ ์ฃผ๋ฌธ ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธˆ์•ก ์†์„ฑ์— ์˜ํ•ด์„œ ๋ฐœ์ƒ๋œ ์ฃผ๋ฌธํ•ฉ๊ณ„ ์†์„ฑ์€ ๋ฌด์—‡์ด๋ผ๊ณ  ํ•˜๋Š”๊ฐ€?
๋˜ํ•œ ์ฃผ๋ฌธํ•ฉ๊ณ„ ์†์„ฑ์€ ๊ธˆ์•ก์†์„ฑ๊ณผ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค.
1) ํŒŒ์ƒ์†์„ฑ

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

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

4) ์—ฐ๊ด€์†์„ฑ

 

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

 



1) ํ•˜๋‚˜์˜ UserID๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ GroupID๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.

2) GROUP ๋ฆด๋ ˆ์ด์…˜๊ณผ ACCOUNT ๋ฆด๋ ˆ์ด์…˜์€ ์‹๋ณ„๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค.

3) GROUP ๋ฆด๋ ˆ์ด์…˜์€ ํ•œ ๋ช…์˜ UserID๋„ ์—†์„ ์ˆ˜ ์žˆ๋‹ค.

4) GROUP ๋ฆด๋ ˆ์ด์…˜์€ ์—ฌ๋Ÿฌ ๋ช…์˜ UserID๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฌธ์ œ 8. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ ์—”ํ„ฐํ‹ฐ ๊ฐ„์˜ ๊ด€๊ณ„์—์„œ 1:1, 1:M ๊ณผ ๊ฐ™์ด ๊ด€๊ณ„์˜ ๊ธฐ์ˆ˜์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ๊ด€๊ณ„๋ช…(Relationship Membership)

2) ๊ด€๊ณ„์ฐจ์ˆ˜(Relationship Degree/Car-dinality)

3) ๋„๋ฉ”์ธ(Domain)

4) ๊ด€๊ณ„์ •์˜(Relationship Definitoin)

 

๋ฌธ์ œ 9. ๋‹ค์Œ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ๋ง ์‹œ์— ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•œ ๋ชจ๋ธ๋ง ํ™œ๋™์ด๋‹ค. ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ๋ง ๋‹จ๊ณ„์—์„œ ๊ฐ€์žฅ ์ฒ˜์Œ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๊ฒƒ๊ณผ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

๊ฐ€. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ๋ง ์‹œ์— ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
๋‚˜. ํ…Œ์ด๋ธ”์—์„œ ๋ณด๊ด€ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰๊ณผ ํŠธ๋žœ์žญ์…˜์˜ ์œ ํ˜•์— ๋”ฐ๋ผ์„œ ๋ฐ˜์ •๊ทœํ™”๋ฅผ ํ•œ๋‹ค.
๋‹ค. ํŠธ๋žœ์žญ์…˜์˜ ์œ ํ˜•์„ ๋ถ„์„ํ•œ๋‹ค.
๋ผ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ „์ฒด ์šฉ๋Ÿ‰์„ ์‚ฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.
๋งˆ. ์„ฑ๋Šฅ๊ด€์ ์—์„œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๊ฒ€์ฆํ•˜๊ณ  ํ™•์ธํ•œ๋‹ค.
๋ฐ”. ๊ธฐ๋ณธํ‚ค์™€ ์™ธ๋ž˜ํ‚ค๋ฅผ ์กฐ์ •ํ•˜๊ฑฐ๋‚˜, ์ˆ˜ํผํƒ€์ž…๊ณผ ์„œ๋ธŒํƒ€์ž…์„ ์กฐ์ •ํ•œ๋‹ค.
1) ๊ฐ€, ๋‚˜

2) ๋‹ค, ๋งˆ

3) ๋‹ค, ๋ผ

4) ๊ฐ€, ๋งˆ

 

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

๊ฐ€. ์‡ผํ•‘๋ชฐ ์‚ฌ์ดํŠธ์—์„œ๋Š” ํšŒ์›๋ฒˆํ˜ธ๊ฐ€ ์‡ผํ•‘๋ชฐ ์‚ฌ์ดํŠธ๋ฅผ ์šด์˜ํ•  ๋•Œ ์ž์ฃผ ์ด์šฉ๋˜๋Š” ์†์„ฑ์ด๋ฏ€๋กœ ์ฃผ์‹๋ณ„์ž๋กœ ์ง€์ •ํ•œ๋‹ค.
๋‚˜. ์—”ํ„ฐํ‹ฐ ๋‚ด์—์„œ ๊ณ ๊ฐ ๋ฆฌ์ŠคํŠธ, ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ ๋“ฑ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์ฃผ์‹๋ณ„์ž๋กœ ์ง€์ •ํ•œ๋‹ค.
๋‹ค. ์ฃผ์‹๋ณ„์ž๋กœ ์ง€์ •ํ•  ๋•Œ ์ž์ฃผ๋ณ€๊ฒฝ ๋˜๋Š” ์†์„ฑ์„ ์ง€์ •ํ•œ๋‹ค.
๋ผ. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์†์„ฑ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ณตํ•ฉ์†์„ฑ์˜ ๊ฒฝ์šฐ ์ฃผ์‹๋ณ„์ž์— ๋„ˆ๋ฌด ๋งŽ์€ ์†์„ฑ์ด ํฌํ•จ๋˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค.
1) ๊ฐ€, ๋‚˜

2) ๊ฐ€, ๋ผ

3) ๋‚˜, ๋ผ


4) ๊ฐ€, ๋‹ค

 

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

1) ํ•ด์‹œ์กฐ์ธ์€ ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ” ๊ฐ„์— ์กฐ์ธ์„ ํ•  ๋•Œ ๋ฒ”์œ„๊ฒ€์ƒ‰์ด ์•„๋‹Œ ๋™๋“ฑ์กฐ์ธ(EQUI-Join)์— ์ ํ•ฉํ•œ ๋ฐฉ์‹์ด๋‹ค.

2) ์ž‘์€ ํ…Œ์ด๋ธ”(Build Input)์„ ๋จผ์ € ์ฝ์–ด์„œ Hash Area์— ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํฐ ํ…Œ์ด๋ธ”๋กœ Hash Area๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ณผ๋‹คํ•œSort๊ฐ€ ์œ ๋ฐœ ๋˜์–ด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค.

3) ์˜จ๋ผ์ธ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ(OLTP)์— ์œ ์šฉํ•˜๋‹ค.

4) ํ•ด์‹œ์กฐ์ธ์€ ์ˆ˜ํ–‰ ๋นˆ๋„๊ฐ€ ๋‚ฎ๊ณ  ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋Œ€์šฉ๋Ÿ‰ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์กฐ์ธ์„ ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

 

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

1) Nested Loop Join์€ OLTP ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ธํ•  ๋•Œ ๋จผ์ € ๋‚˜์˜ค๋Š” ํ…Œ์ด๋ธ”์˜ ์„ ํƒ๋„๊ฐ€ ๋‚ฎ์€ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค.

2) Sort Merge Join์€ ์˜ค์ง ๋™๋“ฑ Join(Equi Join)์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

3) Hash Join์€ ๊ฒฐ๊ณผ ํ–‰์˜ ์ˆ˜๊ฐ€ ํฐ ํ…Œ์ด๋ธ”์„ ์„ ํ–‰ ํ…Œ์ด๋ธ”๋กœ ์‚ฌ์šฉํ•˜๋ฉด Hash Area์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘์•„์ ธ์„œ ์„ฑ๋Šฅ์— ์œ ๋ฆฌํ•˜๋‹ค.

4) Hash Join์€ Sort Merge Join, Nested Loop Join๋ณด๋‹ค ํ•ญ์ƒ ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•˜๋‹ค.

 

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

[T_TEST]
DEPTNO   JOB    SAL
--------------------
10     CLERK    1300
10     MANAGER  2150
20     CLERK    1900
20     ANALYST  6000
20     MANAGER  2000

[๊ฒฐ๊ณผ]
DEPTNO   JOB    SUM(SAL)
------------------------
10     CLERK    1300
10     MANAGER  2150
10              3450
20     CLERK    1900
20     ANALYST  6000
20     MANAGER  2000
20              9900
                13350
[SQL]
SELECT DEPTNO, JOB, SUM(SAL)
FROM T_TEST
GROUP BY (           );


1) DEPTNO, JOB

2) GROUPING SETS(DEPTNO, JOB)

3) ROLLUP(DEPTNO, JOB)

4) CUBE(DEPTNO, JOB)
 

 

๋ฌธ์ œ 14. ์ฃผ์–ด์ง„ ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด์„œ ์•„๋ž˜์˜ SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•œ ์ดํ›„์— TEST1 ํ…Œ์ด๋ธ”์˜ ๊ฑด์ˆ˜๋Š”? ์ •๋‹ตํ™•์ธ๐ŸŒผ

[TEST1]
COL1  COL2  COL3
------------------
A      X      1
B      Y      2
C      Z      3

[TEST2]
COL1  COL2  COL3
------------------
A      X      1
B      Y      2
C      Z      3
D      ๊ฐ€      4
E      ๋‚˜      5

[SQL]
MERGE INTO TEST1
USING TEST2
 ON (TEST1.COL1 = TEST2.COL1)
WHEN MATCHED THEN
 UPDATE SET TEST1.COL3 = 4
      WHERE TEST1.COL3 = 2
 DELETE WHERE TEST1.COL3 <= 2
WHEN NOT MATCHED THEN
 INSERT(TEST1.COL1, TEST1.COL2, TEST1.COL3)
 VALUES(TEST2.COL1, TEST2.COL2, TEST2.COL3);
1) 4

2) 3

3) 5

4) 8

 

๋ฌธ์ œ 15. ๋‹ค์Œ์€ ABC๊ธฐ์—…์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ๋ง์ด๋‹ค. ๋‹ค์Œ์˜ ์„ค๋ช… ์ค‘์—์„œ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

1) ์ œํ’ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ฐฐ์†ก์ง€ ์ •๋ณด๋Š” ์ œํ’ˆ๋งˆ์Šคํ„ฐ ํ…Œ์ด๋ธ”์ด ์ฃผ๋ฌธ์ด๋ ฅ์„ ์ง์ ‘ ์กฐ์ธํ•˜๋ฉด ๋œ๋‹ค.

2) ์ œํ’ˆ๋งˆ์Šคํ„ฐ์™€ ์ฃผ๋ฌธ์ด๋ ฅ์„ ์กฐ์ธํ•˜๋ฉด ์นดํ…์‹œ์•ˆ ๊ณฑ์ด ๋ฐœ์ƒํ•œ๋‹ค.

3) ์ œํ’ˆ๋งˆ์Šคํ„ฐ์™€ ์ œํ’ˆ์ƒ์‚ฐ์€ ๋น„์‹๋ณ„๊ด€๊ณ„์ด๋‹ค.

4) ์ œํ’ˆ๋งˆ์Šคํ„ฐ์—์„œ ์ฃผ๋ฌธ์ผ์ž๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” WHERE์˜ ์กฐ๊ฑด์ด ์ตœ์†Œ 4๊ฐœ ์ด์ƒ์ด๋‹ค.

 

๋ฌธ์ œ 16. ์•„๋ž˜์˜ TEST10 ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด์„œ ์•„๋ž˜์˜ SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜์˜€์„ ๋•Œ์˜ ๊ฒฐ๊ณผ ๊ฑด์ˆ˜๋Š”?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

[TEST10]
EMPNO  NAME  MANAGER
--------------------
1      LIM     NULL
2      PARK    1
3      KIM     2

[SQL]
SELECT LPAD('**', (LEVEL-1) * 2, ' ')
       || EMPNO AS EMP, NAME
FROM TEST10
WHERE EMPNO <> 3
START WITH EMPNO = 3
CONNECT BY EMPNO = PRIOR MANAGER;
1) 0

2) 1

3) 2

4) 3
 

 

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

[SQL]
SELECT 10+20 * (( ? )(NULL, 0.1, 0.2))
FROM. DUAL;

[RESULT]
14
1) ISNULL

2) NVL

3) NVL2

4) COALESCE

 

๋ฌธ์ œ 18. ๋ณด๊ธฐ์—์„œ SELECT ๊ฒฐ๊ณผ๊ฐ€ NULL์ด ์•„๋‹Œ ๊ฒฝ์šฐ๋Š”? ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

1) SELECT COALESCE(1, 2, 3) FROM DUAL;

2) SELECT CASE 0 WHEN 1 THEN 2 ELSE NULL END FROM DUAL;

3) SELECT DECODE('A', 'B', 'C', NULL) FROM DUAL;

4) SELECT NULLIF('A', 'A') FROM DUAL;

 

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

 

[TABLE19]
A   X
------
1   100
1   NULL
2   100
2   200

[SQL]
SELECT A, SUM(X) AS TAB FROM TABLE19 GROUP BY A;

1)                   2)
A   TAB              A   TAB
-------              -------
1   100              1   100
                     2   200

3)                   4)
A   TAB              A   TAB
-------              -------
1   100              1   100
2   300              1   NULL
                     2   100
                     2   200

 

๋ฌธ์ œ 20. ๋‹ค์Œ์˜ SQL๋ฌธ์ด ์ˆœ์„œ๋Œ€๋กœ ์ˆ˜ํ–‰๋˜๊ณ  ๋‚œ ํ›„ ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ์•Œ๋งž์€ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

[SQL]
CREATE TABLE TEST20( COL1 NUMBER(10));
INSERT INTO TEST20 VALUES(1);
INSERT INTO TEST20 VALUES(4);
SAVEPOINT SV1;
UPDATE TEST20 SET COL1=8 WHERE COL1=2;
SAVEPOINT SV1;
DELETE TEST20 WHERE COL1 >= 2;
ROLLBACK TO SV1;
INSERT INTO TEST20 VALUES(3);
SELECT MAX(COL1) FROM TEST20;
1)           2)
MAX(COL1)     MAX(COL1)
---------     ---------
2             3

3)           4)
MAX(COL1)     MAX(COL1)
---------     ---------
4             1โ€‹

 

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

 

[TEST21]
USERID    USERCOUNT
-------------------
KIM        10
PARK       20
LIM        NULL
SIN        NULL
1) SELECT COUNT(NVL (USERCOUNT, 0)) FROM TEST21;

2) SELECT SUM(NVL (USERCOUNT, 0)) / 4 FROM TEST21;

3) SELECT AVG(NVL (USERCOUNT, 0)) FROM TEST21;

4) SELECT AVG(NVL (USERCOUNT, 1)) - 0.5 FROM TEST21;

 

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

1) RANK() OVER (PARTITION BY JOB ORDER BY ๊ธ‰์—ฌ DESC) JOB_RANK
   #์ง์—…๋ณ„ ๊ธ‰์—ฌ๊ฐ€ ๋†’์€ ์ˆœ์„œ๋Œ€๋กœ ์ˆœ์œ„๊ฐ€ ๋ถ€์—ฌ๋˜๊ณ  ๋™์ผํ•œ ์ˆœ์œ„๋Š” ๋™์ผํ•œ ๊ฐ’์ด ๋ถ€์—ฌ ๋œ๋‹ค.

2) SUM(๊ธ‰์—ฌ) OVER (PARTITION BY MGR ORDER BY ๊ธ‰์—ฌ RANGE UNBOUNDED PRECEDING)
   #RANGE๋Š” ๋…ผ๋ฆฌ์  ์ฃผ์†Œ์— ์˜ํ•œ ํ–‰ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•˜๊ณ  MGR๋ณ„ ํ˜„์žฌ ํ–‰๋ถ€ํ„ฐ ํŒŒํ‹ฐ์…˜๋‚ด ์ฒซ๋ฒˆ์งธ ํ–‰๊นŒ์ง€ ๊ธ‰์—ฌ์˜ ํ•ฉ๊ณ„๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

3) AVG(๊ธ‰์—ฌ) OVER (PARTITION BY MGR ORDER BY ๋‚ ์งœ ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING))
   #๊ฐ MGR ๋ณ„๋กœ ์•ž์˜ ํ•œ๊ฑด, ํ˜„์žฌ ํ–‰, ๋’ค์˜ ํ•œ๊ฑด ์‚ฌ์ด์—์„œ ๊ธ‰์—ฌ์˜ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•œ๋‹ค.

4) COUNT(*) OVER (ORDER BY ๊ธ‰์—ฌ) RANGE BETWEEN 10 PRECEDING AND 300 FOLLOWING)
   #๊ธ‰์—ฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ˜„์žฌ ํ–‰์—์„œ์˜ ๊ธ‰์—ฌ์˜ -10 ~ +300์‚ฌ์ด์˜ ๊ธ‰์—ฌ๋ฅผ ๊ฐ€์ง€๋Š” ํ–‰์˜ ์ˆ˜๋ฅผ COUNT
๋ฐ˜์‘ํ˜•

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

[TEST23]
COL1   COL2   COL3   COL4
-------------------------
10     10     10     20
20     20     NULL   30
30     NULL   NULL   10
NULL   30     10     40

[SQL]
SELECT SUM(COL1+COL2+COL3+COL4) FROM TEST23;
SELECT SUM(COL1) + SUM(COL2) + SUM(COL3) + SUM(COL4) FROM TEST23;
1) 50, NULL

2) NULL, 240

3) 50, 240

4) NULL, NULL

 

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

1) ๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜ ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ฐ˜ SQL๋ฌธ์žฅ์„ ์‹คํ–‰ํ•  ๋•Œ WHERE์ ˆ์˜ ์กฐ๊ฑด ๋“ฑ์œผ๋กœ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

2) Procedure, User Defined Function, Trigger  ๊ฐ์ฒด๋ฅผ PL/SQL๋กœ ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ๋‹ค.

3) Procedure ๋‚ด๋ถ€์— ์ž‘์„ฑ๋œ ์ ˆ์ฐจ์  ์ฝ”๋“œ๋Š” PL/SQL์—”์ง„์ด ์ฒ˜๋ฆฌํ•˜๊ณ  ์ผ๋ฐ˜์ ์ธ SQL๋ฌธ์žฅ์€ SQL์‹คํ–‰๊ธฐ๊ฐ€ ์ฒ˜๋ฆฌํ•œ๋‹ค.

4) PL/SQL๋ฌธ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋กœ DECLARE, BEGIN ~ END, EXCEPTION ๋ฌธ์„ ํ•„์ˆ˜์ ์œผ๋กœ ์จ์•ผํ•œ๋‹ค.

 

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

[T_ORDER]
Orderyear   Ordermonth    Price
---------------------------------
2020        01            1000
2020        02            6000
2020        03            2000
2020        04            3000
2020        05            2000
2020        06            1500โ€‹
1)
SELECT SUM(price) AS TOTAL
FROM t_order WHERE orderyear 
BETWEEN '2020' AND '2021' AND order month
BETWEEN '01' AND '12';
# ๊ฒฐ๊ณผ : 15,500

2)
SELECT SUM(price) AS TOTAL
FROM t_order WHERE ordermonth in ('01','06');
# ๊ฒฐ๊ณผ : 2,500

3)
SELECT SUM(price) AS TOTAL
FROM t_order WHERE ordermonth = '01' 
or ordermonth = '06';
# ๊ฒฐ๊ณผ : 2,500

4)
SELECT SUM(decode('06', 0, price)) AS TOTAL
FROM t_order WHERE orderyear 
BETWEEN '2020' AND '2021';
# ๊ฒฐ๊ณผ : 1,500

 

๋ฌธ์ œ 26. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ์ œ์•ฝ์กฐ๊ฑด(Constraint)์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ์™ธ๋ž˜ํ‚ค(Foreign Key)๋Š” ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์ œ์•ฝํ•œ๋‹ค.

2) ๊ธฐ๋ณธํ‚ค(Primary Key) ์ œ์•ฝ์‚ฌํ•ญ์€ ํ…Œ์ด๋ธ” ๋‹น ํ•˜๋‚˜๋งŒ ์ œ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

3) Check ์ œ์•ฝ์กฐ๊ฑด(Constraint)์€ ํŠน์ •๊ฐ’๋งŒ ์ž…๋ ฅ๋˜๊ฒŒ ์ œ์•ฝํ•œ๋‹ค.

4) ๊ณ ์œ ํ‚ค(Unique Key) ์ œ์•ฝ์ด ์„ค์ • ๋˜๋ฉด NULL๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.

 

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

๊ฐ€) ๋งˆ์Šคํ„ฐ ํ…Œ์ด๋ธ”๊ณผ ์Šฌ๋ ˆ์ด๋ธŒ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์กฐ์ธ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธฐ๋ณธํ‚ค์™€ ์™ธ๋ž˜ํ‚ค ์‚ฌ์ด์—์„œ ๋ฐœ์ƒํ•œ๋‹ค.
๋‚˜) EQUI Join์€ ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ” ๊ฐ„์— ์นผ๋Ÿผ ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ ์กฐํšŒํ•œ๋‹ค.
๋‹ค) EQUI Join์€ >, <, >=, <= ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
๋ผ) EQUI Join์€ ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์—์„œ ๊ต์ง‘ํ•ฉ์„ ์ฐพ๋Š”๋‹ค.
1) ๊ฐ€

2) ๋‚˜

3) ๋‹ค

4) ๋ผ

 

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

[SQL]
SELECT ๋ถ„๋ฅ˜์ฝ”๋“œ,
       AVG(์ƒํ’ˆ๊ฐ€๊ฒฉ) AS ์ƒํ’ˆ๊ฐ€๊ฒฉ,
       COUNT(*) OVER
       (
       ORDER BY AVG(์ƒํ’ˆ๊ฐ€๊ฒฉ)
                RANGE BETWEEN 10000
                PRECEDING AND 10000 FOLLOWING
       )AS CNT
FROM ์ƒํ’ˆ
GROUP BY ๋ถ„๋ฅ˜์ฝ”๋“œ;
1) WINDOW FUNCTION์„ GROUP BY(๋ถ„๋ฅ˜์ฝ”๋“œ) ์ ˆ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์˜€์œผ๋ฏ€๋กœ ์œ„์˜ SQL์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

2) WINDOW FUNCTION์˜ ORDER BY ์ ˆ๋กœ ์ธํ•˜์—ฌ ๋ฌธ๋ฒ•์˜ค๋ฅ˜์ด๋‹ค.

3) CNT ์นผ๋Ÿผ์€ ๋ถ„๋ฅ˜์ฝ”๋“œ๋ณ„ ํ‰๊ท ์ƒํ’ˆ๊ฐ€๊ฒฉ์„ ์„œ๋กœ ๋น„๊ตํ•˜์—ฌ -10000 ~ +10000 ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” ๋ถ„๋ฅ˜์ฝ”๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ ๊ฒƒ์ด๋‹ค.

4) CNT ์นผ๋Ÿผ์€ ์ƒํ’ˆ์ „์ฒด์˜ ํ‰๊ท ์ƒํ’ˆ๊ฐ€๊ฒฉ์„ ์„œ๋กœ ๋น„๊ตํ•˜์—ฌ -10000 ~ +10000 ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” ์ƒํ’ˆ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ ๊ฒƒ ์ด๋‹ค.

 

๋ฌธ์ œ 29. ์•„๋ž˜์˜ ํ…Œ์ด๋ธ”๋“ค์— ๋Œ€ํ•ด์„œ SQL๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜์˜€์„ ๋•Œ์˜ ๊ฒฐ๊ณผ ๊ฐ’์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

[TEST29_1]
COL
----
1
2
3
4

[TEST29_2]
COL
----
2
NULL

[SQL]
SELECT COUNT(*)
FROM TEST29_1 A
WHERE A.COL NOT IN (SELECT COL FROM TEST29_2);
1) 0

2) 1

3) 3

4) 6

 

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

[TEST30]
COL1    COL2
------------
NULL     A
1        B
2        C
3        D
4        E

[SQL]
SELECT * FROM TEST30 WHERE COL1 IN(1, 2, NULL);
 
1)
COL1   COL2
-----------
1      B
2      C

2)
COL1   COL2
-----------
2      B
2      C

3)
COL1   COL2
-----------
1      B
2      C
3      D
4      E

4)
COL1   COL2
-----------
NULL   A
1      B
2      C
3      D
4      E

 

๋ฌธ์ œ 31. ๋‹ค์Œ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ LIKE๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๊ฐ’์— "_" ๊ฐ€ ๋“ค์–ด๊ฐ„ ๋ฌธ์ž์—ด์„ ์ฐพ๋Š” SQL๋ฌธ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

[TEST31]
USERID     USERNAME
---------------------
1            __H
2            _B_
3            ___
4            D__

[RESULT]
USERID     USERNAME
---------------------
1            __H
2            _B_
3            ___
4            D__
1)
SELECT * FROM SQLD31 WHERE NAME LIKE '%H';

2)
SELECT * FROM SQLD31 WHERE NAME LIKE '%#_%';

3)
SELECT * FROM SQLD31 WHERE NAME LIKE '%@_%' ESCAPE '@';

4)
SELECT * FROM SQLD31 WHERE NAME LIKE '%_%' ESCAPE '_';โ€‹

 

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

[TEST32]
COL1     COL2
-------------
10000    'ABC'
10000    NULL
10000    'AbC'
20000    'ABC'

[SQL]
SELECT*FROM TEST32 WHERE (COL1, COL2) IN ((10000,'ABC'));
1) NULL

2) 1

3) 2

4) 3

 

๋ฌธ์ œ 33. ๋‹ค์Œ ์ค‘ TEST ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋ž˜์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” DCL๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

[SQL]
UPDATE A_USER SET COL1 = 'TEST' WHERE COL2 = 100;
1) GRANT UPDATE TO TEST;

2) REVOKE SELECT ON A_USER FROM TEST;

3) REVOKE UPDATE ON A_USER TO TEST;

4) GRANT SELECT, UPDATE ON A_USER TO TEST;

 

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

[TEST34_1]
JUMUN    PRICE
--------------
10      2000
10      3000
20      4000
20      3500

[TEST34_2]
CUSTRANK   MINPRICE   MAXPRICE
-------------------------------
VVIP        6000        6999
VIP         5000        5999
GOLD        4000        4999

[SQL]
SELECT A.JUMUN AS JUMUN, B.CUSTRANK AS CUSTRANK
FROM (SELECT JUMUN, SUM(PRICE) AS TOTAL 
      FROM TEST34_1 GROUP BY JUMUN) A, TEST34_2 B
WHERE A.TOTAL BETWEEN B.MINPRICE AND B.MAXPRICE;
1)
JUMUN   CUSTRANK
  10     VIP
  20     GOLD

2)
JUMUN   CUSTRANK
  10     SILVER
  20     GOLD

3)
JUMUN   CUSTRANK
  10     VIP

4)
JUMUN   CUSTRANK
  10     VIP
  10     VIP
  20     GOLD
  20     GOLD
 
 

 

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

 

 
1)
SELECT * FROM ๊ณ„์ขŒ๋งˆ์Šคํ„ฐ
WHERE ํšŒ์›๋ฒˆํ˜ธ = (SELECT DISTINCT ํšŒ์›๋ฒˆํ˜ธ FROM ๊ณ ๊ฐ);

2)
SELECT * FROM ๊ณ„์ขŒ๋งˆ์Šคํ„ฐ 
WHERE ํšŒ์›๋ฒˆํ˜ธ IN (SELECT DISTINCT ํšŒ์›๋ฒˆํ˜ธ FROM ๊ณ ๊ฐ);

3)
SELECT ํšŒ์›๋ฒˆํ˜ธ, ์ข…๋ชฉ์ฝ”๋“œ FROM ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ
WHERE ์ฃผ๋ฌธ์ผ์ž EXISTS (SELECT DISTINCT ์ฃผ๋ฌธ์ผ์ž FROM ๊ณ„์ขŒ๋งˆ์Šคํ„ฐ);

4)
SELECT ํšŒ์›๋ฒˆํ˜ธ, ์ข…๋ชฉ์ฝ”๋“œ FROM ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ
WHERE ์ฃผ๋ฌธ์ผ์ž ALL (SELECT DISTINCT ์ฃผ๋ฌธ์ผ์ž FROM ๊ณ„์ขŒ๋งˆ์Šคํ„ฐ);

 

๋ฌธ์ œ 36. ์•„๋ž˜์˜ ์‹คํ–‰๊ณ„ํš์„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ”๋ฅด๊ฒŒ ๋‚˜์—ดํ•œ ๊ฒƒ์€?  โœ๏ธ ์ •๋‹ตํ™•์ธ๐ŸŒผ

0 -  SELECT ~
1 -  NESTED LOOP JOIN
2 -    NESTED LOOP JOIN
3 -      TABLE ACCESS(FULL)
4 -      TABLE ACCESS(BY INDEX ROWID)
5 -        INDEX(RANGE SCAN)
6 -    TABLE ACCESS(BY INDEX ROWID)
7 -      INDEX(RANGE SCAN)
1) 0-1-2-3-4-5-6-7

2) 3-4-5-4-2-7-6-0

3) 3-5-4-2-7-6-1-0

4) 3-4-2-5-7-6-1-0

 

๋ฌธ์ œ 37. ๋‹ค์Œ ERD๋กœ ์ž‘์„ฑํ•œ SQL๋ฌธ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

 

1)
SELECT (SELECT SUM(์ฃผ๋ฌธ๊ธˆ์•ก) FROM ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ)
FROM ๊ณ ๊ฐ๋งˆ์Šคํ„ฐ GROUP BY ํšŒ์›๋ฒˆํ˜ธ;

2)
SELECT SUM(์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ.์ฃผ๋ฌธ๊ธˆ์•ก)
FROM ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ 
FULL OUTER JOIN ๊ณ ๊ฐ๋งˆ์Šคํ„ฐ 
ON ๊ณ ๊ฐ๋งˆ์Šคํ„ฐ.ํšŒ์›๋ฒˆํ˜ธ = ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ.ํšŒ์›๋ฒˆํ˜ธ 
GROUP BY ํšŒ์›๋ฒˆํ˜ธ;

3)
SELECT SUM(์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ.์ฃผ๋ฌธ๊ธˆ์•ก)
FROM ๊ณ ๊ฐ๋งˆ์Šคํ„ฐ, ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ 
WHERE ๊ณ ๊ฐ๋งˆ์Šคํ„ฐ.ํšŒ์›๋ฒˆํ˜ธ = ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ.ํšŒ์›๋ฒˆํ˜ธ
GROUP BY ํšŒ์›๋ฒˆํ˜ธ;

4)
SELECT SUM(์ฃผ๋ฌธ๊ธˆ์•ก) 
FROM ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ
WHERE EXISTS (SELECT*FROM ๊ณ ๊ฐ๋งˆ์Šคํ„ฐ
              UNION ALL SELECT*FROM ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ)
GROUP BY ํšŒ์›๋ฒˆํ˜ธ;

 

๋ฌธ์ œ 38. ํ…Œ์ด๋ธ” TEST38 ์—์„œ UNIQUE INDEX SCAN ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋Š” ๋ฌด์—‡์ธ๊ฐ€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

 
1)
SELECT COL1, COL2, COL3
FROM TEST38 WHERE KEY1 = 5 AND KEY2 = 6;

2)
SELECT COL1, COL2, COL3
FROM TEST38 WHERE KEY1 = 1 AND KET2 = 2;

3)
SELECT COL1, COL2, COL3
FROM TEST38 WHERE (KEY1, KEY2) IN ((1, 2));

4)
SELECT * FROM TEST38 WHERE KEY1 = 1;

 

๋ฌธ์ œ 39. ํŒŒํ‹ฐ์…˜ ๋ณ„ ์œˆ๋„์šฐ์—์„œ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜์˜จ ๊ฐ’์„ ๊ตฌํ•˜๋Š” WINDOW FUNCTION์€ ๋ฌด์—‡์ธ๊ฐ€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) FIRST_VALUE

2) LAG

3) LAST_VALUE

4) LEAD

 

๋ฌธ์ œ 40. ์ฃผ์–ด์ง„ SQL๋ฌธ์—์„œ ORDER BY๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

[SQL]
SELECT JOB, COUNt(*) AS ROWCNT
FROM TEST40 GROUP BY JOB;
1) ORDER BY JOB

2) ORDER BY ROWCNT  DESC

3) ORDER BY COUNT(*)

4) ORDER BY 3

 

๋ฌธ์ œ 41. ๋‹ค์Œ ๋ณด๊ธฐ ์ค‘ ํŠธ๋žœ์žญ์…˜์˜ ํŠน์ง•์— ๋Œ€ํ•œ ์„ค๋ช…์ค‘ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?  ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) ์›์ž์„ฑ(Atomicity) : ํŠธ๋žœ์žญ์…˜ ๋‚ด์˜ ๋ชจ๋“  ๋ฌธ์žฅ์ด ๋ชจ๋‘(ALL) ๋ฐ˜์˜๋˜๊ฑฐ๋‚˜, ํ˜น์€ ์ผ๋ถ€๊ฐ€ ๋ฐ˜์˜ ๋˜์–ด์•ผ ํ•œ๋‹ค.

2) ์˜์†์„ฑ : ํŠธ๋žœ์žญ์…˜์˜ ์ˆ˜ํ–‰์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฌด๊ฒฐ์„ฑ์€ ๋ณด์žฅ ๋  ์ˆ˜ ์—†๋‹ค.

3) ์ผ๊ด€์„ฑ : ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜๋“ค์ด ๋™์‹œ์— ์ˆ˜ํ–‰๋  ๋•Œ, ํ•œ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์˜ ๋ณต์‚ฌ๋ณธ์„ ์œ ์ง€ํ•œ๋‹ค.

4) ์ง€์†์„ฑ : Commit์ด ์™„๋ฃŒ๋˜๋ฉด ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ์„ ๋ณด์žฅํ•ด์•ผ ํ•œ๋‹ค.

 

๋ฌธ์ œ 42. CROSS JOIN๊ณผ NATURAL JOIN์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์ž˜๋ชป ์„ค๋ช…ํ•œ ๊ฒƒ์€?   ์ •๋‹ตํ™•์ธ๐ŸŒผ

1) NATURAL JOIN์€ ํ…Œ์ด๋ธ” ๊ฐ„ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋ชจ๋“  ์นผ๋Ÿผ๋“ค์— ๋Œ€ํ•ด ์กฐ์ธ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

2) CROSS JOIN์€ ํ…Œ์ด๋ธ” ๊ฐ„ ์กฐ๊ฑด์ด ์—†๋Š” ๊ฒฝ์šฐ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜ ์กฐํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค.

3) CROSS JOIN๊ณผ NATURAL JOIN์€ WHERE์ ˆ์—์„œ JOIN์กฐ๊ฑด์„ ๊ฑธ ์ˆ˜ ์—†๋‹ค.

4) CROSS JOIN์€ WHERE์ ˆ์— JOIN์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

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

[TEST43]
EMPNO    MGR
-------------
8000     NULL
7788     7566
7566     8000
7876     7788

[SQL]
SELECT LEVEL, LPAD(' ', 4 * (LEVEL-1)) ||
EMPNO EMPLOYEE, MGR MANAGER, 
CONNECT_BY_ISLEAF AS LEAF FROM TEST43
START WITH (  ใ„ฑ  ) 
CONNECT BY PRIOR (  ใ„ด  );

[RESULT]

     LEVEL EMPLOYEE		   MANAGER     LEAF
---------- -------------------- ---------- ----------
	 1 8000 				    0
	 2     7566		      8000	    0
	 3	   7788 	      7566	    0
	 4	       7876	      7788	    1
1) 
ใ„ฑ. MGR
ใ„ด. MGR = EMPNO

2)
ใ„ฑ. EMPNO
ใ„ด. MGR = EMPNO

3)
ใ„ฑ. EMPNO IS NULL
ใ„ด. EMPNO = MGR 
ใ…‡

4)
ใ„ฑ. MGR IS NULL
ใ„ด. EMPNO = MGR

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

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

[TEST44_1]
STUDENTNO
---------
10
20
30

[TEST44_2]
GRADE
---------
50
60
70
[๊ฒฐ๊ณผ๊ฐ’]
     GRADE  STUDENTNO SUM(B.GRADE)
---------- ---------- ------------
	50	   10		50
	50	   20		50
	50	   30		50
	50		       150
	60	   10		60
	60	   20		60
	60	   30		60
	60		       180
	70	   10		70
	70	   20		70
	70	   30		70
	70		       210


[SQL]
SELECT B.GRADE, A.STUDENTNO, SUM(B.GRADE)
FROM TEST44_1 A, TEST44_2 B
GROUP BY (             );

โœ๏ธ

 

๋ฌธ์ œ 45. Oracle ํ™˜๊ฒฝ์—์„œ ์ฃผ์–ด์ง„ ํ…Œ์ด๋ธ”์„ ์•„๋ž˜์˜ ๊ฒฐ๊ณผ์™€ ๊ฐ™์ด ์ •๋ ฌํ•˜๊ณ ์ž ํ•  ๋•Œ, SQL๋ฌธ์˜ ๋นˆ์นธ์— ๋“ค์–ด๊ฐˆ ๊ฐ’์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

[TEST45]
C1    C2
----------
10    100
10    200
10    NULL
20    100
20    NULL
20    200

[RESULT]
C1    C2
----------
10    200
10    100
10    NULL
20    200
20    100
20    NULL

[SQL]
SELECT C1, C2
FROM SQLD_02
ORDER BY C1, C2 DESC (      );

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

 

๋ฌธ์ œ 46. ๋‹ค์Œ์˜ JOIN ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€?

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

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

[RESULT]
TEST46_1.   TEST46_1.   TEST46_2.    TEST46_2.
COL1        COL2        COL1         COL2
----------------------------------------------
1            2            1            2
2            2            2            4
3            3           NULL         NULL
SELECT * FROM TEST46_1 (     ) TEST46_2
ON TEST46_1.COL1 = TEST46_2.COL1;

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

 

๋ฌธ์ œ 47. ์•„๋ž˜์˜ ์ƒํ’ˆ ๋งˆ์Šคํ„ฐ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ƒํ’ˆID '001' ์˜ ์ตœ์ข… ์ƒํ’ˆ๋ช…์€ ๋ฌด์—‡์ธ๊ฐ€? ์ •๋‹ตํ™•์ธ๐ŸŒผ

[ํ…Œ์ด๋ธ” : ์ƒํ’ˆ๋งˆ์Šคํ„ฐ]
์ƒํ’ˆID    ์ƒํ’ˆ๋ช…
-------------
001      TV

[SQL]
BEGIN TRANSACTION;
SAVE TRANSACTION SP1;
UPDATE ์ƒํ’ˆ๋งˆ์Šคํ„ฐ SET ์ƒํ’ˆ๋ช… = 'LG-TV' WHERE ์ƒํ’ˆID = '001';
SAVE TRANSACTION SP2;
UPDATE ์ƒํ’ˆ๋งˆ์Šคํ„ฐ SET ์ƒํ’ˆ๋ช… = 1 'ํ‰๋ฉด-TV' WHERE ์ƒํ’ˆID = '001';
ROLLBACK TRANSACTION SP2;
COMMIT;

โœ๏ธ

 

๋ฌธ์ œ 48. ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” SQL๋ฌธ์„ ์™„์„ฑํ•˜์‹œ์˜ค.

[SQL]
(       ) CREATE TABLE TO USER;

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

 

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

[TEST49]
CREATE TABLE TEST49(
COL1 VARCHAR(10),
COL2 VARCHAR(10),
COL3 NUMBER(10)
);
INSERT INTO TEST49 VALUES('A','๊ฐ€',10);
INSERT INTO TEST49 VALUES('A','๊ฐ€',20);
INSERT INTO TEST49 VALUES('A','๋‹ค',25);
INSERT INTO TEST49 VALUES('B','๊ฐ€',10);
INSERT INTO TEST49 VALUES('B','๋‚˜',30);
INSERT INTO TEST49 VALUES('B','๋‚˜',20);
INSERT INTO TEST49 VALUES('B','๋‚˜',60);
INSERT INTO TEST49 VALUES('C','๋ผ',30);
[SQL]
SELECT NTILE_2, COUNT(*) AS ROWCNT
FROM (
      SELECT COL1, COL2, COL3, NTILE(3) OVER(ORDER BY COL3) AS NTILE_2
      FROM TEST49
      )
GROUP BY NTILE_2;

[RESULT]
NTILE_2   ROWCNT
----------------
  1          3
  2          3
(   )      (   )

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

 

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

[SQLD_37_50]
ENAME       SAL
----------------
์œ ๋น„        1000
๊ด€์šฐ        1100
์žฅ๋น„        1200
์ œ๊ฐˆ๋Ÿ‰       1300
์กฐ์šด        1400
ํ™ฉ์ถฉ        1500

[RESULT]
ENAME       SAL     SIM_CNT
-----------------------------
์œ ๋น„        1000        2
๊ด€์šฐ        1100        2
์žฅ๋น„        1200        2
์ œ๊ฐˆ๋Ÿ‰       1300        2
์กฐ์šด        1400        2
ํ™ฉ์ถฉ        1500        1
[SQL]
SELECT ENAME, SAL,
COUNT(*) OVER (ORDER BY SAL ( ? ) 
               BETWEEN 50 PRECEDING AND 100 FOLLOWING
               )AS SIM_CNT
FROM SQLD_37_50;

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


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

 

1. ์ •๋‹ต :  2

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

 

ํ•ด์„ค : ๋„๋ฉ”์ธ(Domain)์ด๋ž€, ์„ฑ๋ณ„์ด๋ผ๋Š” ์†์„ฑ(Attribute)์—์„œ ๊ฐ’์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํ—ˆ์šฉ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ฆ‰, ์„ฑ๋ณ„์˜ ๊ฒฝ์šฐ ๋‚จ์ž๋Š” "M", ์—ฌ์ž๋Š” "F" ์˜ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.

 

๋„๋ฉ”์ธ(Domain)์˜ ํŠน์ง•

- ๋ฆด๋ ˆ์ด์…˜์˜ ์†์„ฑ์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํ—ˆ์šฉ๋œ ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค.- ์†์„ฑ๋ช…๊ณผ ๋„๋ฉ”์ธ๋ช…์€ ํ•ญ์ƒ ๋™์ผํ•  ํ•„์š”๋Š” ์—†๋‹ค.- ๋ชจ๋“  ์†์„ฑ๋“ค์˜ ๋„๋ฉ”์ธ์€ ์›์ž๊ฐ’ ์ด์–ด์•ผ ํ•œ๋‹ค.

 

์†์„ฑ(Gender) ๊ฐ’์ด ๊ฐ€์งˆ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๋ฒ”์œ„

- ์นด๋””๋‚ ๋ฆฌํ‹ฐ(Cardinality) : ํŠœํ”Œ(ํ–‰)์ˆ˜ = ์ธ์Šคํ„ด์Šค์˜ ์ˆ˜ 

 

์˜ˆ)

 

์ค‘๋ณต๋„๊ฐ€ โ€˜๋‚ฎ์œผ๋ฉดโ€™ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ โ€˜๋†’๋‹คโ€™๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.

์ค‘๋ณต๋„๊ฐ€ โ€˜๋†’์œผ๋ฉดโ€™ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ โ€˜๋‚ฎ๋‹คโ€™๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.

์นด๋””๋„๋ฆฌํ‹ฐ๋Š” ์ „์ฒด ํ–‰์— ๋Œ€ํ•œ ํŠน์ • ์ปฌ๋Ÿผ์˜ ์ค‘๋ณต ์ˆ˜์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ์ด๋‹ค.

์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ์—†์œผ๋ฏ€๋กœ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์— ๋น„ํ•ด ์ด๋ฆ„๊ฐ™์€ ๊ฒฝ์šฐ๋Š” โ€˜์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ์— ๋น„ํ•ดโ€™ ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ๋งŽ์œผ๋ฏ€๋กœ,

์ด๋ฆ„์€ โ€˜์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ์— ๋น„ํ•ดโ€™ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋‚ฎ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€˜์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ์— ๋น„ํ•ดโ€™๋ผ๋Š” ๋ถ€๋ถ„์„ ๊ฐ•์กฐํ•œ ์ด์œ ๋Š”, ์นด๋””๋„๋ฆฌํ‹ฐ๋Š” ์ƒ๋Œ€์ ์ธ ๊ฐœ๋…์œผ๋กœ ์ดํ•ดํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

- ์ธ์Šคํ„ด์Šค(instance) : ๊ฐ’

- ์ฐจ์ˆ˜(Degree) : ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ์˜ ๊ฐฏ์ˆ˜(์†์„ฑ์˜ ์ˆ˜) ์ด๋‹ค.

 

2. ์ •๋‹ต :  4

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

 

ํ•ด์„ค : ์™ธ๋ž˜ํ‚ค(Foreign key)๋Š” ์ฃผ ๋ฆด๋ ˆ์ด์…˜์„ ์ฐธ์กฐํ•˜๋Š” ํ‚ค๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ABC๊ธฐ์—…์˜ ์ง์›์ด ํŠน์ • ๋ถ€์„œ์— ์†Œ์†๋˜์–ด ์žˆ๋‹ค๋ฉด, ๋ถ€์„œ ๋ฆด๋ ˆ์ด์…˜์„ ์ฐธ์กฐํ•˜๋Š” ์ง์› ๋ฆด๋ ˆ์ด์…˜์˜ ๋ถ€์„œ์ฝ”๋“œ๊ฐ€ ์™ธ๋ž˜ํ‚ค์ด๋‹ค. ์ด๋Ÿฌํ•œ ์™ธ๋ž˜ํ‚ค๋Š” ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์ค€์ˆ˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋œ๋‹ค.

 

 

3. ์ •๋‹ต :  1

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

 

ํ•ด์„ค : 

๋ณ€ํ™˜๋ฐฉ๋ฒ• ์„ค๋ช…
One To One Type - ์Šˆํผํƒ€์ž…๊ณผ ์„œ๋ธŒํƒ€์ž…์„ ๊ฐœ๋ณ„ ํ…Œ์ด๋ธ”๋กœ ๋„์ถœํ•œ๋‹ค.
- ํ…Œ์ด๋ธ”์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„์„œ ์กฐ์ธ์ด ๋งŽ์ด ๋ฐœ์ƒํ•˜๊ณ  ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต๋‹ค.
Plus Type - ์Šˆํผํƒ€์ž…๊ณผ ์„œ๋ธŒํƒ€์ž… ํ…Œ์ด๋ธ”๋กœ ๋„์ถœํ•œ๋‹ค.
- ์กฐ์ธ์ด ๋ฐœ์ƒํ•˜๊ณ  ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต๋‹ค.
Single Type - ์Šˆํผํƒ€์ž…๊ณผ ์„œ๋ธŒํƒ€์ž…์„ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋กœ ๋„์ถœํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
- ์กฐ์ธ์„ฑ๋Šฅ์ด ์ข‹๊ณ  ๊ด€๋ฆฌ๊ฐ€ ํŽธ๋ฆฌํ•˜์ง€๋งŒ, IO ์„ฑ๋Šฅ์ด ๋‚˜์˜๋‹ค.

 

4. ์ •๋‹ต :  1

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

 

ํ•ด์„ค : 

ํŠน์ง• ์„ค๋ช…
์ถ”์ƒํ™”(Abstraction) ํ˜„์‹ค์„ธ๊ณ„๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ํ‘œํ˜„ํ•œ๋‹ค.
๋‹จ์ˆœํ™”(Simple) ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ‘œํ˜„ํ•œ๋‹ค.
๋ช…ํ™•์„ฑ(Clarity) ๋ช…ํ™•ํ•˜๊ฒŒ ์˜๋ฏธ๊ฐ€ ํ•ด์„๋˜์–ด์•ผ ํ•˜๊ณ  ํ•œ๊ฐ€์ง€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

 

5. ์ •๋‹ต :  2

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

 

ํ•ด์„ค : ์—”ํ„ฐํ‹ฐ(Entity)๋Š” ์ง‘ํ•ฉ์˜ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋ณธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ํ™˜์ž๊ฐ€ ์—”ํ„ฐํ‹ฐ์ด๊ณ  ํ™˜์ž์ด๋ฆ„, ์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ, ๋‚˜์ด ๋“ฑ์€ ์†์„ฑ์— ํ•ด๋‹น๋œ๋‹ค.

 

 

6. ์ •๋‹ต :  1

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

 

ํ•ด์„ค : ์†์„ฑ์˜ ์ข…๋ฅ˜๋Š” ๊ธฐ๋ณธ์†์„ฑ, ์„ค๊ณ„์†์„ฑ, ํŒŒ์ƒ์†์„ฑ์ด ์žˆ์œผ๋ฉฐ, ๋ณธ ๋ฌธ์ œ์—์„œ ๊ธˆ์•ก์€ ๊ธฐ๋ณธ์†์„ฑ์— ํ•ด๋‹น๋˜๊ณ  ๊ธฐ๋ณธ์†์„ฑ์˜ ๊ณ„์‚ฐ์ด๋‚˜ ๋ณ€ํ˜•์œผ๋กœ ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์ฃผ๋ฌธํ•ฉ๊ณ„๋Š” ํŒŒ์ƒ์†์„ฑ(Derived Attribute)์ด ๋œ๋‹ค.

์†์„ฑ์˜ ์ข…๋ฅ˜ ์„ค๋ช…
๊ธฐ๋ณธ์†์„ฑ - ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค์—์„œ ๋„์ถœ๋˜๋Š” ๋ณธ๋ž˜์˜ ์†์„ฑ์ด๋‹ค.
- ํšŒ์›ID, ์ด๋ฆ„, ๊ณ„์ขŒ๋ฒˆํ˜ธ, ์ฃผ๋ฌธ์ผ์ž ๋“ฑ์ด ์žˆ๋‹ค.
์„ค๊ณ„์†์„ฑ - ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๊ณผ์ •์—์„œ ๋ฐœ์ƒ๋˜๋Š” ์†์„ฑ์ด๋‹ค.
- ์œ ์ผํ•œ ๊ฐ’์„ ๋ถ€์—ฌํ•œ๋‹ค.
- ์ƒํ’ˆ์ฝ”๋“œ, ์ง€์ ์ฝ”๋“œ ๋“ฑ์ด ์žˆ๋‹ค.
ํŒŒ์ƒ์†์„ฑ - ๋‹ค๋ฅธ ์†์„ฑ์— ์˜ํ•ด์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ์†์„ฑ์ด๋‹ค.
- ํ•ฉ๊ณ„, ํ‰๊ท  ๋“ฑ์ด ์žˆ๋‹ค.

 

 

7. ์ •๋‹ต :  2

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

 

ํ•ด์„ค : GROUP๋ฆด๋ ˆ์ด์…˜๊ณผ ACCOUNT๋ฆด๋ ˆ์ด์…˜์˜ ๊ด€๊ณ„๋Š” ๋น„์‹๋ณ„์ž ๊ด€๊ณ„์ด๋‹ค.(์ ์„ ํ‘œํ˜„)

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

 

8. ์ •๋‹ต :  2

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

 

ํ•ด์„ค : ๊ด€๊ณ„์˜ ๊ธฐ์ˆ˜์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐœ๋…์€ ๊ด€๊ณ„์ฐจ์ˆ˜์— ํ•ด๋‹นํ•œ๋‹ค. ์ฆ‰, ์นด๋””๋„๋ฆฌํ‹ฐ(Cardinality)๋Š” ํ•˜๋‚˜์˜ ๋ฆด๋ ˆ์ด์…˜์—์„œ ํˆฌํ”Œ์˜ ์ „์ฒด ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

9. ์ •๋‹ต :  4

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

 

ํ•ด์„ค : 

์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•œ ๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง ์ˆœ์„œ

  • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์„ ํ•  ๋•Œ ์ •๊ทœํ™”๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ˆ˜ํ–‰
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์šฉ๋Ÿ‰์‚ฐ์ • ์ˆ˜ํ–‰
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐœ์ƒ๋˜๋Š” ํŠธ๋žœ์žญ์…˜ ์œ ํ˜• ํŒŒ์•…
  • ์šฉ๋Ÿ‰๊ณผ ํŠธ๋žœ์žญ์…˜์˜ ์œ ํ˜•์— ๋”ฐ๋ผ ๋ฐ˜์ •๊ทœํ™” ์ˆ˜ํ–‰
  • ์ด๋ ฅ๋ชจ๋ธ์˜ ์กฐ์ •, PK/FK ์กฐ์ •, ์Šˆํผํƒ€์ž…/์„œ๋ธŒํƒ€์ž… ์กฐ์ • ์ˆ˜ํ–‰
  • ์„ฑ๋Šฅ๊ด€์ ์—์„œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๊ฒ€์ฆ

 

10. ์ •๋‹ต :  2

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

 

ํ•ด์„ค : 

 

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์— ์žˆ์–ด์„œ ์ฃผ์‹๋ณ„์ž๋ฅผ ๋„์ถœํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•œ ์ž‘์—…์ด๋‹ค. ์ฃผ์‹๋ณ„์ž๋ฅผ ๋„์ถœํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ค€์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

- ํ•ด๋‹น ์—…๋ฌด์—์„œ ์ž์ฃผ ์ด์šฉ๋˜๋Š” ์†์„ฑ์„ ์ฃผ์‹๋ณ„์ž๋กœ ์ •์˜ํ•œ๋‹ค.

- ๋ช…์นญ, ๋‚ด์—ญ ๋“ฑ๊ณผ ๊ฐ™์ด ์ด๋ฆ„์œผ๋กœ ๊ธฐ์ˆ ๋˜๋Š” ๊ฒƒ๋“ค์€ ๊ฐ€๋Šฅํ•˜๋ฉด ์ฃผ์‹๋ณ„์ž๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.

- ๋ณตํ•ฉ์œผ๋กœ ์ฃผ์‹๋ณ„์ž๋ฅผ ๊ตฌ์„ฑํ•  ๊ฒฝ์šฐ ๋„ˆ๋ฌด ๋งŽ์€ ์†์„ฑ์ด ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

 

 

11. ์ •๋‹ต :  3

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

 

ํ•ด์„ค : ์˜จ๋ผ์ธ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ(OLTP)์—๋Š” ํ•ด์‹œ์กฐ์ธ ๋ณด๋‹ค๋Š” ์ ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ธํ•  ๋•Œ ์œ ๋ฆฌํ•œ ๊ตฌ์กฐ์ธ Nested Loop ๋ฐฉ์‹์ด ์œ ์šฉํ•˜๋‹ค.

 

12. ์ •๋‹ต :  1

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

 

ํ•ด์„ค : 

 

๋ฐฉ ๋ฒ• ์„ค ๋ช…
์ค‘์ฒฉ ๋ฐ˜๋ณต ์กฐ์ธ
(Nested Loop Join)
- ์ข์€ ๋ฒ”์œ„์— ์œ ๋ฆฌ
- ์œ ๋ฆฌ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, Random Access ์œ„์ฃผ
- ํ›„ํ–‰(Driven) ํ…Œ์ด๋ธ”์—๋Š” ์กฐ์ธ์„ ์œ„ํ•œ ์ธ๋ฑ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•จ
- ์‹คํ–‰์†๋„ = ์„ ํ–‰ ํ…Œ์ด๋ธ” ์‚ฌ์ด์ฆˆ * ํ›„ํ–‰ ํ…Œ์ด๋ธ” ์ ‘๊ทผํšŸ์ˆ˜
์ƒ‰์ธ๋œ ์ค‘์ฒฉ ๋ฐ˜๋ณต ์กฐ์ธ, ๋‹จ์ผ ๋ฐ˜๋ณต ์กฐ์ธ
(Single Loop Join)
- ํ›„ํ–‰(Driven) ํ…Œ์ด๋ธ”์˜ ์กฐ์ธ ์†์„ฑ์— ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ
- ์„ ํ–‰ ํ…Œ์ด๋ธ”์˜ ๊ฐ ๋ ˆ์ฝ”๋“œ๋“ค์— ๋Œ€ํ•˜์—ฌ ํ›„ํ–‰ ํ…Œ์ด๋ธ”์˜ ์ธ๋ฑ์Šค ์ ‘๊ทผ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘ ๊ฒ€์ƒ‰ ํ›„ ์กฐ์ธํ•˜๋Š” ๋ฐฉ์‹
์ •๋ ฌ ํ•ฉ๋ณ‘ ์กฐ์ธ
(Sort Merge Join)
- Sort Merge ์กฐ์ธ์€ ํ•ด๋‹น ํ…Œ์ด๋ธ”์˜ ์ธ๋ฑ์Šค๊ฐ€ ์—†์„๋•Œ ์ˆ˜ํ–‰์ด ๋œ๋‹ค.
- ํ…Œ์ด๋ธ”์„ ์ •๋ ฌ(Sort) ํ•œ ํ›„์— ์ •๋ ฌ๋œ ํ…Œ์ด๋ธ”์„ ๋ณ‘ํ•ฉ(Merge) ํ•˜๋ฉด์„œ ์กฐ์ธ์„ ์‹คํ–‰ํ•œ๋‹ค.

- ์กฐ์ธ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ์˜ ๋น„๊ต ์—ฐ์‚ฐ์ž๊ฐ€ ๋ฒ”์œ„ ์—ฐ์‚ฐ( >, < )์ธ ๊ฒฝ์šฐ Nested Loop ์กฐ์ธ๋ณด๋‹ค ์œ ๋ฆฌ
- ๋‘ ๊ฒฐ๊ณผ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ๊ฐ€ ์ฐจ์ด๊ฐ€ ๋งŽ์ด ๋‚˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋น„ํšจ์œจ์ 
ํ•ด์‹œ ์กฐ์ธ
(Hash Join)
- ํ•ด์‹œ(Hash)ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ํ…Œ์ด๋ธ”์˜ ์ž๋ฃŒ๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ์กฐ์ธ ๋ฐฉ์‹
Nested Loop ์กฐ์ธ๊ณผ Sort Merge ์กฐ์ธ์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐ

- ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋Š” ์ƒ๋‹นํžˆ ํฐ hash area๋ฅผ ํ•„์š”๋กœ ํ•จ์œผ๋กœ, ๋ฉ”๋ชจ๋ฆฌ์˜ ์ง€๋‚˜์นœ ์‚ฌ์šฉ์œผ๋กœ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ

13. ์ •๋‹ต :  3

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

 

ํ•ด์„ค : ๋ถ€์„œ๋ณ„ ํ•ฉ๊ณ„ (์†Œ๊ณ„) + ์ „์ฒดํ•ฉ๊ณ„ ์ด๋ฏ€๋กœ  ROLLUP(DEPTNO, JOB) 

 

14. ์ •๋‹ต :  3

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

ํ•ด์„ค : MERGE INTO๋ฌธ์€ ํŠน์ • ํ‚ค์— ๋Œ€ํ•ด์„œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ๋•Œ์— ์ˆ˜์ •์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ UPDATE๋ฅผ ํ•˜๊ณ , ๋ ˆ์ฝ”๋“œ๊ฐ€ ์—†์œผ๋ฉด ์ƒˆ๋กญ๊ฒŒ INSERT๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ๋ฌธ์ด๋‹ค. DELETE ์ ˆ์€ MERGE UPDATE ์ ˆ๋กœ ๊ฐฑ์‹ ๋œ ํ–‰์„ ๋Œ€์ƒ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉฐ, ๊ฐฑ์‹ ๋œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํ–‰์„ ์‚ญ์ œํ•œ๋‹ค. (์œ„ ๊ตฌ๋ฌธ์˜ DELETE ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.)

SQL> MERGE INTO TEST1
USING TEST2
 ON (TEST1.COL1 = TEST2.COL1)
WHEN MATCHED THEN
 UPDATE SET TEST1.COL3 = 4
      WHERE TEST1.COL3 = 2
 DELETE WHERE TEST1.COL3 <= 2
WHEN NOT MATCHED THEN
 INSERT(TEST1.COL1, TEST1.COL2, TEST1.COL3)
 VALUES(TEST2.COL1, TEST2.COL2, TEST2.COL3);

3 rows merged.

SQL> select*from test1;

COL1   COL2   COL3
--------------------
A      X      1
B      Y      4
C      Z      3
E      ๋‚˜      5
D      ๊ฐ€      4

 

15. ์ •๋‹ต :  2

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

 

ํ•ด์„ค : ์ œํ’ˆ๋งˆ์Šคํ„ฐ์™€ ์ฃผ๋ฌธ์ด๋ ฅ์„ ์ง์ ‘ ์กฐ์ธํ•˜๋ฉด ์กฐ์ธ Key๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์นดํ…Œ์‹œ์•ˆ ๊ณฑ์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

16. ์ •๋‹ต :  3

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

ํ•ด์„ค : CONNECT BY ๊ณ„์ธตํ˜• ์กฐํšŒ PRIOR๊ฐ€ ์—†๋Š” ์ชฝ์—์„œ -> PRIOR์žˆ๋Š” ์ชฝ์œผ๋กœ

์ฒ˜๋ฆฌ ์ˆœ์„œ
1. Start with
2. Connect by
3. Where

*start 3๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์ด3๊ฑด ์ด์—ˆ๋Š”๋ฐ
where์ ˆ์—์„œ 3์„ ์ œ์™ธํ–ˆ์œผ๋‹ˆ 2๊ฑด์ด ์กฐํšŒ๋œ๋‹ค.

 

17. ์ •๋‹ต :  3

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

 

ํ•ด์„ค : ์œ„์˜ SQL๋ฌธ์—์„œ NVL2 ํ•จ์ˆ˜์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ž๊ฐ’์ด NULL์ด๊ธฐ ๋•Œ๋ฌธ์— 0.2๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

14 = 10+20*0.2

SQL> SELECT 10+20*(NVL2(NULL, 0.1, 0.2))FROM DUAL;

10+20*(NVL2(NULL,0.1,0.2))
--------------------------
			14
NULL ํ•จ์ˆ˜ ์„ค๋ช…
NVL ํ•จ์ˆ˜ - NULL์ด๋ฉด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ๋Š” ํ•จ์ˆ˜์ด๋‹ค.
- "NVL(MGR, 0)"์€ MGR์นผ๋Ÿผ์ด NULL์ด๋ฉด 0์œผ๋กœ ๋ฐ”๊พผ๋‹ค.
NVL2 ํ•จ์ˆ˜ - NVLํ•จ์ˆ˜์™€ DECODE๋ฅผ ํ•˜๋‚˜๋กœ ๋งŒ๋“  ๊ฒƒ์ด๋‹ค.
- "NVL2(MGR, 1, 0)"์€ MGR์นผ๋Ÿผ์ด NULL์ด ์•„๋‹ˆ๋ฉด 1, NULL์ด๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
NULLIF ํ•จ์ˆ˜ - ๋‘ ๊ฐœ์˜ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด NULL์„ ๊ฐ™์ง€ ์•Š์œผ๋ฉด ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
- "NULLIF(exp1, exp2)"์€ exp1๊ณผ exp2๊ฐ€ ๊ฐ™์œผ๋ฉด NULL์„, ๊ฐ™์ง€ ์•Š์œผ๋ฉด exp1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
COALESCE - "COALESCE(mgr, 1)"์€ mgr์ด NULL์ด ์•„๋‹ˆ๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


18. ์ •๋‹ต :  1

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

 

ํ•ด์„ค : COALESCE ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ๋œ ์ธ์ž ์ค‘์—์„œ NULL์ด ์•„๋‹Œ ์ฒซ ๋ฒˆ์งธ ์นผ๋Ÿผ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

SQL> SELECT COALESCE(1,2,3)FROM DUAL;

COALESCE(1,2,3)
---------------
	      1

 

19. ์ •๋‹ต :  3

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

 

ํ•ด์„ค : A ์นผ๋Ÿผ๋ณ„๋กœ ๊ทธ๋ฃนํ™”ํ›„ ์ง‘๊ณ„ ํ•จ์ˆ˜์—์„œ NULL๊ฐ’์„ ์ œ์™ธํ•˜๊ณ  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

20. ์ •๋‹ต :  3

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

 

ํ•ด์„ค : SAVEPOINT ์ด๋ฆ„์ด ๊ฐ™์„๋•Œ ๋งˆ์ง€๋ง‰์— ์ €์žฅํ•œ ๊ฐ’์œผ๋กœ ROLLBACK ํ•œ๋‹ค.

 

21. ์ •๋‹ต :  1

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

 

ํ•ด์„ค : count๋Š” 4๊ฐœ์˜ ํ–‰์ด ์ถœ๋ ฅ (2, 3, 4 ๋ฒˆ์˜ ๊ฐ’์€ 7.5๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.)

NVL ํ•จ์ˆ˜๋Š” ๊ฐ’์ด NULL์ธ ๊ฒฝ์šฐ ์ง€์ •๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ , NULL์ด ์•„๋‹ˆ๋ฉด ์›๋ž˜ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

- ํ•จ์ˆ˜  :  NVL("๊ฐ’", "์ง€์ •๊ฐ’") 

NVL2 ํ•จ์ˆ˜๋Š” NULL์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์ง€์ •๊ฐ’1์„  ์ถœ๋ ฅํ•˜๊ณ , NULL์ธ ๊ฒฝ์šฐ ์ง€์ •๊ฐ’2๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

- ํ•จ์ˆ˜ :  NVL2("๊ฐ’", "์ง€์ •๊ฐ’1", "์ง€์ •๊ฐ’2") // NVL2("๊ฐ’", "NOT NULL", "NULL") 

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. ์ •๋‹ต :  3

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

 

ํ•ด์„ค : 3๋ฒˆ์€ ๊ฐ MGR๋ณ„๋กœ ๊ธ‰์—ฌ์˜ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์ „์— ๋‚ ์งœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ์— ๊ธ‰์—ฌ์˜ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•œ๋‹ค.

์ฆ‰, ๊ฐ MGR ํŒŒํ‹ฐ์…˜๋‚ด์—์„œ ๋‚ ์งœ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜์˜€์„ ๋•Œ, ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ ์•ž์˜ ํ•œ ๊ฑด, ํ˜„์žฌ ํ–‰ ๋’ค์˜ ํ•œ ๊ฑด ์‚ฌ์ด ๊ธ‰์—ฌ์˜ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•œ๋‹ค.

 

์œˆ๋„์šฐ์ ˆ์€ ROWS or RANGE ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๊ณ  BETWEEN๋„ ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์„œ

๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

BETWEEN์ด ์žˆ์„๊ฒฝ์šฐ

ROWS|RANGE

BETWEEN UNBOUNDED PRECEDING | CURRENT ROW | ์ƒ์ˆ˜๊ฐ’ PRECEDING ๋˜๋Š” FOLLOWING

    AND UNBOUNDED FOLLOWING | CURRENT ROW | ์ƒ์ˆ˜๊ฐ’ PRECEDING ๋˜๋Š” FOLLOWING

 

BETWEEN์ด ์—†์„๊ฒฝ์šฐ

ROWS|RANGE UNBOUNDED PRECEDING | CURRENT ROW | ์ƒ์ˆ˜๊ฐ’ PRECEDING
ํ‚ค์›Œ๋“œ ์„ค๋ช…
 ROWS  ๋ฌผ๋ฆฌ์ ์ธ ํ–‰ ๋‹จ์œ„
 RANGE  ๋…ผ๋ฆฌ์ ์ธ ํ–‰ ์ง‘ํ•ฉ
 CURRENT ROW  ํ˜„์žฌ ํ–‰
 UNBOUNDED PRECEDING  ์ฒซ ๋ฒˆ์งธ ํ–‰
 UNBOUNDED FOLLOWING  ๋งˆ์ง€๋ง‰ ํ–‰
 [์œ„์น˜] PRECEDING  [์œ„์น˜] ์ด์ „ ํ–‰
 [์œ„์น˜] FOLLOWING  [์œ„์น˜] ๋‹ค์Œ ํ–‰

 

 

23. ์ •๋‹ต :  3

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

 

ํ•ด์„ค :

์ฒซ๋ฒˆ์งธ SQL๋ฌธ์˜ Null ๊ฐ’์ด ์—†๋Š” ํ–‰์ธ (10, 10, 10, 20) ํ•ฉ๊ณ„ 50

๋‘๋ฒˆ์งธ SQL๋ฌธ์—์„œ SUM(COL1) = 60, SUM(COL2) = 60, SUM(COL3) = 20, SUM(COL4) = 100

60+60+20+100 ํ•ฉ๊ณ„ 240

 

24. ์ •๋‹ต :  4

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

 

ํ•ด์„ค : 4๋ฒˆ์—์„œ DECLARE์™€ BEGIN ~ END ๋ฌธ์€ ํ•„์ˆ˜์ง€๋งŒ, EXCEPTION ๋ฌธ์€ ์„ ํƒ์‚ฌํ•ญ์ด๋‹ค.

[ PL/SQL์˜ ํŠน์ง• ]

1. PL/SQL์€ Block๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์–ด ๊ฐ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋ชจ๋“ˆํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

2. ๋ณ€์ˆ˜, ์ƒ์ˆ˜ ๋“ฑ์„ ์„ ์–ธํ•˜์—ฌ SQL๋ฌธ์žฅ ๊ฐ„ ๊ฐ’์„ ๊ตํ™˜ ํ•œ๋‹ค.

3. IF, LOOP ๋“ฑ์˜ ์ ˆ์ฐจํ˜• ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ˆ์ฐจ์ ์ธ ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ๋‹ค.

4. DBMS ์ •์˜ ์—๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž ์ •์˜ ์—๋Ÿฌ๋ฅผ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

5. PL/SQL์€ Oracle์— ๋‚ด์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ Oracle๊ณผ PL/SQL์„ ์ง€์›ํ•˜๋Š” ์–ด๋–ค ์„œ๋ฒ„๋กœ๋„ ํ”„๋กœ๊ทธ๋žจ์„ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

6. PL/SQL์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

7. PL/SQL์€ ์—ฌ๋Ÿฌ SQL๋ฌธ์žฅ์„ Block์œผ๋กœ ๋ฌถ๊ณ  ํ•œ๋ฒˆ์— Block์ „๋ถ€๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ํ†ต์‹ ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

25. ์ •๋‹ต :  4

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

 

ํ•ด์„ค : 4๋ฒˆ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” NULL์ด๋‹ค. DECODE๋Š” 2๊ฐœ์˜ ์†์„ฑ์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์œ„์˜ ์˜ˆ์—์„œ๋Š” '06'๊ณผ 0์ด ๊ฐ™์ง€์•Š์œผ๋ฏ€๋กœ NULL์ด ๋ฐ˜ํ™˜๋จ

SQL> SELECT SUM(decode('06', 0, price)) AS TOTAL FROM t_order WHERE orderyear BETWEEN '2020' AND '2021';

     TOTAL
----------

- ์กฐ๊ฑด์„ ์ฃผ๋Š” ๋ฐฉ๋ฒ•์€ CASE๋ฌธ๊ณผ IF๋ฌธ์ด ์žˆ๋Š”๋ฐ ์ด๋Ÿฌํ•œ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฟผ๋ฆฌ๋ฌธ์ด ๊ธธ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ผํด์—์„œ๋Š” ์กฐ๊ฑด์ด ๊ฐ™์„๋•Œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋Š” DECODE ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•จ

DECODE (๊ฐ’, ์กฐ๊ฑด1, ๊ฒฐ๊ณผ1, default_result) 
์œ„์˜ ์˜ˆ์‹œ์—์„œ price ๋ฅผ default_result ์— ์ž‘์„ฑํ•˜๋ฉด ์ „์ฒดํ•ฉ๊ณ„๊ฐ€ ๋‚˜์˜จ๋‹ค.

SQL> SELECT SUM(decode('06', 0, price, price)) AS TOTAL FROM t_order WHERE orderyear BETWEEN '2020' AND '2021';

     TOTAL
----------
     15500

DECODE ํ•จ์ˆ˜๋Š” ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋“ค์–ด์˜ค๋Š” ์นผ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฒ€์‚ฌํ•œ๋‹ค.

๊ฐ’์ด ์กฐ๊ฑด1๊ณผ ๊ฐ™์œผ๋ฉด ๊ฒฐ๊ณผ1์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์–ด๋Š ์กฐ๊ฑด์—๋„ ํ•ด๋‹น๋˜์ง€ ์•Š์„๊ฒฝ์šฐ default_result ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์ƒ๋žตํ•œ๋‹ค๋ฉด NULL์„ ๋ฐ˜ํ™˜

 

26. ์ •๋‹ต :  4

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

 

ํ•ด์„ค : ๊ณ ์œ ํ‚ค(Unique Key)๋กœ ์ง€์ •๋œ ๋ชจ๋“  ์นผ๋Ÿผ์€ NULL ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ๋‹ค.

 

27. ์ •๋‹ต :  3

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

 

ํ•ด์„ค : EQUI Join์€ ํ…Œ์ด๋ธ” ๊ฐ„์— ์นผ๋Ÿผ ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ ์กฐํšŒํ•˜๋Š” ์กฐ์ธ์œผ๋กœ >, <, >=, <= ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ 

Non-EQUI Join ์ด  >, <, >=, <= ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์กฐ์ธ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์กฐ์ธ์ด๋‹ค.

 

28. ์ •๋‹ต :  3

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

 

ํ•ด์„ค : CNT ์นผ๋Ÿผ์€ ๋ถ„๋ฅ˜์ฝ”๋“œ๋กœ GROUPING๋œ ์ง‘ํ•ฉ์„ ์›๋ณธ์ง‘ํ•ฉ์œผ๋กœ ํ•˜์—ฌ ๋ถ„๋ฅ˜์ฝ”๋“œ๋ณ„ ํ‰๊ท ์ƒํ’ˆ๊ฐ€๊ฒฉ์„ ์„œ๋กœ ๋น„๊ตํ•˜๊ณ  ํ˜„์žฌ ์ฝํ˜€์ง„ ์ƒํ’ˆ๋ถ„๋ฅ˜์ฝ”๋“œ์˜ ํ‰๊ท ๊ฐ€๊ฒฉ ๋Œ€๋น„ -10000 ~ +10000์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” ๋ถ„๋ฅ˜์ฝ”๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ ๊ฒƒ์ด๋‹ค.

 

 

 

29. ์ •๋‹ต :  1

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

 

ํ•ด์„ค : NOT IN๋ฌธ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ ์ค‘์— NULL์ด ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

IN ๋ฌธ์€ OR ์กฐ๊ฑด, NOT IN ๋ฌธ์€ AND ์กฐ๊ฑด

 

*NULL์€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋น„๊ตํ•  ์ˆ˜ ์—†๋Š” ์—ฐ์‚ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”

์กฐํšŒ ์ปฌ๋Ÿผ์— IS NOT NULL์กฐ๊ฑด์„ ์ฃผ์–ด NULL์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋นผ๊ณ  ์กฐํšŒํ•˜๋ฉด ๋œ๋‹ค.

 

 

30. ์ •๋‹ต :  1

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

 

ํ•ด์„ค : NULL์€ ๋น„๊ต์—์„œ ์ œ์™ธ๋˜๊ณ  ์ฃผ์–ด์ง„ ํ…Œ์ด๋ธ”์˜ COL1 ์†์„ฑ๊ฐ’ 1 or 2 ์„ ๊ฐ–๋Š” ํ–‰๋งŒ ์ถœ๋ ฅ๋œ๋‹ค.

 

IN ๋ฌธ์€ OR ์กฐ๊ฑด, NOT IN ๋ฌธ์€ AND ์กฐ๊ฑด

 

31. ์ •๋‹ต :  3

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

 

ํ•ด์„ค : '%' ๋‚˜ '_' ๋“ฑ๊ณผ ๊ฐ™์€ ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ESCAPE ์‚ฌ์šฉํ•œ๋‹ค.

SQL> SELECT * FROM TEST WHERE NAME LIKE '%_%';

 

์œ„์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ๋กœ ๊ฒ€์ƒ‰์„ ํ•˜๊ฒŒ ๋˜๋ฉด '_' ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ํ–‰์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

ํŠน์ˆ˜ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด % ๋˜๋Š” _์™€ ๊ฐ™์€ ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ํฌํ•จ ๋œ ๋ฌธ์ž์—ด ์—ด์— ๋Œ€ํ•ด LIKE ๊ฒ€์ƒ‰์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š”๋ฐ์š” 

SQL> SELECT * FROM TEST WHERE NAME LIKE '%@_%' ESCAPE '@';

LIKE ์—ฐ์‚ฐ์œผ๋กœ '%' ๋‚˜ '_' ๋“ฑ๊ณผ ๊ฐ™์€ ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„์™€ ๊ฐ™์ด ESCAPE ๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ์–ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

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

 

32. ์ •๋‹ต :  2

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

 

ํ•ด์„ค : ๋ณด๊ธฐ์˜ SQL๋ฌธ์€ COL1, COL2๊ฐ€ ๊ฐ๊ฐ 10000, 'ABC' ์ธ ํ–‰ ๋งŒ์„ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์œผ๋กœ 1๋ฒˆ์งธ ํ–‰๋งŒ ์กฐํšŒ๋œ๋‹ค.

 

33. ์ •๋‹ต :  4

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

 

ํ•ด์„ค : GRANT [๊ถŒํ•œ] ON [ํ…Œ์ด๋ธ”๋ช…] TO [์œ ์ €๋ช…];

GRANT : ๊ถŒํ•œ ๋ถ€์—ฌ

REVOKE : ๊ถŒํ•œ ํšŒ์ˆ˜

 

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

34. ์ •๋‹ต :  3

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

 

ํ•ด์„ค : 

FROM์ ˆ์— ์žˆ๋Š” ์ธ๋ผ์ธ๋ทฐ ์˜ ์‹คํ–‰๊ฒฐ๊ณผ 20, 7500 ๊ณผ 10, 5000 ์ด ์กฐํšŒ๋œํ›„ WHERE TEST34_2 BETWEEN๊ตฌ๋กœ ์กฐํšŒํ•˜๋ฉด 5000 ~ 5999 ์‚ฌ์ด์— ์žˆ๋Š” JUMUN 10 VIP๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

35. ์ •๋‹ต :  2

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

 

ํ•ด์„ค :

#1๋ฒˆ
SQL> SELECT * FROM ๊ณ„์ขŒ๋งˆ์Šคํ„ฐ WHERE ํšŒ์›๋ฒˆํ˜ธ = (SELECT DISTINCT ํšŒ์›๋ฒˆํ˜ธ FROM ๊ณ ๊ฐ);
SELECT * FROM ๊ณ„์ขŒ๋งˆ์Šคํ„ฐ WHERE ํšŒ์›๋ฒˆํ˜ธ = (SELECT DISTINCT ํšŒ์›๋ฒˆํ˜ธ FROM ๊ณ ๊ฐ)
                                           *
ERROR at line 1:
ORA-01427: single-row subquery returns more than one row
#1๋ฒˆ์€ ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ–‰์ด ๋ฆฌํ„ด ๋˜๋ฏ€๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค ( = ๋‹จ์ผํ–‰ ์—ฐ์‚ฐ์ž๋กœ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜๋งŒ ๋ฆฌํ„ด ๋˜์–ด์•ผ ํ•จ)

#2
SQL> SELECT * FROM ๊ณ„์ขŒ๋งˆ์Šคํ„ฐ WHERE ํšŒ์›๋ฒˆํ˜ธ IN (SELECT DISTINCT ํšŒ์›๋ฒˆํ˜ธ FROM ๊ณ ๊ฐ);

๊ณ„์ขŒ๋ฒˆํ˜ธ  ํšŒ์›๋ฒˆํ˜ธ  ๊ณ„์ขŒ๋ช…   ๊ณ„์ขŒ์ข…๋ฅ˜  ๊ณ„์ขŒ์ง€์  ๊ณ„์ขŒ๊ฐœ์„ค์ผ์ž  ์˜ˆ์ˆ˜๊ธˆ  ํ‰๊ท ์ž”๊ณ    ์ฃผ๋ฌธ์ผ์ž
---------------------------------------------------------------------
100      111     1       1      1      1        1      1       1
200      222     2       2      2      2        2      2       2

#3
SQL> SELECT ํšŒ์›๋ฒˆํ˜ธ, ์ข…๋ชฉ์ฝ”๋“œ FROM ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ WHERE ์ฃผ๋ฌธ์ผ์ž EXISTS (SELECT DISTINCT ์ฃผ๋ฌธ์ผ์ž FROM ๊ณ„์ขŒ๋งˆ์Šคํ„ฐ);
SELECT ํšŒ์›๋ฒˆํ˜ธ, ์ข…๋ชฉ์ฝ”๋“œ FROM ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ WHERE ์ฃผ๋ฌธ์ผ์ž EXISTS (SELECT DISTINCT ์ฃผ๋ฌธ์ผ์ž FROM ๊ณ„์ขŒ๋งˆ์Šคํ„ฐ)
                                                             *
ERROR at line 1:
ORA-00920: invalid relational operator

#4
SQL> SELECT ํšŒ์›๋ฒˆํ˜ธ, ์ข…๋ชฉ์ฝ”๋“œ FROM ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ WHERE ์ฃผ๋ฌธ์ผ์ž ALL (SELECT DISTINCT ์ฃผ๋ฌธ์ผ์ž FROM ๊ณ„์ขŒ๋งˆ์Šคํ„ฐ);
SELECT ํšŒ์›๋ฒˆํ˜ธ, ์ข…๋ชฉ์ฝ”๋“œ FROM ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ WHERE ์ฃผ๋ฌธ์ผ์ž ALL (SELECT DISTINCT ์ฃผ๋ฌธ์ผ์ž FROM ๊ณ„์ขŒ๋งˆ์Šคํ„ฐ)
                                                             *
ERROR at line 1:
ORA-00920: invalid relational operator

 


  EXISTS ํ•จ์ˆ˜์™€ IN์€ WHERE ์ ˆ์—์„œ ์กฐ๊ฑด์„ ๊ฑธ์–ด์ค„ ๋•Œ ์‚ฌ์šฉ
-> ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ถ”์ถœํ•ด ์ฃผ๋Š” ๊ธฐ๋Šฅ
-> ๊ฒฐ๊ณผ๋Š” ๋˜‘๊ฐ™์Œ
-> ์„ฑ๋Šฅ ๋ฉด์—์„œ๋Š” EXISTS ํ•จ์ˆ˜๊ฐ€ ๋” ์ข‹์Œ
-> INํ•จ์ˆ˜๋Š” ์‹ค์ œ๋กœ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฐ’์„ ๋น„๊ตํ•˜๊ธฐ์— ๋Š๋ฆฐ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ 
-> ๋”ฐ๋ผ์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉ์‹œ EXISTS ํ•จ์ˆ˜ ์‚ฌ์šฉ ์ถ”์ฒœ

[EXISTS/IN ์ฐจ์ด]

-EXISTS ํ•จ์ˆ˜๋Š”
WHERE EXISTS ()
1. ๊ด„ํ˜ธ ์•ˆ์— ์„œ๋ธŒ์ฟผ๋ฆฌ๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ. ํŠน์ •๊ฐ’ ๋„ฃ์„ ์ˆ˜ X
2. ์ฒ˜๋ฆฌ ์ˆœ์„œ [๋ฉ”์ธ์ฟผ๋ฆฌ] -> [์„œ๋ธŒ์ฟผ๋ฆฌ]
3. ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ '์กด์žฌํ•˜๋Š”์ง€๋งŒ ํ™•์ธ' 
4. NULL์— ๋Œ€ํ•ด TRUE ๊ฐ’์„ ๋ฆฌํ„ด


-IN ํ•จ์ˆ˜
WHERE IN () 
1. ๊ด„ํ˜ธ ์•ˆ์— ํŠน์ • ๊ฐ’ / ์„œ๋ธŒ ์ฟผ๋ฆฌ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ
2. ์ฒ˜๋ฆฌ ์ˆœ์„œ [์„œ๋ธŒ ์ฟผ๋ฆฌ] -> [๋ฉ”์ธ์ฟผ๋ฆฌ]
3. NULL์— ๋Œ€ํ•ด FALSE ๋ฆฌํ„ด -> ๋”ฐ๋ผ์„œ NOT IN ์‚ฌ์šฉ์‹œ NVL๋กœ NULL ์ฒดํฌ ํ•„์š”

 

36. ์ •๋‹ต :  3

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

 

ํ•ด์„ค :

์‹คํ–‰๊ณ„ํš ์ด๋ž€ ์š”๊ตฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด DBMS๊ฐ€ ์ฐจ๋ก€๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” Access ๊ณผ์ •์œผ๋กœ ์‹คํ–‰ ๊ณ„ํš์„ ์ฝ์„ ๋•Œ๋Š” ๊ทœ์น™์„ ํ† ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ์ฝ์–ด๋‚˜๊ฐ‘๋‹ˆ๋‹ค.

 

1. ์œ„์—์„œ ์•„๋ž˜๋กœ ์ฝ์–ด ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ์ œ์ผ ๋จผ์ € ์ฝ์„ ์Šคํ…์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

2. ๋‚ด๋ ค๊ฐ€๋Š” ๊ณผ์ •์—์„œ ๊ฐ™์€ ๋“ค์—ฌ ์“ฐ๊ธฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ๋ฌด์กฐ๊ฑด ์œ„ -> ์•„๋ž˜ ์ˆœ์œผ๋กœ ์ฝ์Šต๋‹ˆ๋‹ค.

3. ์ฝ๊ณ ์ž ํ•˜๋Š” ์Šคํ…๋ณด๋‹ค ๋“ค์—ฌ ์“ฐ๊ธฐ๊ฐ€ ๋œ ํ•˜์œ„์Šคํ…์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ๊ฐ€์žฅ ์•ˆ์ชฝ์œผ๋กœ ๋“ค์—ฌ์“ฐ๊ธฐ ๋œ ์Šคํ…์„ ์‹œ์ž‘์œผ๋กœ ํ•˜์—ฌ ํ•œ ๋‹จ๊ณ„์”ฉ ์ƒ์œ„ ์Šคํ…์œผ๋กœ ์ฝ์–ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

 

*์ž์‹๋“ค์˜ ์ขŒ์ธก๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ฝ์–ด์ฃผ๊ณ  ๊ทธ ๋‹ค์Œ์— ์ƒ์œ„ ๋ถ€๋ชจ๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ์‹์œผ๋กœ ๋ฐ˜๋ณต

์œ„ ๋ฌธ์ œ์˜ ์‹คํ–‰์ˆœ์„œ๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 3-5-4-2-7-6-1-0

 

 

37. ์ •๋‹ต :  4

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

 

ํ•ด์„ค :๊ณ ๊ฐ๋งˆ์Šคํ„ฐ์™€ ์ผ์ž๋ณ„์ฃผ๋ฌธ๋‚ด์—ญ์— ๋‚˜์˜ค๋Š” ์นผ๋Ÿผ ์ˆ˜์™€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.

UNION ๋ฐ UNION ALL๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‚˜์˜ค๋Š” SQL๋ฌธ์€ ์นผ๋Ÿผ ์ˆ˜์™€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์™„์ „ ์ผ์น˜ํ•ด์•ผ ํ•จ

 

38. ์ •๋‹ต :  4

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

 

ํ•ด์„ค : TEST38 ํ…Œ์ด๋ธ”์€ ๊ธฐ๋ณธํ‚ค(Primary Key) ๊ฐ€ KEY1๋ฒˆ๊ณผ KEY2๋ฒˆ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ UNIQUE INDEX SCAN์„ ํ•˜๋ ค๋ฉด KEY1๋ฒˆ๊ณผ KEY2๋ฒˆ ๋ชจ๋‘ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ 4๋ฒˆ์˜ ๊ฒฝ์šฐ KEY1๋ฒˆ๋งŒ ์‚ฌ์šฉ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— UNIQUE SCAN์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

39. ์ •๋‹ต :  1

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

 

ํ•ด์„ค :  ํŒŒํ‹ฐ์…˜์—์„œ ๊ฐ€์žฅ ์ฒ˜์Œ์— ๋‚˜์˜ค๋Š” ๊ฐ’์„ ๊ตฌํ•˜๋Š” ์œˆ๋„์šฐ ํ•จ์ˆ˜๋Š” FIRST_VALUE์ด๋‹ค.

ํ–‰ ์ˆœ์„œ ์„ค๋ช…
FIRST_VALUE - ํŒŒํ‹ฐ์…˜์—์„œ ๊ฐ€์žฅ ์ฒ˜์Œ์— ๋‚˜์˜ค๋Š” ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.
- MIN ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
LASt_VALUE - ํŒŒํ‹ฐ์…˜์—์„œ ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋‚˜์˜ค๋Š” ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.
- MAX ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
LAG - ์ด์ „์— ํ–‰์„ ๊ฐ€์ง€๊ณ  ์˜จ๋‹ค.
LEAD - ์œˆ๋„์šฐ์—์„œ ํŠน์ • ์œ„์น˜์˜ ํ–‰์„ ๊ฐ€์ง€๊ณ  ์˜จ๋‹ค.
- ๊ธฐ๋ณธ ๊ฐ’์€ 1์ด๋‹ค.

 

 

40. ์ •๋‹ต :  4

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

 

ํ•ด์„ค : ๋ฌธ์ œ์˜ SQL๋ฌธ์€ SELECT๊ตฌ์— 2๊ฐœ ์นผ๋Ÿผ(JOB, ROWCNT)์ด ์žˆ๋‹ค. ์ฆ‰, 1๋ฒˆ๊ณผ 2๋ฒˆ์€ ์žˆ์ง€๋งŒ 3๋ฒˆ์งธ ์นผ๋Ÿผ์€ ์—†๋‹ค.

 

41. ์ •๋‹ต :  4

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

 

ํ•ด์„ค :

ํŠธ๋žœ์žญ์…˜์ด๋ž€? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—… ๋‹จ์œ„์ด๋‹ค.

์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚จ๋‹ค๋Š” ๊ฒƒ์€ SQL ์งˆ์˜์–ด๋ฅผ ํ†ตํ•ด DB์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ(SELECT, INSERT, DELETE, UPDATE)

ํŠธ๋žœ์žญ์…˜์˜ ํŠน์ง• ์„ค๋ช…
์›์ž์„ฑ (Atomicity) ํŠธ๋žœ์žญ์…˜์ด DB์— ๋ชจ๋‘ ๋ฐ˜์˜๋˜๊ฑฐ๋‚˜, ํ˜น์€ ์ „ํ˜€ ๋ฐ˜์˜๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. (All or Nothing)
์ผ๊ด€์„ฑ (Consistency) ํŠธ๋žœ์žญ์…˜์˜ ์ž‘์—… ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋Š” ํ•ญ์ƒ ์ผ๊ด€์„ฑ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๊ณ ๋ฆฝ์„ฑ (Isolation) ๋‘˜ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ๋ณ‘ํ–‰ ์‹คํ–‰๋˜๊ณ  ์žˆ์„ ๋•Œ, ์–ด๋–ค ํŠธ๋žœ์žญ์…˜๋„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜ ์—ฐ์‚ฐ์— ๋ผ์–ด๋“ค ์ˆ˜ ์—†๋‹ค.
์ง€์†์„ฑ (Durability) ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด, ๊ฒฐ๊ณผ๋Š” ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•œ๋‹ค.

 

 

42. ์ •๋‹ต :  3

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

 

ํ•ด์„ค : NATURAL JOIN์˜ ๊ฒฝ์šฐ WHERE์ ˆ์—์„œ JOIN์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์ง€๋งŒ CROSS JOIN์˜ ๊ฒฝ์šฐ WHERE์ ˆ์— JOIN์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฝ์šฐ๋Š” CROSS JOIN์ด ์•„๋‹ˆ๋ผ INNER JOIN๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ๋•Œ๋ฌธ์— CROSS JOIN์„ ์‚ฌ์šฉํ•˜๋Š” ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง€๋ฏ€๋กœ ๊ถŒ๊ณ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 


CROSS JOIN ์ƒํ˜ธ ์กฐ์ธ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ, ํ•œ ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰๋“ค๊ณผ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ์กฐ์ธ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.
์ด๋Ÿฌํ•œ CROSS JOIN์„ ์นดํ…Œ์‹œ์•ˆ ๊ณฑ (Cartesian Product)๋ผ๊ณ ๋„ ํ•œ๋‹ค.
NATURAL JOIN
 - ๋™์ผํ•œ ํƒ€์ž…๊ณผ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ปฌ๋Ÿผ์„ ์กฐ์ธ ์กฐ๊ฑด์œผ๋กœ ์ด์šฉํ•˜๋Š” ์กฐ์ธ์„ ๊ฐ„๋‹จํžˆ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
 - NATURAL JOIN์€ ๋‘ ํ…Œ์ด๋ธ”์˜ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง€๋Š” ์นผ๋Ÿผ์ด ๋ชจ๋‘ ์กฐ์ธ๋œ๋‹ค.
 - ๋™์ผํ•œ ์นผ๋Ÿผ์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์ฐพ๊ฒŒ ๋˜๋ฏ€๋กœ ํ…Œ์ด๋ธ” ๋ณ„์นญ(Alias)์„ ์ฃผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

*NATURAL JOIN ์— ํ…Œ์ด๋ธ” ๋ณ„์นญ์„ ์“ฐ๋ฉด ์˜ค๋ฅ˜๋‚˜๋Š” ์ด์œ ? : alias๋Š” ์„œ๋กœ ๋‹ค๋ฅธ relation ๊ฐ„์— ๊ฐ™์€ column์ด ์žˆ์„ ๋•Œ ์„œ๋กœ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š”๋ฐ, natural join์€ ๋‘ ํ…Œ์ด๋ธ”์˜ ๋™์ผํ•œ ์ด๋ฆ„์˜ column์„ ๋ชจ๋‘ ํ•ฉ์ณ๋ฒ„๋ฆฌ๋ฏ€๋กœ join ํ›„์˜ relation์—๋Š” ๊ฐ™์€ ์ด๋ฆ„์˜ column์ด ์žˆ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

43. ์ •๋‹ต : 4

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

 

ํ•ด์„ค : ๊ณ„์ธตํ˜• ์กฐํšŒ์—์„œ MGR์ด NULL์ธ ๊ฒƒ์ด ๊ฐ€์žฅ ์ƒ์œ„๊ฐ€ ๋œ๋‹ค. ์ฆ‰, MGR IS NULL์ด ์‹œ์ž‘์‹œ์ ์ด๋ฉฐ EMPNO = MGR์„ ๊ณ„์ธต์ ์œผ๋กœ ๋น„๊ตํ•œ๋‹ค.

 

 

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

 

44. ์ •๋‹ต :  GROUPING SETS (B.GRADE, (B.GRADE, A.STUDENTNO))

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

 

ํ•ด์„ค :

๊ฒฐ๊ณผ๊ฐ’์„ ๋ณด๋ฉด 1. B.GRADE, A.STUDENTNO ์— ๋Œ€ํ•œ ์ง‘๊ณ„, 2. B.GRADE์— ๋Œ€ํ•œ ์ง‘๊ณ„๊ฐ€ ์žˆ๊ณ  ์ „์ฒด ์ง‘๊ณ„๋Š” ์—†๋‹ค.

SQL> SELECT B.GRADE, A.STUDENTNO, SUM(B.GRADE) FROM TEST44_1 A, TEST44_2 B GROUP BY GROUPING SETS (B.GRADE, (B.GRADE, A.STUDENTNO));

     GRADE  STUDENTNO SUM(B.GRADE)
---------- ---------- ------------
	50	   10		50
	50	   20		50
	50	   30		50
	50		       150
	60	   10		60
	60	   20		60
	60	   30		60
	60		       180
	70	   10		70
	70	   20		70
	70	   30		70
	70		       210

12 rows selected.

 

45. ์ •๋‹ต :  NULLS LAST

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

ํ•ด์„ค : NULLS LAST ๋Š” NULL ๊ฐ’์„ ๋งˆ์ง€๋ง‰์— ์ •๋ ฌ์‹œ์ผœ ์ค€๋‹ค.

 

 

NULLS FIRST : ์ •๋ ฌํ•˜๊ณ ์ž ํ•˜๋Š” NULL ๋ฐ์ดํ„ฐ๋“ค์„ ๋ฐ์ดํ„ฐ ์•ž์— ๋‚˜์˜ค๊ฒŒ ํ•œ๋‹ค.

NULLS LAST : ์ •๋ ฌํ•˜๊ณ ์ž ํ•˜๋Š” NULL ๋ฐ์ดํ„ฐ๋“ค์„ ๋ฐ์ดํ„ฐ ๋’ค์— ๋‚˜์˜ค๊ฒŒ ํ•œ๋‹ค.

*Default ๊ฐ’์œผ๋กœ NULL ์ด ๋จผ์ € ํ‘œ์‹œ๋จ

 

ORDER BY [์ •๋ ฌํ•˜๊ณ ์ž ํ•˜๋Š” ์ปฌ๋Ÿผ๋ช…] [DESC/ASC] NULLS LAST

 

46. ์ •๋‹ต :  LEFT OUTER JOIN

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

 

ํ•ด์„ค : ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์„ ๋ณด๋ฉด TEST46_1 ํ…Œ์ด๋ธ”์—๋งŒ ์žˆ๋Š” 3๋ฒˆํ–‰(COL1, COL2)๋งŒ ์กฐํšŒ๋˜๊ณ  TEST46_2 ํ…Œ์ด๋ธ”์—๋Š” 3๋ฒˆํ–‰์ด ์—†์œผ๋ฏ€๋กœ NULL๋กœ ์กฐํšŒ๋˜์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ LEFT OUTER JOIN์„ ์‹คํ–‰ํ•œ ๊ฒƒ์ด๋‹ค.

 

 

47. ์ •๋‹ต :  LG-TV

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

 

ํ•ด์„ค : ROLLBACK TRANSACTION SP2 ๋ฌธ์žฅ์— ์˜ํ•ด ์ฒซ ๋ฒˆ์งธ UPDATEํ•œ ๋‚ด์—ญ๋งŒ ๋ฐ˜์˜ ๋˜๋ฏ€๋กœ ์ƒํ’ˆ๋ช…์€ LG-TV๊ฐ€ ๋œ๋‹ค.

 

48. ์ •๋‹ต :  GRANT

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

 

ํ•ด์„ค :

ํ…Œ์ด๋ธ”์˜ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” DCL(Data Control Language) : GRANTํ…Œ์ด๋ธ”์˜ ๊ถŒํ•œ์„ ํšŒ์ˆ˜ํ•˜๋Š” DCL(Data Control Language) : REVOKE

 

49. ์ •๋‹ต :  3, 2

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

 

ํ•ด์„ค :NTILE(3)์€ ๋ฐ์ดํ„ฐ๋ฅผ 3๋“ฑ๋ถ„ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ๋“ฑ๋ถ„์— ๋Œ€ํ•ด์„œ COUNT๋ฅผ ๊ณ„์‚ฐํ•˜๋ฏ€๋กœ 3, 3, 2๊ฐ€ ๋œ๋‹ค.

 

 

 

50. ์ •๋‹ต :  RANGE

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

 

ํ•ด์„ค : RANGE๋Š” ํ˜„์žฌ ํ–‰์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์•ž๋’ค ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋จผ์ € ์œ„์˜ SQLD_37_50 ํ…Œ์ด๋ธ”์—์„œ ๊ฒฐ๊ณผ๊ฐ’๊ณผ ๊ฐ™์ด ๋ฐ˜ํ™˜๋˜๋„๋ก 'SAL' ์†์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๊ณ ,๊ฐํ–‰์˜ SAL ์†์„ฑ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ -50 ~ +100 ๋ฒ”์œ„ ์‚ฌ์ด์— ํฌํ•จ๋˜๋Š” SAL๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ชจ๋“  ํ–‰์˜ ์ˆ˜๋ฅผ COUNTํ•˜์—ฌ SIM_CNT ์†์„ฑ๊ฐ’์œผ๋กœ ์กฐํšŒํ•œ๋‹ค.

 

์˜ˆ) ์œ ๋น„์˜ SAL ์†์„ฑ๊ฐ’ 1000 ์„ ๊ธฐ์ค€  -50 ~ +100 ๋ฒ”์œ„ ->  950 ~1100 ์— ์†ํ•˜๋Š” SAL ์†์„ฑ๊ฐ’์€ 2๊ฐœ (1000, 1100)


๋ฐ˜์‘ํ˜•