ꡬ쑰적 μ§ˆμ˜μ–΄(SQL) μ™„λ²½ κ°€μ΄λ“œ

좜제 λΉˆλ„: 상
빈좜 νƒœκ·Έ: DDL, DML, DCL, 관계 λŒ€μˆ˜, 관계 해석

SQL (Structured Query Language)

κΈ°λ³Έ κ°œλ…

  • μ •μ˜: λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ œμ–΄ν•˜λŠ” ν‘œμ€€ μ–Έμ–΄ (κ΄€κ³„λŒ€μˆ˜ 기초)
  • μƒˆλ‘œμš΄ ν˜•νƒœμ˜ λ¦΄λ ˆμ΄μ…˜μ„ 좜λ ₯
  • μžμ—°μ–΄μ™€ μœ μ‚¬ν•œ ꡬ쑰의 κ³ κΈ‰ μ–Έμ–΄
  • μ •μ˜, μ‘°μž‘, μ œμ–΄ κΈ°λŠ₯이 각각 DDL, DML, DCL둜 κ΅¬ν˜„

λ‚΄μž₯ SQL

  • ν”„λ‘œκ·Έλž˜λ° 언어에 ν¬ν•¨λœ SQL (호슀트 ν”„λ‘œκ·Έλž¨)
  • 일반 SQL은 λ‹€μˆ˜ νŠœν”Œ λ°˜ν™˜ κ°€λŠ₯, λ‚΄μž₯ SQL은 단일 νŠœν”Œλ§Œ λ°˜ν™˜
  • λ³€μˆ˜-ν•„λ“œ 이름은 달라도 λ˜λ‚˜ νƒ€μž…μ€ 일치 ν•„μš”

SQL λͺ…λ Ήμ–΄ λΆ„λ₯˜

데이터 μ •μ˜μ–΄ (DDL: Data Definition Language)

  • μš©λ„: 데이터 μ‘°μž‘μ„ μœ„ν•œ 곡간(Database Object) μ •μ˜/μˆ˜μ •/λ³€κ²½
  • μ‚¬μš©μž: DBA(Database Administration)
  • λŒ€μƒ: μŠ€ν‚€λ§ˆ, 도메인, ν…Œμ΄λΈ”, λ·°, 인덱슀 λ“±

⭐ μ£Όμš” λͺ…λ Ήμ–΄

  • CREATE: DB객체 생성
  • ALTER: DB객체 μˆ˜μ •
  • DROP: DB객체 제거
  • TRUNCATE: DB객체 데이터 전체 μ‚­μ œ

데이터 μ‘°μž‘μ–΄ (DML: Data Markup Language)

  • 데이터 검색, μ‚½μž…, κ°±μ‹ , μ‚­μ œ κΈ°λŠ₯
  • TCL을 ν†΅ν•œ μ‹€ν–‰ μ „ μƒνƒœ 볡ꡬ κ°€λŠ₯

⭐ μ£Όμš” λͺ…λ Ήμ–΄

  • INSERT: 데이터 μ‚½μž…
  • UPDATE: 데이터 κ°±μ‹ 
  • DELETE: 데이터 μ‚­μ œ
  • SELECT: 데이터 쑰회

데이터 μ œμ–΄μ–΄ (DCL: Data Control Language)

  • μ ‘κ·Ό ν†΅μ œμ™€ 병행 μˆ˜ν–‰(곡유)λ₯Ό μœ„ν•œ μ œμ–΄ μ–Έμ–΄

⭐ μ£Όμš” λͺ…λ Ήμ–΄

  • GRANT: μ‚¬μš©μž κΆŒν•œ λΆ€μ—¬
  • REVOKE: μ‚¬μš©μž κΆŒν•œ 회수

νŠΈλžœμž­μ…˜ μ œμ–΄μ–΄ (TCL: Transaction Control Language)

  • COMMIT: νŠΈλžœμž­μ…˜ κ²°κ³Ό 반영
  • ROLLBACK: νŠΈλžœμž­μ…˜ μž‘μ—… μ·¨μ†Œ
  • CHECKPOINT: νŠΈλžœμž­μ…˜ 볡귀 지점 μ„€μ •

관계해석 (Relation Calculus)

κΈ°λ³Έ κ°œλ…

  • 정보가 무엇(What)인지 μ •μ˜ν•˜λŠ” λΉ„μ ˆμ°¨μ  μ–Έμ–΄
  • μˆ μ–΄ 해석 기반 (μ‹€ν–‰κ²°κ³Όκ°€ μ°Έ/κ±°μ§“μœΌλ‘œ λ‚˜νƒ€λ‚¨)
  • SQLλ¬Έκ³Ό 같은 μ§ˆμ˜μ–΄ μ‚¬μš©
  • νŠœν”Œ 관계 해석과 도메인 관계 ν•΄μ„μœΌλ‘œ ꡬ성

논리 기호

  • OR (∨): μ›μžμ‹ κ°„μ˜ β€˜λ˜λŠ”β€™ μ—°κ²°
  • AND (∧): μ›μžμ‹ κ°„μ˜ β€˜κ·Έλ¦¬κ³ β€™ μ—°κ²°
  • NOT (Β¬): μ›μžμ‹ λΆ€μ •

μ •λŸ‰μž

  • Universal Quantifier (βˆ€): λͺ¨λ“  것에 λŒ€ν•˜μ—¬ (for all)
  • Existential Quantifier (βˆƒ): μ–΄λŠ 것 ν•˜λ‚˜λΌλ„ 쑴재 (there exists)

κ΄€κ³„λŒ€μˆ˜ (Relational Algebra) ⭐빈좜⭐

κΈ°λ³Έ κ°œλ…

  • 정보λ₯Ό μ–΄λ–»κ²Œ(How) μœ λ„ν•˜λŠ”μ§€ μ •μ˜ν•˜λŠ” 절차적 μ–Έμ–΄
  • μ£Όμ–΄μ§„ λ¦΄λ ˆμ΄μ…˜μœΌλ‘œλΆ€ν„° μ›ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜ μœ λ„

μ—°μ‚°μž μ’…λ₯˜

  • 일반 μ§‘ν•© μ—°μ‚°μž: ν•©μ§‘ν•©(βˆͺ), ꡐ집합(∩), μ°¨μ§‘ν•©(βˆ’), ꡐ차곱(Γ—)
  • 순수 관계 μ—°μ‚°μž: SELECT(Οƒ), PROJECT(Ο€), JOIN(⨝), DIVISION(Γ·)

μ§‘ν•© μ—°μ‚°

  1. ν•©μ§‘ν•© (Union)
    • R βˆͺ S = {e | e ∈ R ∨ e ∈ S} = R UNION S
    • μ°¨μˆ˜μ™€ λŒ€μ‘ μ†μ„±μ˜ 도메인이 동일해야 함
    • 쀑볡 μ œκ±°ν•˜μ—¬ ν•©μΉ¨
  2. ꡐ집합 (Intersection)
    • R ∩ S = {e | e ∈ R ∧ e ∈ S} = R INTERSECT S
    • μ°¨μˆ˜μ™€ λŒ€μ‘ μ†μ„±μ˜ 도메인이 동일해야 함
    • 동일(쀑볡) νŠœν”Œ μΆ”μΆœ
  3. μ°¨μ§‘ν•© (Difference)
    • R - S = {e | e ∈ R ∧ e βˆ‰ S} = R MINUS S
    • μ°¨μˆ˜μ™€ λŒ€μ‘ μ†μ„±μ˜ 도메인이 동일해야 함
    • κ²°κ³ΌλŠ” λŒ€μƒ λ¦΄λ ˆμ΄μ…˜(R)의 λΆ€λΆ„μ§‘ν•©
  4. κ³±μ§‘ν•© (Cartesian Product)
    • μˆœμ„œμŒ μ§‘ν•© 생성
    • 차수/도메인이 달라도 κ°€λŠ₯
    • κ²°κ³Ό: κΈ°μˆ˜λŠ” 두 λ¦΄λ ˆμ΄μ…˜μ˜ κ³±, μ°¨μˆ˜λŠ” 두 λ¦΄λ ˆμ΄μ…˜ 차수의 ν•©
    • 암기법: μ—΄-μ°¨ (λΉ„)ν–‰-κΈ°

관계 μ—°μ‚°

  1. SELECT
    • μˆ˜ν‰μ (νŠœν”Œ) λΆ€λΆ„ μ§‘ν•© μΆ”μΆœ
    • ν‘œκΈ°: Οƒ <쑰건> (R)
    • 예: Οƒ λŒ€μ—¬νšŸμˆ˜ > 7 (R)
  2. PROJECT
    • 수직적(속성) λΆ€λΆ„ μ§‘ν•© μΆ”μΆœ
    • ν‘œκΈ°: Ο€ <리슀트> (R)
    • 예: Ο€ νšŒμ›λ²ˆν˜Έ, 이름 (R)
  3. JOIN
    • 쑰건에 λ§žλŠ” νŠœν”Œμ„ 합쳐 μƒˆλ‘œμš΄ λ¦΄λ ˆμ΄μ…˜ 생성
    • 곡톡 속성 ν•„μš”
    • μ’…λ₯˜:
      • R β‹ˆ 속성 = 속성 S: 동일 속성 κΈ°μ€€ 쑰인 (쀑볡 포함)
      • R β‹ˆ N S: 동일 속성 κΈ°μ€€ 쑰인 (쀑볡 μ œμ™Έ)
      • R β‹ˆ + S: 쑰건 뢈일치 νŠœν”Œλ„ 포함 (NULL 처리)
      • R β‹ˆ ΞΈ S: λ“±ν˜Έ μ™Έ 쑰건식 κΈ°μ€€ 쑰인
  4. DIVISION
    • R Γ· S: S 속성값 κΈ°μ€€μœΌλ‘œ R의 λ‚˜λ¨Έμ§€ 속성 쀑 S의 λͺ¨λ“  κ°’ λ§Œμ‘±ν•˜λŠ” νŠœν”Œ λ°˜ν™˜

쿼리 μ΅œμ ν™” κ·œμΉ™

μ£Όμš” 원칙

  • μ ˆλŒ€μ μΈ μ΅œμ ν™” κ·œμΉ™μ€ μ—†μŒ
  • Project(수직적) 연산은 μ΅œλŒ€ν•œ 일찍 μˆ˜ν–‰
  • Select(μˆ˜ν‰μ ) 연산도 가급적 일찍 μˆ˜ν–‰
  • Join 연산은 μ„±λŠ₯ 영ν–₯이 ν¬λ―€λ‘œ λ§ˆμ§€λ§‰μ— μˆ˜ν–‰