λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Deep knowledge/βœ” μ£Όλ‹ˆμ–΄ λ§ˆμΌ€ν„°μ˜ 기둝

[주마의 SQL] λ§ˆμΌ€ν„°μ˜ λ°μ΄ν„°λ² μ΄μŠ€ μ΄ν•΄ν•˜κΈ°

 

1. 데이터 λ² μ΄μŠ€λž€?

컴퓨터 μ‹œμŠ€ν…œμ— μ „μžμ μœΌλ‘œ μ €μž₯된 체계적 λ°μ΄ν„°μ˜ λͺ¨μŒ

 

2. 데이터 베이슀 관리 μ‹œμŠ€ν…œ (Database management system, DBMS)?

λ‹€μˆ˜μ˜ μ‚¬μš©μžλ“€μ΄ λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μ˜ 데이터λ₯Ό μ ‘κ·Όν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” μ†Œν”„νŠΈ 웨어 λ„κ΅¬μ˜ 집합
λ°μ΄ν„°λ² μ΄μŠ€λŠ” 보톡 λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(DBMS)에 μ˜ν•΄ μ œμ–΄λœλ‹€.

μ‚¬μš©μž λ˜λŠ” λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ˜ μš”κ΅¬λ₯Ό μ²˜λ¦¬ν•˜κ³  적절히 μ‘λ‹΅ν•˜μ—¬ 데이터λ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•΄μ€Œ

 

3. 데이터 베이슀 μ‹œμŠ€ν…œμ˜ νŠΉμ§•

1. μ‹€μ‹œκ°„ μ ‘κ·Όμ„±(real time accessibility): μ‹€μ‹œκ°„ μ„œλΉ„μŠ€, 수 초 내에 κ²°κ³Όλ₯Ό μ„œλΉ„μŠ€

2. 계속적인 λ³€ν™”(continuous change): 데이터 값은 μ‹œκ°„μ— 따라 λ³€ν™”

3. λ™μ‹œ 곡유(concurrent sharing): μ„œλ‘œ λ‹€λ₯Έ 업무 λ˜λŠ” μ—¬λŸ¬ μ‚¬μš©μžμ—κ²Œ λ™μ‹œμ— 곡유

4. λ‚΄μš©μ— λ”°λ₯Έ μ°Έμ‘°(reference by content): 물리적인 μœ„μΉ˜κ°€ μ•„λ‹Œ 데이터 값에 따라 μ°Έμ‘°

 

4. 데이터 베이슀 κΈ°λ³Έ κΈ°λŠ₯

1. 쑰회

2. κ°±μ‹ 

1) μ‚½μž…

2) μ‚­μ œ

3) μˆ˜μ •

 

-> λ™μ‹œμ„± μ œμ–΄: λ™μ‹œμ— λ°œμƒν•˜λŠ” 것을 μ œμ–΄ν•˜λŠ” 것이 μ€‘μš”

(예λ₯Ό λ“€μ–΄, μ˜ν™”κ΄€μ— 같은 자리 μ˜ˆμ•½ 및 κ²°μ œκ°€ λ™μ‹œμ— 이루어져 쀑볡 μ˜ˆλ§€κ°€ λ˜λŠ” 것을 μ œμ–΄ν•˜μ—¬μ•Ό ν•œλ‹€.)

 

-> μž₯μ•  λŒ€μ‘ κΈ°λŠ₯: 데이터 손싀 λ°œμƒ μ‹œ, 볡원 κ°€λŠ₯ν•΄μ•Όν•œλ‹€. 즉, λ³΄ν˜Έμ™€ μž₯애에 λŒ€ν•œ λ°©μ•ˆμ΄ ν•„μˆ˜

 

-> λ³΄μ•ˆ κΈ°λŠ₯: μ‚¬μš©μžμ—κ²Œ 보여쀄 λ°μ΄ν„°λ§Œ λ³΄μ—¬μ£ΌλŠ” 것, λ³΄μ•ˆμ— μœ„λ°°λ˜λŠ” λ°μ΄ν„°λŠ” λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„ λ‚΄μ—μ„œ 관리

(μ•”ν˜Έν™” λ˜λŠ” λ§ˆμŠ€ν‚Ήμ„ 톡해)

 

5. λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ’…λ₯˜

1. κ³„μΈ΅ν˜• λ°μ΄ν„°λ² μ΄μŠ€: 계측 ꡬ쑰둜 데이터 관리, 졜초의 ν˜„λŒ€μ  λ°μ΄ν„°λ² μ΄μŠ€, λ°μ΄ν„°μ˜ 관계λ₯Ό 트리 ꡬ쑰둜 μ •μ˜ν•˜κ³ , λΆ€λͺ¨<->μžμ‹ ν˜•νƒœμ˜ κ°–λŠ” ꡬ쑰, κ·ΈλŸ¬λ‚˜ λ°μ΄ν„°μ˜ 쀑볡 문제 λ°œμƒ

2. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€: 2차원 ν‘œ ν˜•μ‹μœΌλ‘œ 데이터 관리(ν–‰, μ—΄)둜 κ΅¬μ„±λœ Tableκ°„ 관계λ₯Ό λ‚˜νƒ€λ‚Ό λ•Œ μ‚¬μš©

κ°€μž₯ 보편적, μ‚¬μš©ν•˜κΈ° 쉽고 νŽΈλ¦¬ν•˜κ³  μ•ˆμ •μ 

-> λŒ€ν‘œμ μœΌλ‘œ 였라클, MySQL, Access, MsSql λ“±, 데이터λ₯Ό ν…Œμ΄λΈ” ν˜•νƒœ'μŠ€ν‚€λ§ˆ'둜 관리

3. 객체 지ν–₯ν˜• λ°μ΄ν„°λ² μ΄μŠ€: κΈ°μ‘΄ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ™€ 달리 λͺ¨λ“  정보λ₯Ό κ°μ²΄λΌλŠ” ν˜•νƒœλ‘œ ν‘œν˜„

λ³΅μž‘ν•œ ꡬ쑰의 정보 λͺ¨λΈλ§μ΄ 즉각 ν‘œν˜„ κ°€λŠ₯ν•˜λ‚˜ μ•ˆμ •μ„±κ³Ό μ„±λŠ₯이 떨어짐

4. NOSQL λ°μ΄ν„°λ² μ΄μŠ€(λΉ„κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€): Not Only SQL, 졜근 κ°κ΄‘λ°›λŠ” λ°μ΄ν„°λ² μ΄μŠ€, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ κΈ°λŠ₯ 일뢀 μ‚­μ œ, μŠ€ν‚€λ§ˆκ°€ μ—†μœΌλ©° λŒ€κ·œλͺ¨ 데이터λ₯Ό μœ μ—°ν•˜κ²Œ μ²˜λ¦¬ν•  수 있으며, 섀계가 λ‹¨μˆœν•˜κ³  μˆ˜ν‰ ν™•μž₯에 μš©μ΄ν•˜λ‹€.

 

-> μ’…λ₯˜ μ˜ˆμ‹œ: 였라클, IBM, SQL Server, Postgre SQL, TIBERO(κ΅­λ‚΄), CUBRID(κ΅­λ‚΄ μ˜€ν”ˆμ†ŒμŠ€)

 

6. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€(Relational Database)λž€? (=RDB)

ν‚€(key)와 κ°’(value)λ“€μ˜ κ°„λ‹¨ν•œ 관계λ₯Ό ν…Œμ΄λΈ”ν™” μ‹œν‚¨ κ°„λ‹¨ν•œ μ›μΉ™μ˜ 전상 정보 λ°μ΄ν„°λ² μ΄μŠ€

2차원 ν‘œλ₯Ό μ΄μš©ν•œ 데이터 λͺ©λ‘ν™” 관리λ₯Ό ν•˜λŠ” 것이 μ£Ό λͺ©μ  (예λ₯Ό λ“€μ–΄, Excel, Google μŠ€ν”„λ ˆλ“œμ‹œνŠΈ)

 

κ΄€κ³„ν˜• λͺ¨λΈ

1. 집합둠에 κΈ°λ°˜μ„ λ‘” μΌμ’…μ˜ λ°μ΄ν„°λ² μ΄μŠ€ λͺ¨λ°, μ—λ“œκ±° μ»€λ“œ(Edgar Codd)에 μ˜ν•΄ 졜초둜 μ œμ•ˆλ˜κ³  체계화됨

2. 컬럼(μ—΄)κ³Ό 둜우(ν–‰)을 μ΄λ£¨λŠ” ν•˜λ‚˜ μ΄μƒμ˜ ν…Œμ΄λΈ”μ΄ 쑴재, ν…Œμ΄λΈ”μ— 데이터가 μ €μž₯

3. 각 ν…Œμ΄λΈ”μ€ 각각의 둜우λ₯Ό μ‹λ³„ν•˜λŠ” κΈ°λ³Έ ν‚€(Primary Key)κ°€ 있음

4. μ»¬λŸΌμ€ ν•„λ“œ(Field) ν˜Ήμ€ 속성(Attribute)라고도 뢈림, λ‘œμš°λŠ” λ ˆμ½”λ“œ ν˜Ήμ€ νŠœν”Œ(Tuple)둜 뢈림

 

7. SQL(Structured Query Language)μ΄λž€?

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(RDBMS)의 데이터λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μ„€κ³„λœ 특수 λͺ©μ μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄

 

μ‚¬μš©μž -> SQLμž‘μ„± 및 λͺ…λ Ή μˆ˜ν–‰ -> DBMS(μ‹œμŠ€ν…œ μ†Œν”„νŠΈμ›¨μ–΄) -> λ°μ΄ν„°λ² μ΄μŠ€

즉, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터λ₯Ό 쑰회 및 κ°±μ‹ ν•˜κΈ° μœ„ν•œ μ–Έμ–΄

 

8. SQL의 μž₯점

1. 일반 ν”„λ‘œκ·Έλž˜λ° 언어에 λΉ„ν•΄ κ°„κ²°

2. κ°„λ‹¨ν•œ μ˜μ–΄ λ¬Έμž₯으둜 데이터 쑰회 및 갱신이 κ°€λŠ₯

3. κ°„λ‹¨ν•œ κΈ°λ³Έ μ‘°μž‘ λͺ…λ Ήμ–΄ (SELECT, INSERT, UPDATE, DELETE)

 

9. ν…Œμ΄λΈ”, ν–‰, μ—΄

ν…Œμ΄λΈ”: κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ 2차원 ν‘œ, ν…Œμ΄λΈ” μ„€κ³„λŠ” λ°μ΄ν„°λ² μ΄μŠ€ μ„€κ³„μ˜ μ€‘μš”ν•œ λΆ€λΆ„

ν–‰(ROW): ν…Œμ΄λΈ”μ˜ κ°€λ‘œμΆ•

μ—΄(COLUMN): ν…Œμ΄λΈ”μ˜ μ„Έλ‘œμΆ•

10. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μ†Œν”„νŠΈμ›¨μ–΄ (=DBMS)

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” DBMSλ₯Ό μ„€μΉ˜ν•΄μ•Όν•œλ‹€.

λŒ€ν‘œμ μΈ DBMS (였라클, MySQL, SQL Server, PostgreSQL λ“±)

 

11. λ°μ΄ν„°λ² μ΄μŠ€μ™€ DBMS의 차이

λ°μ΄ν„°λ² μ΄μŠ€: 좔상적 κ°œλ…

DBMS: 싀체적 κ°œλ…, κΈ°λŠ₯ 및 ꡬ쑰 μ‹€ν˜„μ„ μœ„ν•œ ꡬ체적 μ†Œν”„νŠΈμ›¨μ–΄

-> 즉 DBMSλŠ” λ°μ΄ν„°λ² μ΄μŠ€ μžμ²΄κ°€ μ•„λ‹Œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‹€ν˜„μ‹œμΌœμ£ΌλŠ” μΌμ’…μ˜ 도ꡬ

 

 

β€» 패슀트캠퍼슀 κ°•μ˜ ν›„κΈ°! λ³Έ κ²Œμ‹œλ¬Όμ€ λ°μ΄ν„°λ² μ΄μŠ€μ™€ SQLD ν•©κ²©νŒ¨μŠ€ Online κ°•μ˜ 볡슡 및 기둝을 μœ„ν•œ 글이며,곡뢀λ₯Ό μœ„ν•΄ 일뢀 μΆ”κ°€ λ‚΄μš© λ¦¬μ„œμΉ˜ 및 λ‚΄μš© μ‚­μ œλ₯Ό 톡해 μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€. (λ‚΄λˆλ‚΄μ‚° κ°•μ˜)