DBMS

SQL ํŒŒ์‹ฑ ๋ถ€ํ•˜

JEE-JEEE 2024. 4. 9. 15:01

 

 

๐Ÿชก SQL ์ฒ˜๋ฆฌ ๊ณผ์ •

 

๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ์—๋Š”, ์ฒ˜๋ฆฌ ์ ˆ์ฐจ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ž‘์„ฑ์„ ํ•ด์•ผ ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ์€ ๊ตฌ์กฐํ™”๋œ ์งˆ์˜์–ธ์–ด(SQL) ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ์ง‘ํ•ฉ์„ ์ •์˜ํ•˜๊ณ , ๊ทธ๊ฒƒ์„ ์–ป๋Š” ๋ฐ์— ํ•„์š”ํ•œ ์ฒ˜๋ฆฌ์ ˆ์ฐจ๋ฅผ ์ง์ ‘ ๊ธฐ์ˆ ์„ ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.

๋Œ€์‹  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ด์ฃผ๋Š” ์—”์ง„์ด DBMS ๋‚ด์— ๋‚ด์žฅ์ด ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ฉฐ, SQL ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ๊ทธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์˜ตํ‹ฐ๋งˆ์ด์ €์— ์˜ํ•ด์„œ ์ƒ์„ฑ๋œ ์ฒ˜๋ฆฌ์ ˆ์ฐจ๋ฅผ ์‹คํ–‰๊ณ„ํš์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์˜ตํ‹ฐ๋งˆ์ด์ €์—์„œ๋Š” ์‹คํ–‰ ๊ณ„ํš์„ ์ƒ์„ฑํ•˜๊ณ , ํ”„๋กœ์‹œ์ €(๋˜๋Š” ์ฝ”๋“œ) ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นœ ๋’ค SQL ์—”์ง„์— ์˜ํ•ด ์ˆ˜ํ–‰์ด ๋œ๋‹ค.

 

๐ŸฃSQL ํŒŒ์‹ฑ(Parsing)

์‚ฌ์šฉ์ž๊ฐ€ SQL์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด, ์ œ์ผ ๋จผ์ € SQL Parser๊ฐ€ SQL ๋ฌธ์žฅ์— ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.

๋ฌธ๋ฒ•์ ์œผ๋กœ ์˜ค๋ฅ˜๊ฐ€ ์—†์œผ๋ฉด ์˜๋ฏธ์ƒ ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ , ์ด๋Ÿฐ ๊ฒ€์‚ฌ ์ ˆ์ฐจ๋ฅผ ๋งˆ์น˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐœํ–‰ํ•œ SQL๊ณผ ๊ทธ ์‹คํ–‰ ๊ณ„ํš์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์บ์‹œ์— ์บ์‹ฑ๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค. ๋งŒ์•ฝ ์บ์‹ฑ๋˜์–ด์žˆ๋‹ค๋ฉด, ๋ฌด๊ฑฐ์šด ์ตœ์ ํ™” ๊ณผ์ • ์—†์ด ๊ณง๋ฐ”๋กœ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค

- ์†Œํ”„ํŠธ ํŒŒ์‹ฑ(Soft Parsing) : SQL๊ณผ ์‹คํ–‰๊ณ„ํš์„ ์บ์‹œ์—์„œ ์ฐพ์•„ ๊ณง๋ฐ”๋กœ ์‹คํ–‰๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ

- ํ•˜๋“œ ํŒŒ์‹ฑ(Hard Parsing) : SQL๊ณผ ์‹คํ–‰๊ณ„ํš์„ ์บ์‹œ์—์„œ ์ฐพ์ง€ ๋ชปํ•˜๊ณ  ์ตœ์ ํ™” ๊ณผ์ •์„ ๊ฑฐ์นœ ๋’ค ์‹คํ–‰ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์บ์‹œ๋Š” ํ•ด์‹œ๊ตฌ์กฐ๋กœ ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, SQL๋งˆ๋‹ค ํ•ด์‹œ ๊ฐ’์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ํ•ด์‹œ ๋ฒ„ํ‚ท์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ €์žฅํ•œ๋‹ค. SQL์„ ์ฐพ์„ ๋•Œ์—๋Š” SQL ๋ฌธ์žฅ์„ ํ•ด์‹œ ํ•จ์ˆ˜์— ์ž…๋ ฅ, ๋ณ€ํ™˜๋œ ํ•ด์‹œ ๊ฐ’์„ ์ด์šฉํ•ด ํ•ด๋‹น ํ•ด์‹œ ๋ฒ„ํ‚ท์„ ํƒ์ƒ‰ํ•˜๋ฉด ๋œ๋‹ค.

 

๐Ÿค SQL ์ตœ์ ํ™”(Optimization)

์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ SQL์„ ๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ตœ์ €๋น„์šฉ์˜ ์ฒ˜๋ฆฌ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•ด์ฃผ๋Š” DBMS์˜ ํ•ต์‹ฌ์—”์ง„์ด๋‹ค.

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

 

โœจSQL ์‹คํ–‰ ์ ˆ์ฐจ

1. ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜์™€ ์˜๋ฏธ์ƒ ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ๊ฒ€์‚ฌ.

2. ํ•ด์‹œ ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ๋ฐ˜ํ™˜๋œ ํ•ด์‹œ ๊ฐ’์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์บ์‹œ ๋‚ด ํ•ด์‹œ๋ฒ„ํ‚ท์„ ์ฐพ์•„๊ฐ.

3. ์ฐพ์•„๊ฐ„ ํ•ด์‹œ๋ฒ„ํ‚ท์— ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์—”ํŠธ๋ฆฌ๋ฅผ ์ฐจ๋ก€๋กœ ์Šค์บ”ํ•˜๋ฉฐ ๊ฐ™์€ SQL ๋ฌธ์žฅ์„ ์ฐพ์Œ.

4. SQL ๋ฌธ์žฅ์„ ์ฐพ์œผ๋ฉด ํ•จ๊ป˜ ์ €์žฅ๋œ ์‹คํ–‰๊ณ„ํš์„ ๊ฐ€์ง€๊ณ  ๋ฐ”๋กœ ์‹คํ–‰.

5. ์ฐพ์•„๊ฐ„ ํ•ด์‹œ๋ฒ„ํ‚ท์—์„œ SQL ๋ฌธ์žฅ์„ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ์ตœ์ ํ™” ์ˆ˜ํ–‰.

6. ์ตœ์ ํ™”๋ฅผ ๊ฑฐ์นœ SQL๊ณผ ์‹คํ–‰๊ณ„ํš์„ ๋ฐฉ๊ธˆ ํƒ์ƒ‰ํ•œ ํ•ด์‹œ๋ฒ„ํ‚ท ์ฒด์ธ์— ์—ฐ๊ฒฐ.

7. 6์—์„œ ์—ฐ๊ฒฐํ•œ ์‹คํ–‰๊ณ„ํš์„ ์‹คํ–‰.

 

 

 

๐Ÿงถ ์บ์‹ฑ๋œ SQL ๊ณต์œ  

 

๐Ÿฃ ์‹คํ–‰๊ณ„ํš ๊ณต์œ  ์กฐ๊ฑด

SQL ์ˆ˜ํ–‰ ์ ˆ์ฐจ์—์„œ ํ•˜๋“œ ํŒŒ์‹ฑ์„ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๊ณ , ์บ์‹ฑ๋˜์–ด์žˆ๋Š” ๋ฒ„์ „์„ ์ฐพ์•„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” SQL์„ ๋จผ์ € ์ฐพ์•„์•ผ ํ•˜๋Š”๋ฐ ์—ฌ๊ธฐ์—์„œ ์ฐพ๋Š” ๊ฒƒ์€ 'SQL ๋ฌธ์žฅ' ์ด๋‹ค. ๊ฒฐ๊ตญ, ๋ฌธ์žฅ์„ ํ•ด์‹œ์˜ ํ‚ค๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, SQL ๋ฌธ์žฅ์—์„œ ์ž‘์€ ๊ณต๋ฐฑ ๋ฌธ์ž ํ•˜๋‚˜๋งŒ ์ถ”๊ฐ€๋˜๋”๋ผ๋„ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฌธ์žฅ์œผ๋กœ ์ธ์‹ํ•˜๊ธฐ์— ์บ์‹ฑ๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค.

 

๐Ÿค ์‹คํ–‰๊ณ„ํš์„ ๊ณต์œ ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ

์œ„์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ ์ž‘์€ ๊ณต๋ฐฑ ๋ฌธ์ž ํ•˜๋‚˜๋งŒ ์ถ”๊ฐ€๋˜์–ด๋„ ๋‹ค๋ฅธ ๋ฌธ์žฅ์œผ๋กœ ์ธ์‹ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ๊ณต๋ฐฑ, ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„, ์ฃผ์„ ๋“ฑ์˜ ์•„์ฃผ ์ž‘์€ ๋ณ€ํ™”์—๋„ ๋‹ค๋ฅธ SQL๋กœ ์ธ์‹ํ•ด ๋ณ„๋„์˜ ์‹คํ–‰๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•˜๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํšจ์œจ์„ ์ค„์ด๊ณ  ๊ณต์œ  ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ SQL์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐœ๋ฐœ ์ดˆ๊ธฐ์— SQL ์ž‘์„ฑ ํ‘œ์ค€์„ ์ •์˜ํ•˜์—ฌ ์ด๋ฅผ ์ค€์ˆ˜ํ•˜๋„๋ก ํ•ด์•ผํ•œ๋‹ค. ๋ณดํ†ต ์ž„์˜์งˆ์˜๋ฅผ ํ†ตํ•ด ๋‚˜์˜ค๋Š” ๊ฒƒ์€ ์ˆ˜ํ–‰๋นˆ๋„๊ฐ€ ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฑ์ •ํ•  ๊ฒƒ์ด ์—†์ง€๋งŒ, ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ž…๋ ฅํ•œ ๊ฐ’์„ ๊ณ„์†ํ•ด์„œ ๋‹ค๋ฅธ SQL๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ๋ง์ด ๋‹ฌ๋ผ์ง„๋‹ค. 

 

 

 

๐Ÿน ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ

 

์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ์„ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. 

select *
from customer
where login_id = 'user';

select *
from customer
where login_id = 'user2';

 

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

์ด๊ฒƒ์„ ์œ„ํ•ด SQL์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๊ณง ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜(Bind Variable)์ด๋‹ค. ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ํ•˜๋‚˜์˜ ํ”„๋กœ์‹œ์ €๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ๋ฐ˜๋ณต ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

select * from customer where login_id = :login_id;

 

์œ„์™€ ๊ฐ™์ด ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ์ด๋ฅผ ์ฒ˜์Œ ์ˆ˜ํ–‰ํ•  ๋•Œ ํ•˜๋“œํŒŒ์‹ฑ์„ ํ†ตํ•ด ์‹คํ–‰๊ณ„ํš์„ ์ƒ์„ฑํ•œ๋‹ค. ์ดํ›„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์บ์‹ฑํ•ด๋‘๋ฉด์„œ ๋ฐ˜๋ณต์ž‘์—…์„ ํ•  ๋•Œ ๊ณ„์†ํ•ด์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. 

๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์žฌ์‚ฌ์šฉ์„ ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ํŒŒ์‹ฑ ์†Œ์š”์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์—ฌ์ค€๋‹ค. ๊ฒฐ๊ตญ, ์‹œ์Šคํ…œ ์ „๋ฐ˜์˜ CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ ์„ ๋‚ฎ์ถฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™•์žฅ์„ฑ์„ ๋†’์ด๊ฒŒ ๋œ๋‹ค. 

 

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

 

๐Ÿฃ  ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ

๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด SQL์ด ์ตœ์ดˆ ์ˆ˜ํ–‰๋  ๋•Œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ๊ท ์ผํ•œ ๊ฐ’์ด ๋“ค์–ด์˜ด์„ ๊ฐ€์ •ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์นผ๋Ÿผ ๋ถ„ํฌ๊ฐ€ ๊ท ์ผํ•˜์ง€ ์•Š์„ ๋•Œ์— ์‹คํ–‰ ์‹œ์ ์— ๋ฐ”์ธ๋”ฉ๋˜๋Š” ๊ฐ’์— ๋”ฐ๋ผ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์ด ๋‹ค๋ฅด๊ฒŒ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿด ๋•Œ์—๋Š” ๋ฐ”์ธ๋“œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ƒ์ˆ˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

๐Ÿ›’ static SQL๊ณผ Dynamic SQL

 

๐Ÿฃ Static SQL

StaticSQL์€ Stringํ˜• ๋ณ€์ˆ˜์— ๋‹ด์ง€ ์•Š๊ณ  ์ฝ”๋“œ ์‚ฌ์ด์— ์ง์ ‘ SQL๋ฌธ์„ ๊ธฐ์ˆ ํ•œ ๊ฒƒ์ด๋‹ค.  ์ฝ”๋“œ์— SQL๋ฌธ์„ ์„ž์–ด์„œ ๊ธฐ์ˆ ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์ปดํŒŒ์ผ์„ ๊ฑฐ์น˜๋ฉด์„œ SQL์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ Static SQL์˜ ๊ฒฝ์šฐ์—๋Š” ๋Ÿฐํƒ€์ž„ ์‹œ์— ์งˆ์˜๋ฌธ์ด ๋ณ€๊ฒฝ์ด ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ๋ฌธ ๋ถ„์„, ์œ ํšจ ์˜ค๋ธŒ์ ํŠธ ์—ฌ๋ถ€, ์˜ค๋ธŒ์ ํŠธ ์—‘์„ธ์Šค ๊ถŒํ•œ ๋“ฑ์„ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿค Dynamic SQL

Dynamic SQL์˜ ๊ฒฝ์šฐ์—๋Š” String ํ˜• ๋ณ€์ˆ˜์— ๋‹ด์•„์„œ SQL์„ ์ž‘์„ฑํ•œ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— SQL๋ฌธ์„ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ณ , ๋Ÿฐํƒ€์ž„ ์‹œ์— ์‚ฌ์šฉ์ž์—๊ฒŒ SQL์˜ ์ผ๋ถ€ ๋˜๋Š” ์ „์ฒด๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— PreCompiler์—์„œ๋Š” ๋‚ด์šฉ์„ ํ™•์ธํ•˜์ง€ ์•Š๊ณ  DBMS์— ๋ฐ”๋กœ ์ „์†กํ•˜๊ณ , ๋”ฐ๋ผ์„œ ์œ„์—์„œ ๊ฐ€๋Šฅํ•œ ๊ตฌ๋ฌธ ๋ถ„์„, ์œ ํšจ ์˜ค๋ธŒ์ ํŠธ ์—ฌ๋ถ€, ์˜ค๋ธŒ์ ํŠธ ์—‘์„ธ์Šค ๊ถŒํ•œ ๋“ฑ์„ ์ฒดํฌํ•  ์ˆ˜ ์—†๋‹ค.