๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‡ฉ๐Ÿ‡ฆ๐Ÿ‡น๐Ÿ‡ฆ๐Ÿ‡ง๐Ÿ‡ฆ๐Ÿ‡ธ๐Ÿ‡ช

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB) ๋ฌผ๋ฆฌ์  ์ €์žฅ ๊ตฌ์กฐ์™€ ์ธ๋ฑ์Šค

 

๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

- ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”๊ณผ ๋ ˆ์ฝ”๋“œ๋“ค์€ ๋””์Šคํฌ์— ์ €์žฅ๋œ๋‹ค

- ์šด์˜์ฒด์ œ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ด์šฉ

 

 

ํ…Œ์ด๋ธ”์˜ ๋ฌผ๋ฆฌ์  ์ €์žฅ ๊ตฌ์กฐ

ํŒŒ์ผ : ํ•˜๋‚˜ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”๋“ค์„ ์ €์žฅ

๋ธ”๋ก : ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ ˆ์ฝ”๋“œ๋“ค์„ ์ €์žฅ, ๊ฐ ๋ธ”๋ก์€ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์†ํ•จ

 

๋ธ”๋ก ๋‚ด ๋ ˆ์ฝ”๋“œ ์ €์žฅ ๋ฐฉ์‹

- ํ…Œ์ด๋ธ”์˜ ์ •์˜์— ๋”ฐ๋ผ ๊ณ ์ •๊ธธ์ด ๋˜๋Š” ๊ฐ€๋ณ€๊ธธ์ด์˜ ๋ ˆ์ฝ”๋“œ๋“ค์„ ์ €์žฅ

 

์˜ˆ) ๊ณ ์ •๊ธธ์ด

create table course (
     course_id char(4),
     title     char(20),
     credit    int
)

์˜ˆ) ๊ฐ€๋ณ€๊ธธ์ด

create table course (
      course_id char(4),
      title     varchar2(20),
      credit    int
)

 

ํด๋Ÿฌ์Šคํ„ฐ๋ง

โœ” ์ž์ฃผ ๊ฒ€์ƒ‰๋˜๋Š” ํ•„๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ด€๋ จ๋œ ๋ ˆ์ฝ”๋“œ๋“ค์„ ๊ฐ™์€ ๋ธ”๋ก์ด๋‚˜ ์ธ ์ ‘ํ•œ ๋ธ”๋ก์— ์ €์žฅํ•˜์—ฌ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•

 

์ธ๋ฑ์Šค(index)

์‚ฌ์šฉ ๋ชฉ์ 

- ํŒŒ์ผ ๋‚ด์—์„œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋œ ์œ„์น˜๋ฅผ ๋นจ๋ฆฌ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

 

โœ” ๊ฒ€์ƒ‰ ์†๋„ ํ–ฅ์ƒ

- ์ธ๋ฑ์Šค๊ฐ€ ์—†์œผ๋ฉด ์–ด๋Š ์œ„์น˜์— ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•ด์•ผํ•จ

์˜ˆ) ๋„์„œ๊ด€์˜ ์ฑ… ๊ฒ€์ƒ‰, ์ „ํ™”๋ฒˆํ˜ธ๋ถ€์˜ ๊ฒ€์ƒ‰

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ธ๋ฑ์Šค

- ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ฌผ๋ฆฌ์  ์ €์žฅ ์œ„์น˜๋ฅผ ๋ณ„๋„๋กœ ๊ธฐ๋ก

์ธ๋ฑ์Šค์˜ ๊ตฌ์กฐ → ์ธ๋ฑ์Šค ์—”ํŠธ๋ฆฌ : (๊ฒ€์ƒ‰ ํ‚ค, ์ฃผ์†Œ) ์Œ

 

SQL ์ธ๋ฑ์Šค

 

์˜ˆ) student ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ 10000๊ฐœ, dept_id ๊ฐ’์ด '920'์ธ ๋ ˆ์ฝ”๋“œ์˜ ์ˆ˜๋Š” 500๊ฐœ๋ผ๊ณ  ๊ฐ€์ •

select *
from student
where dept_id = ‘920’ and address = ‘์„œ์šธ’

 

โœ” ์ธ๋ฑ์Šค๊ฐ€ ์—†์„ ๊ฒฝ์šฐ : ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ์ˆœ์ฐจ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•จ → 10000๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ๊ฒ€์ƒ‰

โœ” dept_id ํ•„๋“œ์— ์ธ๋ฑ์Šค๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ : dept_id๊ฐ€ '920'์ธ ๋ ˆ์ฝ”๋“œ๋“ค๋งŒ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ → 500๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋งŒ์„ ๊ฒ€์ƒ‰

 

์กฐ์ธ ์—ฐ์‚ฐ์˜ ํšจ์œจ์ ์ธ ์ฒ˜๋ฆฌ

 

์˜ˆ) student ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ 10000๊ฐœ, department ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ 100๊ฐœ๋ผ๊ณ  ๊ฐ€์ •

select count(*)
from student s, department d
where address = ‘์„œ์šธ’ and s.dept_id = d.dept_id

 

โœ” ์ธ๋ฑ์Šค๊ฐ€ ์—†์„ ๊ฒฝ์šฐ : ์กฐ์ธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด, department ํ…Œ์ด๋ธ”์˜ ๊ฐ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•ด student ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์กฐํšŒํ•˜์—ฌ ๋น„๊ต, ์‹œ๊ฐ„ ๋น„์šฉ์ด ๋‘ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ ์ˆ˜์˜ ๊ณฑ์— ๋น„๋ก€

 

- student ํ…Œ์ด๋ธ”์˜ dept_id ํ•„๋“œ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๊ฐ€ ๊ตฌ์ถ•๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

- department ํ…Œ์ด๋ธ”์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด์„œ, ๊ฐ ๋ ˆ์ฝ”๋“œ์˜ dept_id ๊ฐ’์— ๋Œ€ํ•ด ์œ„ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ student ํ…Œ์ด๋ธ”์˜ ๋Œ€์‘๋˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์กฐํšŒ

- ๊ฒ€์ƒ‰๋œ ๋ ˆ์ฝ”๋“œ ์ค‘์—์„œ address ํ•„๋“œ ๊ฐ’์ด '์„œ์šธ' ์ธ ๋ ˆ์ฝ”๋“œ๋งŒ ์„ ํƒ

- ์‹œ๊ฐ„ ๋น„์šฉ : ๋‘ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ ์ˆ˜์˜ ํ•ฉ๊ณผ ๋น„๋ก€ 10000+100

 

์˜ˆ)

select dept_id, count(*)
from student
group by dept_id

 

์ธ๋ฑ์Šค๊ฐ€ ์—†์„ ๊ฒฝ์šฐ : student ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ์กฐํšŒํ•ด์•ผ ํ•จ

 

student ํ…Œ์ด๋ธ”์˜ dept_id ํ•„๋“œ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ :

- ์ธ๋ฑ์Šค์—์„œ ๊ฐ dept_id ๊ฐ’์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ์—”ํŠธ๋ฆฌ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋ฉด ๋œ๋‹ค

- ํ…Œ์ด๋ธ”์— ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ  ์ธ๋ฑ์Šค๋งŒ์œผ๋กœ ์งˆ์˜ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

 

 

๊ธฐ๋ณธํ‚ค์™€ ์ธ๋ฑ์Šค

 

โ—ฝ ๊ธฐ๋ณธํ‚ค

- ๋ ˆ์ฝ”๋“œ์˜ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ์‹œ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์กฐํšŒ๋จ

- ๊ธฐ๋ณธํ‚ค์— ๋Œ€ํ•ด์„œ๋Š” ๋Œ€๋ถ€๋ถ„์˜ DBMS๊ฐ€ ์ž๋™์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑ

 

โ—ฝ ์ธ๋ฑ์Šค์˜ ์žฅ์ 

- ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ํ–ฅ์ƒ

 

โ—ฝ ์ธ๋ฑ์Šค์˜ ๋‹จ์ 

- ํ…Œ์ด๋ธ”์— ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ • ์‹œ ์ธ๋ฑ์Šค๋„ ๊ฐฑ์‹  ํ•„์š”

- ์ธ๋ฑ์Šค์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์œผ๋ฉด ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ • ์—ฐ์‚ฐ ์†๋„๊ฐ€ ์ €ํ•˜๋จ

- ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋””์Šคํฌ ๊ณต๊ฐ„ ํ•„์š”

 

โœ” ์งˆ์˜ ์‹œ๊ฐ„ ๋ฐ ๋นˆ๋„, ์‚ฝ์ž…/์‚ญ์ œ/์ˆ˜์ • ์‹œ๊ฐ„ ๋ฐ ๋นˆ๋„, ์ €์žฅ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ ๋“ฑ์„ ์ข…ํ•ฉ์ ์œผ๋กœ ๊ณ ๋ คํ•˜์—ฌ ๊ฒฐ์ •ํ•ด์•ผ ํ•จ