1. μ κ·ν
μ κ·νμ κ°λ
μ κ·νμ μ μ
- κ²°μ μμ μν΄ ν¨μμ μ’ μμ κ°μ§κ³ μλ μΌλ° μμ±μ μμ‘΄μλ‘ νμ¬ μ λ ₯/μμ /μμ μ΄μ νμμ μ κ±°νλ κ²
μ κ·νμ νμμ±
- λ°μ΄ν° μ€λ³΅μ μ€μ΄κ³ λ°μ΄ν°λ₯Ό ꡬ쑰ν => λ°μ΄ν°μ μΌκ΄μ±, λ¬΄κ²°μ± λ³΄μ₯
- ν μ΄λΈμ λ μκ³ κ΄λ¦¬νκΈ° μ¬μ΄ μ¬λ¬ ν μ΄λΈλ‘ λΆλ¦¬ => μΆκ°/μμ /μμ μ μ΄μ νμ(Anomalies) λ°©μ§
μ κ·νμ νν
μ 1μ κ·ν(NF)
- κΈ°λ³Έ λͺ μ : μμ±μ νλμ κ°λ§ κ°μ ΈμΌ νλ©° ν μ΄λΈμ μ€λ³΅λ λ°μ΄ν°κ° μμ΄μΌ νλ€. (νλμ μΉΌλΌμλ νλμ κ°λ§)
- μ μ¬ν μμ±μ΄ λ°λ³΅λμ§ μλλ‘ μν°ν°(ν μ΄λΈ)λ₯Ό λΆλ¦¬νλ κ²
μ 2μ κ·ν(2NF)
- λͺ¨λ μΌλ° μμ±μ΄ λͺ¨λ μλ³μ μ 체μ μμ ν¨μμ μΌλ‘ μ’
μν΄μΌ νλ€.
- μ’ μ = νΉμ κ°μ΄ 무μμ μν΄ κ²°μ λλμ§λ₯Ό λνλ
- ν¨μ μ’ μμ±(Functional Dependency) : λ°μ΄ν°κ° νΉμ κΈ°μ€κ°μ μν΄ μ’ μλλ νμ
- κ²°μ μ(Determinant) = κΈ°μ€ κ° / μ’ μμ(Dependent) = μ’ μ κ°
- μ 2μ κ·νλ₯Ό νμ§ μμμ κ²½μ°
- λ°μ΄ν° μ€λ³΅
- μ λ°μ΄νΈ μ΄μ(λμΌ λ°μ΄ν°κ° μ¬λ¬ κ³³μ μμΌλ©΄ μ λ°μ΄νΈκ° μ΄λ €μ)
- μ½μ μ΄μ(λͺ¨λ νμ μ λ³΄κ° μ€λΉλμ§ μμΌλ©΄ μ½μ νκΈ° μ΄λ €μ)
- μμ μ΄μ(μ€λ³΅λ λ°μ΄ν°λ₯Ό μμ νλ €λ€ λ€λ₯Έ λ°μ΄ν°κΉμ§ μμ ν μ μμ)
μ 3μ κ·ν(3NF)
- μ 2μ κ·νμ λ§μ‘±νλ©΄μ λͺ¨λ λΉμ£Όμ μμ±μ΄ λͺ¨λ μ£Όμλ³μμλ§ μ’ μλκ³ , λΉμ£Όμ μμ± κ°μ μ’ μμ±μ΄ μμ΄μΌ νλ€.
- μ΄νμ μ’
μμ±(Transitive Dependency)μ μ κ±°
- Aκ° Bμκ² μν₯μ μ£Όκ³ , Bκ° Cμκ² μν₯μ μ€λ€λ©΄, Aκ° Cμκ² κ°μ μ μΌλ‘ μν₯μ μ£Όλ κ΄κ³
μ£Όμ μμ±, μ£Όμλ³μ, Primary Key(κΈ°λ³Έ ν€)
• μ£Όμ μμ± : ν보 ν€(κ° νμ μ μΌνκ² μλ³ν μ μλ μμ±)μ ν¬ν¨λ λͺ¨λ μμ± (⇔ λΉμ£Όμ μμ±)
• PK : ν보 ν€ μ€ λνλ‘ μ νλ μμ±
• μ£Όμλ³μ : λ°μ΄ν° λͺ¨λΈμμ μλ³ μμ± (⇔ λΉμλ³μ)
→ λͺ¨λ μ£Όμ μμ± μ€ νλλ₯Ό κ³ λ₯Έ κ²μ΄ 물리 λͺ¨λΈλ§μμμ PKκ° λκ³ , λ Όλ¦¬ λͺ¨λΈλ§μμλ μ£Όμλ³μλΌκ³ λ μΉνλ€.
μ°Έκ³ ) κ³ κΈ μ κ·ν
β 보μ΄μ€-μ½λ μ κ·ν(BCNF): λͺ¨λ κ²°μ μκ° ν보ν€μΈ μν (μ£Όμ μμ±λ ν보ν€μ μν΄μλ§ κ²°μ )
β‘ μ 4μ κ·ν(4NF): λͺ¨λ λ€μΉ μ’ μμ±(νλμ κ²°μ μ μμ±μ λν΄ λ κ° μ΄μμ μμ±μ΄ λ 립μ μΌλ‘ μ’ μνλ κ²½μ°)μ΄ ν보ν€λ₯Ό ν΅ν΄μλ§ μ‘΄μ¬νλ μν
β’ μ 5μ κ·ν(5NF): λͺ¨λ μ‘°μΈ μ’ μ(μ¬λ¬ ν μ΄λΈλ‘ λΆν΄λ λ°μ΄ν°λ₯Ό λ€μ μ‘°μΈνμ λ μλμ ν μ΄λΈκ³Ό κ°μμ§λ μμ± κ° κ΄κ³)μ΄ ν보ν€λ₯Ό ν΅ν΄μλ§ μ‘΄μ¬νλ μν
λ°μ κ·ν
λ°μ κ·νμ κ°λ
- λ°μ΄ν°λ² μ΄μ€ μ€κ³ μ μ κ·νμ μμΉμ μΌλΆ/μ λΆ μννμ¬ λ°μ΄ν°μ μ€λ³΅μ μλμ μΌλ‘ νμ©νκ±°λ ν μ΄λΈ ꡬ쑰λ₯Ό λ¨μννλ κ³Όμ
λ°μ κ·νκ° κ³ λ €λλ μν©
- μ‘°ν μ±λ₯ ν₯μ(νΉν μ½κΈ° μ°μ°μ΄ λ§μ μμ€ν )
- 쿼리 κ°μν(μ‘°μΈ μμ΄ μ κ·Ό κ°λ₯)
- νΈλμμ μ²λ¦¬ μκ° λ¨μΆ(νΉν μ°κΈ° μμ )
λ°μ κ·ν λ°©λ²
- ν μ΄λΈ λ³ν©(μ°κ΄λ μ¬λ¬ ν μ΄λΈμ νλλ‘ λ³ν©)
- μ€λ³΅ λ°μ΄ν° μΆκ°
- μ§κ³ λ°μ΄ν° μ μ₯(μ§κ³ ν¨μλ₯Ό μ¬μ©ν΄ μ‘°ννλ λ°μ΄ν°λ₯Ό 미리 κ³μ°ν΄μ μ μ₯)
λ°μ κ·ν μ κ³ λ € μ¬ν
- λ°μ΄ν° 무결μ±
- μ μ§ λ³΄μ
- μ μ© νμμ± κ²ν (κΌ νμν λλ§)
- ν©λ¦¬μ μΈ νλ¨(λ―Έλ―Έν μ΄μ < λ€λ₯Έ μ±λ₯ μν΄ => ν©λ¦¬μ X)
SQL 쿼리 μ€ν μμ
β FROM = μ¬λ£ μ€λΉ : ν μ΄λΈμμ λ°μ΄ν° κ°μ Έμ΄
β‘ WHERE = μ¬λ£ μ λ³ : 쑰건μ λ§λ ν μ ν
β’ GROUP BY = μ¬λ£ λΆλ₯ : κ°μ μ’ λ₯λΌλ¦¬ κ·Έλ£Ήν
β£ HAVING = λΆλ₯λ μ¬λ£λ₯Ό λ€μ μ λ³ : κ·Έλ£Ή μ€ μ‘°κ±΄μ λ§λ κ² μ ν
β€ SELECT = μ리 λ°©λ² μ ν : μ΅μ’ κ²°κ³Ό ν μ΄λΈμ μΉΌλΌμ λ§λ€κ±°λ μ ν
β₯ ORDER BY = νλ μ΄ν : μ΅μ’ κ²°κ³Ό ν μ΄λΈμ μΉΌλΌμ μ λ ¬
2. κ΄κ³μ μ‘°μΈμ μ΄ν΄
μ‘°μΈ
κ΄κ³μ μ‘°μΈ(Join)μ κ°λ
- κ΄κ³ = μλ‘ μ°κ²°λμ΄ μμ
- λΆλͺ¨ ν μ΄λΈμ μλ³μλ₯Ό μμ ν μ΄λΈμ μλ³μλ‘ ν¬ν¨ = μλ³ κ΄κ³
- λΆλͺ¨ ν μ΄λΈμ μλ³μλ₯Ό μμ ν μ΄λΈμ΄ μΌλ° μμ±μΌλ‘ λ°μλ€μ = λΉμλ³ κ΄κ³
- λ°μ΄ν° λͺ¨λΈλ§μμμ κ΄κ³ = SQLμμ μ‘°μΈ
- μ‘°μΈ = λ κ° μ΄μμ ν μ΄λΈμμ κ΄λ ¨λ λ°μ΄ν°λ₯Ό κ²°ν©νμ¬ μλ‘μ΄ κ²°κ³Ό μ§ν©μ μμ±νλ κ³Όμ
- λͺ©μ : νμν μ 보λ₯Ό ν¨μ¨μ μΌλ‘ κ²μ
κ³μΈ΅ν λ°μ΄ν° λͺ¨λΈ
κ³μΈ΅ν λ°μ΄ν° λͺ¨λΈμ κ°λ
- λ°μ΄ν°λ₯Ό λ무(tree) κ΅¬μ‘°λ‘ κ΅¬μ±ν΄ λ°μ΄ν° κ°μ κ΄κ³λ₯Ό κ³μΈ΅μ μΌλ‘ λνλ΄λ λͺ¨λΈ
- μμ μμμ νμ μμ κ°μ κ΄κ³κ° λͺ νν ꡬ쑰λ₯Ό μ μ©ν λ (ex. μ‘°μ§λ, κ°κ³λ)
- κ° λ Έλκ° λ¨ νλμ λΆλͺ¨ λ Έλλ§ κ°μ§ μ μμ
μνΈλ°°νμ κ΄κ³
μνΈλ°°νμ (Exclusive-OR) κ΄κ³μ κ°λ
- λ κ° μ΄μμ μν°ν° νμ μ΄ κ°μ μν°ν° μ§ν©μ μν μ μμ§λ§, νΉμ μμ μλ νλμ μν°ν° νμ μλ§ μν μ μλ κ΄κ³
- ex) μ΄λ€ νμμ΄ μ¬ν μ€μ ν΄νν κ²½μ°
- μ¬νμ ν μ΄λΈμ νμμ νλ² μ‘΄μ¬ -> ν΄ν ν μ¬νμ ν μ΄λΈμμ μ¬λΌμ§κ³ ν΄νμ ν μ΄λΈμ νλ² μ‘΄μ¬
- νμ ν λͺ μ΄ λμμ μ¬νμ, ν΄νμ μνλ₯Ό κ°μ§ μ μμ
μνΈλ°°νμ κ΄κ³μ νΉμ§
- μ격ν λΆλ₯
- μν μ ν
- λ°μ΄ν° 무결μ±(λ°μ΄ν° μ νμ±, μΌκ΄μ± μ μ§)
3. λͺ¨λΈμ΄ νννλ νΈλμμ μ μ΄ν΄
νΈλμμ μ κ°λ λ° μμ±
νΈλμμ μ κ°λ
- λ°μ΄ν°λ² μ΄μ€ λ΄μμ μ€νλλ νλμ λ Όλ¦¬μ μΈ μμ λ¨μ
- μ¬λ¬ μ°μ°μ ν¬ν¨ν μ μλ DB λͺ λ Ήμ λ Όλ¦¬μ λ¨μ
νΈλμμ μ ACID μμ±
- Atomicity μμμ± : λͺ¨λ μ°μ°μ΄ μ±κ³΅μ μΌλ‘ μλ£ / μ무κ²λ μ€νλμ§ μμ μν μ μ§
- Consistency μΌκ΄μ± : λ°μ΄ν°λ² μ΄μ€μ μΌκ΄μ±μ μ μ§
- Isolation κ³ λ¦½μ± : λ€λ₯Έ νΈλμμ μ μν₯μ λ°μ§ μκ³ λ 립μ μΌλ‘ μ€ν
- Durability μ§μμ± : μλ£λ νΈλμμ μ κ²°κ³Όλ μμ€ν μ€λ₯ λ°μ μμλ μ μ§
νΈλμμ μ μ΄ν΄
νΈλμμ μ μ΄ν΄
- λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν (DBMS)μμ λ§€μ° μ€μν κ°λ -> μμ μ±κ³Ό μ λ’°μ±μ 보μ₯νλ κΈ°λ³Έ λ¨μ
- ex) μν μμ€ν
μ ν κ³μ’μμ λ€λ₯Έ κ³μ’λ‘μ λ μ΄μ²΄λ νλμ νΈλμμ
- μΆκΈ μ°μ° νΉμ μ κΈ μ°μ° μ€ νλλΌλ μ€ν¨νλ©΄ νΈλμμ μ΄ λ‘€λ°±λμ΄ μ무κ²λ μ€νλμ§ μμ κ²μ²λΌ μ²λ¦¬
-- νΈλμμ
μμ
BEGIN TRANSACTION;
-- κ³μ’ Aμμ 100 μΆκΈ
UPDATE κ³μ’ SET μμ‘ = μμ‘ - 100 WHERE κ³μ’λ²νΈ = 'A';
-- κ³μ’ Bμ 100 μ
κΈ
UPDATE κ³μ’ SET μμ‘ = μμ‘ + 100 WHERE κ³μ’λ²νΈ = 'B';
-- νΈλμμ
컀λ°
COMMIT;
4. NULL μμ±μ μ΄ν΄
NULLμ κ°λ
NULLμ μ μ
- NULLμ μμ§ μ μλμ§ μμ νλμ 'κ°', μ«μλ λ¬Έμ λ λ€ μλ.
- λ°μ΄ν°κ° μκ±°λ μ μ μλ κ°
NULL κ°μ μ°μ°μ μΈμ λ NULLμ΄λ€
- NULLμ΄ '0' λλ 곡백 κ°κ³Ό λ€λ₯Έ μ΄μ = μ°μ°ν λ μ΄λ€ κ°μΈμ§ λͺ¨λ₯΄κΈ° λλ¬Έ
- NULLμ΄λΌλ κ°μ λͺ¨λ₯΄λ λ°μ΄ν°λ₯Ό κ°μ§κ³ μ΄λ€ μ°μ°μ ν΄λ κ²°κ³Όλ μ¬μ ν μ μ μμΌλ―λ‘ NULL
- νκΈ°λ²
- IE νκΈ°λ²μμλ NULL νμ© μ¬λΆ μ μ μμ
- λ°μ»€ νκΈ°λ²μμλ #μ΄ λΆμ μμ±μ NULL μλ¨, λκ·ΈλΌλ―Έκ° λΆμ μμ±μ NULL νμ©
μ°μ° & μ§κ³ν¨μμμμ NULL
μ°μ°μμμ NULL μ²λ¦¬
- NULLκ³Ό μμΉ λλ λ¬Έμμ΄μ μ°μ°νλ©΄ κ²°κ³Όλ νμ NULL
- ex) κ°κ²©κ³Ό μλμ μμ±μΌλ‘ κ°λ μμ΄ν μ μ΄ κ°κ²©μ κ³μ°νλ €κ³ ν λ, κ°κ²©, μλ λ μ€ νλλΌλ NULLμ΄λ©΄ μ΄ κ°κ²©λ NULL
- NULL κ°μ΄ ν¬ν¨λ μ°μ°μ μ νν μ²λ¦¬νλ €λ©΄ => NVL, ISNULL, COALESCE λ±μ ν¨μ μ¬μ©ν΄ NULL κ°μ λ€λ₯Έ κ±Έλ‘ λ체
NVL ν¨μ
- NVL([첫λ²μ§Έ μΈμ], [λλ²μ§Έ μΈμ]) => [첫λ²μ§Έ μΈμ]κ° NULLμΌ κ²½μ°, [λλ²μ§Έ μΈμ]λ‘ μ§μ λ κ° λ°ν
- ex) μμ μμ΄ν μ΄ κ°κ²©μ κ³μ°νλ μμμμ, κ°κ²©, μλμ΄ NULLμΌ κ²½μ° NVLμ μ¬μ©ν΄ 0μΌλ‘ λ체 κ°λ₯. NVL(κ°κ²©, 0), NVL(μλ, 0)
μ§κ³ν¨μμμμ NULL μ²λ¦¬
- μ§κ³ ν¨μμμλ NULLμ μ μΈνκ³ μ§κ³κ° μ΄λ£¨μ΄μ§
5. λ³Έμ§μλ³μ vs μΈμ‘°μλ³μ
λ³Έμ§μλ³μμ μΈμ‘°μλ³μμ ꡬλΆ
λ³Έμ§μλ³μμ μΈμ‘°μλ³μμ μ μ
- λ³Έμ§μλ³μ, μΈμ‘°μλ³μλ λ체 μ¬λΆμ λ°λΌ ꡬλΆν κ²
- λ³Έμ§μλ³μ : μ 무μ μν΄ λ§λ€μ΄μ§λ μλ³μ(ex. κ³ κ°λ²νΈ)
- μΈμ‘°μλ³μ: μ 무μ μΌλ‘ λ§λ€μ΄μ§μ§λ μμ§λ§ μμ‘°μλ³μκ° λ³΅μ‘ν΄μ μΈμμ μΌλ‘ λ§λ μλ³μ(ex. μ£Όλ¬Έλ²νΈ=κ³ κ°λ²νΈ+μ£Όλ¬Έλ²νΈ+μλ²)
λ³Έμ§μλ³μ μ
- ν μ΄λΈμ λ³Έμ§μ μΈ νΉμ±μ κΈ°λ°μΌλ‘ λ§λ€μ΄μ§
- ex) νλ² = νμμ΄ μ νν λ λΆμ¬λλ©° κ° νμμ κ³ μ νκ² μλ³ κ°λ₯, νμ λ°μ΄ν°μ κ³ μ ν νΉμ±μ μ§μ λ°μ
μΈμ‘°μλ³μ μ
- λ°μ΄ν°λ² μ΄μ€ μμ€ν μμ μλμΌλ‘ μμ±λκ³ κ΄λ¦¬λλ μλ³μ
- ex) μκ°μ μ² λ±λ‘ID = νκΈ° μ 보λ₯Ό λ°μ΄ν°λ² μ΄μ€μ μΆκ°ν λλ§λ€ 1,2,3..κ³Ό κ°μ΄ μμ°¨ λΆμ¬λ¨, λ±λ‘IDλ§μΌλ‘λ νΉμ νμμ΄ μ΄λ€ κ³Όλͺ©μ μΈμ μκ°νλμ§ κ΅¬μ²΄μ μ 보 μ»κΈ° νλ¦
μΈμ‘°μλ³μμ μ¬μ© μ μ£Όμν μ¬ν
μΈμ‘°μλ³μμ μ₯μ
- κ³ μ μ± λ³΄μ₯
- λ°μ΄ν° κ΄λ¦¬μ μ©μ΄μ±
- λ°μ΄ν°λ² μ΄μ€ μ±λ₯ ν₯μ
- 볡μ‘ν κ΄κ³μ λ¨μν
μΈμ‘°μλ³μ μ¬μ© μ μ£Όμ μ¬ν λ° λ¨μ
- μ€λ³΅ λ°μ΄ν°λ‘ μΈν λ°μ΄ν° νμ§ μ ν
- λΆνμν μΈλ±μ€ μμ±
μ°Έκ³
μ΄μ§ν¨μ€ 2025 SQLD SQL κ°λ°μ
β λΉ λ₯΄κ³ ν¨μ¨μ μΈ κ³΅λΆλ₯Ό μν SQLD μνμ λ°©λν SQL κ΄λ ¨ μ΄λ‘ μ SQLD μΆμ κ²½ν₯μ λ§μΆ° μκΈ° μ½κ² μ 리νμ¬ μκ°μ μ«κΈ°λ μνμλ€μ΄ μ΅λν κ³΅λΆ ν¨μ¨μ λμΌ μ μλλ‘ κ΅¬μ±νμ΅λλ€. β μ΄μ¬μ, λΉμ 곡μλ₯Ό μν΄ μ΄ν΄νκΈ° μ½κ² νμ΄ μ΄ SQLD μνμ SQLμ μ²μ μ νλ μ΄μ¬μλ λΉμ 곡μκ° μ΄ν΄νκΈ° μ½λλ‘ μμΈνκ² μ€λͺ
νμ΅λλ€. μμΈλ¬ μΆμ κ²½ν₯κ³Ό μ€μλλ₯Ό μλ΄νλ ‘TIP-BOX’, νλΆν μ€λͺ
μ λ΄μ ‘μ°Έκ³ -BOX’λ₯Ό νμ©νμ¬
- μ μ
- μ μ©λ¬Έ
- μΆν
- μν€λΆμ€
- μΆνμΌ
- 2025.02.04
728x90