๋ฐ˜์‘ํ˜•

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€?

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database)์˜ ์ •์˜ 

 

DB๋ž€ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์—๊ฒŒ ๊ณต์œ ๋˜์–ด ์‚ฌ์šฉ๋  ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ , ๊ตฌ์กฐ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์„ ์ด์•ผ๊ธฐํ•œ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฒด๊ณ„์ ์ธ ๊ด€๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ (DBMS)์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค.

 

DBMS๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ๋ณด๊ด€ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค

=> ์ด๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ๋ณ€๊ฒฝ, ์‚ญ์ œ, ๊ฒ€์ƒ‰ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•จ

 

(๋Œ€ํ‘œ์ ์ธ DBMS๋Š” Oracle, MySQL, MsSQL, Teradata, SyBase ๋“ฑ์ด ์žˆ๋‹ค)

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS)์˜ ํŠน์„ฑ

 

DBMS๋Š” ์‹ค์‹œ๊ฐ„ ์ ‘๊ทผ์„ฑ, ๊ณ„์†์ ์ธ ๋ณ€ํ™”, ๋™์‹œ ๊ณต์šฉ, ๋‚ด์šฉ์— ์˜ํ•œ ์ฐธ์กฐ ๋“ฑ์˜ ํŠน์„ฑ์„ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค

 

1. ์‹ค์‹œ๊ฐ„ ์ ‘๊ทผ์„ฑ(Real-time-processing) : ์ปดํ“จํ„ฐ๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ €์žฅ ์žฅ์น˜์—์„œ ๊ด€๋ฆฐ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ง€์†์ ์ด๊ณ  ๋น„์ •ํ˜•์ ์ธ ์งˆ์˜์— ๋Œ€ํ•˜์•ผ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค

 

2. ๊ณ„์†์ ์ธ ๋ณ€ํ™”(Continuous evolution) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋Š” ๋™์ ์ด๋‹ค

=> ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ๊ทธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…(Insert), ์‚ญ์ œ(Delete), ๊ฐฑ์‹ (Update) ๋“ฑ์˜ ๋ณ€ํ™”๋ฅผ ์ฃผ์–ด ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค.

 

3. ๋™์‹œ ๊ณต์šฉ(Concurrent sharing) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๊ฐ์ž ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์—ฌ ์ด์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค

 

4. ๋‚ด์šฉ์— ์˜ํ•œ ์ฐธ์กฐ(Contents reference) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ฐธ์กฐ๋Š” ๋ ˆ์ฝ”๋“œ์˜ ์ฃผ์†Œ๋‚˜ ์œ„์น˜์— ์˜ํ•ด์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ์ž๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋‚ด์šฉ, ์ฆ‰ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ’์— ๋”ฐ๋ผ ์ฐธ์กฐ๋œ๋‹ค

 

SQL ์‚ฌ์šฉ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์šฉ์–ด

 

1. ํ…Œ์ด๋ธ” : ํ…Œ์ด๋ธ”์€ ๊ตฌ์กฐํ™”๋œ ์—‘์…€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์™€ ๊ฐ™๋‹ค

(ํ…Œ์ด๋ธ”์€ ํŠน์ •ํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ์  ๋ชฉ๋ก์œผ๋กœ ๋ฌถ์€ ๊ฒƒ์ด๋‹ค)

 

 

์œ„์˜ ์‚ฌ์ง„์„ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค

=> ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๊ณ  ํ…Œ์ด๋ธ” ์ด๋ฆ„์€ ๊ณ ์œ ํ•ด์•ผ ํ•œ๋‹ค

(๋™์ผํ•œ ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ” ์ด๋ฆ„์€ ํ—ˆ๋ฝ๋˜์ง€ ์•Š์Œ)

 

 

2. ์Šคํ‚ค๋งˆ(Schema) : ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๋ฐฉ์‹์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค

(์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ค ํ˜•์‹์œผ๋กœ ์ง€์ •ํ• ์ง€ ์ •์˜)

 

=> ์Šคํ‚ค๋งˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กด์žฌํ•˜๋Š” ์ž๋ฃŒ์˜ ๊ตฌ์กฐ ๋ฐ ๋‚ด์šฉ๊ณผ ์ž๋ฃŒ๋“ค์˜ ๋…ผ๋ฆฌ์ , ๋ฌผ๋ฆฌ์  ํŠน์„ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ๋ฅผ ์ง€์นญํ•œ๋‹ค

 

3. ์—ด(Column) : ํ…Œ์ด๋ธ”์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ๊ฐ์˜ ์ •๋ณด๋ฅผ ๋งํ•œ๋‹ค

 

์œ„์˜ ํ…Œ์ด๋ธ” ์‚ฌ์ง„์„ ์˜ˆ๋กœ ๋“ค๋ฉด 'id' ์™€ 'created_at' , 'user_id', 'title' ๋“ฑ์ด ์—ด์ด๊ณ , ๊ฐ๊ฐ์˜ ๋ณ€์ˆ˜๋Š” ํŠน์ •ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐ ์—ด์—๋Š” ๊ณ ์œ ํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹์ด ์ง€์ •๋˜๋Š”๋ฐ

 

=> ์ •์ˆ˜ ๋ฐ์ดํ„ฐ, ๋ฌธ์ž ๋ฐ์ดํ„ฐ, ํ†ตํ™” ๋ฐ์ดํ„ฐ, ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋“ฑ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค

(๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์ง€์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์—ด์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜๋ฅผ ํŠน์ •ํ•œ ํ˜•์‹์œผ๋กœ ์ œํ•œํ•œ๋‹ค๋Š” ์˜๋ฏธ)

 

 

4. ํ–‰(Row) : ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋Š” ํ–‰์— ์ €์žฅ๋œ๋‹ค 

 

์œ„์˜ ํ…Œ์ด๋ธ” ์‚ฌ์ง„์„ ์˜ˆ์‹œ๋กœ 2๊ฐœ์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ด ํ…Œ์ด๋ธ”์˜ ํ–‰์€ 2๊ฐœ์ด๋‹ค

 

(ํ…Œ์ด๋ธ”์˜ 'ํ–‰'์„ ๊ฐ™์€ ์˜๋ฏธ๋กœ '๋ ˆ์ฝ”๋“œ'๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ธฐ๋„ ํ•œ๋‹ค)

 

5. ๊ธฐ๋ณธ ํ‚ค(Primary key) : ํ…Œ์ด๋ธ”์—๋Š” ๊ฐ ํ–‰์„ ๊ณ ์œ ํ•˜๊ฒŒ ํ•˜๋Š” ์—ด์ด ์กด์žฌํ•œ๋‹ค (์ด๋ฅผ ๊ธฐ๋ณธ ํ‚ค๋ผ๊ณ  ํ•จ)

 

์˜ˆ๋ฅผ ๋“ค์–ด ์œ„์˜ ํ…Œ์ด๋ธ” ์‚ฌ์ง„์—์„œ๋Š” ๊ฐ ํ–‰์„ ๊ณ ์œ ํ•˜๊ฒŒ ํ•˜๋Š” ํ‚ค(key)๊ฐ’์€ 'id'์ด๋‹ค

 

=> ๊ธฐ๋ณธ ํ‚ค๋Š” ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค

(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ œ์–ด ๋ฐ ๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ตœ์ ํ™” ๋“ฑ์„ ์œ„ํ•ด ๊ฐ ํ…Œ์ด๋ธ”์— ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ž„)

 

SQL์ด๋ž€?

 

SQL์˜ ๊ฐœ์š”

 

SQL์€ Structured Query Language์˜ ์•ฝ์ž๋กœ, ์‚ฌ์šฉ์ž์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ ๊ฐ„์˜ ์˜์‚ฌ์†Œํ†ต์„ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ๊ณ ์•ˆ๋œ ์–ธ์–ด์ด๋‹ค

 

SQL์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ์˜ ๊ทœ์น™์— ๋”ฐ๋ผ ์ •์˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–ธ์–ด๋ผ๊ณ ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค!

 

SQL์˜ ์žฅ์ ์€ ์˜์–ด ๋ฌธ์žฅ๊ณผ ์œ ์‚ฌํ•˜๊ณ  ๋ช‡ ๊ฐœ์˜ ๋‹จ์–ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด ๋ฐฐ์šฐ๊ธฐ๊ฐ€ ์‰ฝ๊ณ 

(SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ณ , ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋ถ„๋ช…ํ•œ ์šฉ๋„๋กœ ๋งŒ๋“ค์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ)

 

๋Œ€๋ถ€๋ถ„์˜ DBMS๊ฐ€ SLQ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ํ•œ ์–ธ์–ด๋ฅผ ๋ฐฐ์›Œ์„œ ๋‹ค์–‘ํ•œ DBMS์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

 

SQL์˜ ์ข…๋ฅ˜

 

SQL์€ ๊ตฌ์กฐํ™”๋œ ์งˆ์˜ ์–ธ์–ด์ด๋‹ค.

 

=> ์ด๋Š” ๋ฐ์ดํ„ฐ ์ •์˜์–ด(DDL), ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(DML), ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด(DCL) ๋“ฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค

 

1. ๋ฐ์ดํ„ฐ ์ •์˜์–ด (DDL : Data Definition Language) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ณต๊ฐ„๊ณผ ํ˜•์‹์„ ์ •์˜ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณจ์กฐ๊ฐ€ ๊ฐ–์ถฐ์ง„๋‹ค

 

๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๊ณต๊ฐ„์ด 'ํ…Œ์ด๋ธ”'์ด๊ณ , ์ด ํ…Œ์ด๋ธ” ํ˜•์‹์ด '์Šคํ‚ค๋งˆ'๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค

 

=> ์ฆ‰, DDL์€ ๋ฐ์ดํ„ฐ์™€ ๊ทธ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ์–ธ์–ด์ด๋‹ค

 

  • CREATE : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์ƒ์„ฑ
  • DROP : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์‚ญ์ œ
  • ALTER : ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์žฌ์ •์˜

 

2. ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด (DML : Data Manipulation Language) : DDL๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„(ํ…Œ์ด๋ธ”)๊ณผ ํ˜•์‹(์Šคํ‚ค๋งˆ)์„ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ๊ทธ ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์ˆ˜์ •, ์‚ญ์ œ, ์กฐํšŒํ•˜๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(DML)๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค

 

=> ์ฆ‰, DML์€ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰๊ณผ ์ˆ˜์ • ๋“ฑ์˜ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์–ธ์–ด์ด๋‹ค

 

  •  INSERT : ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ ์‚ฝ์ž…/์ž…๋ ฅ
  • DELETE : ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ์‚ญ์ œ
  • UPDATE : ๊ธฐ์กด ํ…Œ์ด๋ธ” ์•ˆ์˜ ๋ฐ์ดํ„ฐ ์ˆ˜์ •
  • SELECT : ํ…Œ์ด๋ธ” ๋‚ด ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰

 

3. ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด (DCL : Data Control Language) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ ์ œ์–ด๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด์ด๋‹ค

 

  • GRANT : ํ…Œ์ด๋ธ”์— ๊ถŒํ•œ ๋ถ€์—ฌ
  • REVOKE : ๋ถ€์—ฌํ•œ ๊ถŒํ•œ ์ทจ์†Œ/ํšŒ์ˆ˜
๋ฐ˜์‘ํ˜•