[DB] ๐Ÿ•ต๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ดˆ ๊ฐœ๋…

ํ•ด๋กฑ๊ทธยท2023๋…„ 4์›” 24์ผ
0

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋ชฉ๋ก ๋ณด๊ธฐ
1/9

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database, DB)

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

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

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

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ๋Š” ๋‹ค๋ฅธ ๋ณ„๋„์˜ ๋ฏธ๋“ค์›จ์–ด์— ์˜ํ•ด ๊ด€๋ฆฌ๋œ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ด๋Ÿฌํ•œ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS: Database Management System)์ด๋ผ๊ณ  ํ•œ๋‹ค.

DB ํŠน์ง•

  1. ์‚ฌ์šฉ์ž์˜ ์งˆ์˜์— ๋Œ€ํ•˜์—ฌ ์ฆ‰๊ฐ์ ์ธ ์ฒ˜๋ฆฌ์™€ ์‘๋‹ต์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
  2. ์ƒ์„ฑ(create), ์‚ฝ์ž…(insert), ๊ฐฑ์‹ (update), ์‚ญ์ œ(delete)๋ฅผ ํ†ตํ•˜์—ฌ ํ•ญ์ƒ ์ตœ์‹ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.
  3. ์‚ฌ์šฉ์ž๋“ค์ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ ๋‚ด์šฉ์— ๋”ฐ๋ผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  5. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋…๋ฆฝ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ๋ฐ์ดํ„ฐ์˜ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ์™€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ณ„๊ฐœ๋กœ ๋™์ž‘๋œ๋‹ค.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

ํ˜„์žฌ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” DB์˜ ํ•œ ์ข…๋ฅ˜

  • ํ…Œ์ด๋ธ”(Table)๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ์ด ํ…Œ์ด๋ธ”์€ ํ‚ค(key)์™€ ๊ฐ’(Value)์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ์ด์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ์˜ ์ข…์†์„ฑ์„ ๊ด€๊ณ„(relationship)๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ง•์ด๋‹ค.
  • ํ…Œ์ด๋ธ”์€ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ํ–‰๊ณผ ์—ด์— ๋Œ€์‘ํ•˜๋Š” ๊ฐ’(value)์„ ๊ฐ€์ง„๋‹ค.
  • ๊ด€๊ณ„ํ˜• db๋Š” ์œ„์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋œ ํ…Œ์ด๋ธ”์ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๋“ค๊ณผ ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ๋ชจ์—ฌ์žˆ๋Š” ์ง‘ํ•ฉ์ฒด๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ–‰ (row)
= ๋ ˆ์ฝ”๋“œ (record)
= ํŠœํ”Œ (tuple)
* ํ–‰์˜ ์ˆ˜ = ์นด๋””๋„๋ฆฌํ‹ฐ (cardinality) = ๊ธฐ์ˆ˜ = ๋Œ€์‘์ˆ˜

์—ด (column)
= ์†์„ฑ (attribute)
= ํ•„๋“œ (field)
* ์—ด์˜ ์ˆ˜ = ๋””๊ทธ๋ฆฌ (degree) = ์ฐจ์ˆ˜

๊ด€๊ณ„ํ˜• DB ํŠน์ง•

  1. ๋ฐ์ดํ„ฐ์˜ ๋ถ„๋ฅ˜, ์ •๋ ฌ, ํƒ์ƒ‰ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
  2. ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋œ ๋งŒํผ ์‹ ๋ขฐ์„ฑ์ด ๋†’๊ณ , ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋„ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ด์ค€๋‹ค.
  3. ๊ธฐ์กด์— ์ž‘์„ฑ๋œ ์Šคํ‚ค๋งˆ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.
  4. db์˜ ๋ถ€ํ•˜๋ฅผ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค.

๋Œ€ํ‘œ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค

โœ”๏ธ SQL : MySQL, SQLite, PostgroSQL, Oracle etc.
โœ”๏ธ NON-SQL : mongoDB, DynamoDB, CouchDB etc.


SQL(Structured Query Language)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ๋””์ž์ธ ๋œ ์–ธ์–ด์ด๋‹ค.
db์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜, ์กฐ์ž‘, ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ SQL ๊ตฌ๋ฌธ๋„ ๋ชฉ์ ์— ๋งž๊ฒŒ ํฌ๊ฒŒ 4๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

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

๋Œ€ํ‘œ์ ์ธ SQL

MySQL
๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS: Relational DBMS)์ด๋‹ค.
MySQL์€ ์˜คํ”ˆ์†Œ์Šค์ด๋ฉฐ, ๋‹ค์ค‘ ์‚ฌ์šฉ์ž์™€ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•œ๋‹ค.
๋˜ํ•œ, C์–ธ์–ด, C++, JAVA, PHP ๋“ฑ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ API๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

MySQL์€ ์œ ๋‹‰์Šค, ๋ฆฌ๋ˆ…์Šค, ์œˆ๋„์šฐ ๋“ฑ ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠนํžˆ PHP์™€ ํ•จ๊ป˜ ์›น ๊ฐœ๋ฐœ์— ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

MySQL์˜ ์žฅ์ 

  1. ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์›ํ•œ๋‹ค.
  3. ํฌ๊ธฐ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ๋„ ์•„์ฃผ ๋น ๋ฅด๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ๋„๋ฆฌ ์•Œ๋ ค์ง„ ํ‘œ์ค€ SQL ํ˜•์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.
  5. MySQL ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉ์ž์˜ ์šฉ๋„์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

Reference
์ถœ์ฒ˜
์ฐธ๊ณ ํ•œ ๊นƒํ—ˆ๋ธŒ

profile
์‚ฌ๋ž‘์•„ ์ปดํ“จํ„ฐํ•ด ~

0๊ฐœ์˜ ๋Œ“๊ธ€