πλ°©μ‘ν΅μ λνκ΅/π»μ»΄ν¨ν°κ³Όν κ°λ‘
[μ»΄ν¨ν°κ³Όν κ°λ‘ ] 14κ° - λ°μ΄ν°λ² μ΄μ€(2)
junbin2
2025. 11. 10. 19:09
β 1. κ΄κ³ν λͺ¨λΈ
(1) κ΄κ³ν λ°μ΄ν° λͺ¨λΈ

- κ΄κ³ν λ°μ΄ν° λͺ¨λΈμ μ€μΈκ³ μ 보λ₯Ό 2μ°¨μ ν μ΄λΈ("릴λ μ΄μ ") νμμΌλ‘ νννκ³ κ΅¬νν κ²μ.
- ν μ΄λΈμ μ΄μ©νμ¬ λ°μ΄ν°μ λ°μ΄ν°μ κ΄κ³λ₯Ό νννλ©°, λ°μ΄ν°λ² μ΄μ€λ₯Ό 2μ°¨μ ν μ΄λΈμ μ§ν©μΌλ‘ κ°μ£Όν¨.
- μ€μ λ°μ΄ν°κ° ν μ΄λΈ ννλ‘ μ μ₯λλ κ²μ μλ―Ένμ§ μμ. ( λ Όλ¦¬μ μΌλ‘ νννμ¬, μ§κ΄μ μΌλ‘ μ΄ν΄νκΈ° μ½κ² νν )
- μ¦, λ Όλ¦¬μ ννμ λΆκ³Όνλ©°, DB λ΄λΆμμλ ν μ΄λΈμ΄ μλ λμ€ν¬ λΈλ‘, νμ΄μ§, B+νΈλ¦¬, ν΄μ ꡬ쑰 λ±μΌλ‘ μ μ₯λ¨.
(2) κ΄κ³ν λͺ¨λΈκ³Ό κ΄λ ¨λ μ©μ΄

- 릴λ μ΄μ : κ΄κ³ν λ°μ΄ν° λͺ¨λΈμμ ν μ΄λΈμ μλ―Έν¨.
- ν¬ν: ν νμ μλ―Έν¨.
- μΉ΄λλλ¦¬ν° (νμ μ΄ ν©): ν 릴λ μ΄μ (ν μ΄λΈ) νμ μλ₯Ό μλ―Έν¨. ( ν¬νμ κ°μλ₯Ό μλ―Έν¨ )
- μ°¨μ(μ΄μ μ΄ ν©): ν 릴λ μ΄μ (ν μ΄λΈ) μ΄μ μλ₯Ό μλ―Έν¨.
- λλ©μΈ: μμ±μ΄ κ°μ§ μ μλ λͺ¨λ κ°μ μ§ν©μ΄λ©°, λ°μ΄ν°μ νμ© λ²μλ₯Ό μλ―Έν¨. ( νλ²(INT), μ΄λ¦(VARCHAR2) )
- 릴λ μ΄μ μ€ν€λ§: 릴λ μ΄μ μ΄λ¦κ³Ό μμ±λ€μ λ Όλ¦¬μ μΌλ‘ λνλΈκ²μ μλ―Έν¨.
- 릴λ μ΄μ μΈμ€ν΄μ€: μ΄λ μμ μ ννλ€μ μ§ν©μ μλ―Έν¨. μ‘°ννμ λ ν΄λΉ ννλ€μΈλ―,...
(3) 릴λ μ΄μ - κ°λ
- DBλ μ¬λ¬ κ°μ 릴λ μ΄μ (ν μ΄λΈ)μΌλ‘ ꡬμ±μ΄ λ¨.
- 릴λ μ΄μ μ΄ κ°μ§ μ μλ λͺ¨λ μμ±κ°μ λͺ¨λ κ²½μ°μ μμ λν λΆλΆμ§ν©. ( μΉ΄ν μμ κ³±μ λΆλΆμ§ν© )
- 릴λ μ΄μ = 릴λ μ΄μ μ€ν€λ§ + 릴λ μ΄μ μΈμ€ν΄μ€
[ 릴λ μ΄μ μ€ν€λ§ ]
νμ(μ΄λ¦: VARCHAR, νλ²: INT, νκ³Ό: VARCHAR)
- 릴λ μ΄μ μ λ Όλ¦¬μ ꡬ쑰μ΄λ©°, 릴λ μ΄μ μ΄λ¦κ³Ό μμ±μΌλ‘ ꡬμ±μ΄ λμ΄ μμ.
- μκ°μ 무κ΄νλ©° λ¨μ§ μμ±μ λν νμ μ§μ ( κ²°κ΅ λ¦΄λ μ΄μ μ€ν€λ§ = ν μ΄λΈ κ»λ°κΈ°λ‘ λ³Ό μ μμ )
- μ¦, 릴λ μ΄μ μ ꡬ쑰μ μΈ μ μλ₯Ό μλ―Ένλ©°, μ΄λ€ μμ±μ΄ μλμ§, μ΄λ¦μ΄ 무μμΈμ§, λ°μ΄ν° νμ μ μ΄λ€ κ²μΈμ§ λ±μ μ μν¨.
- μ 리νλ©΄, 릴λ μ΄μ μ€ν€λ§λ ν μ΄λΈμ΄ μ΄λ€ κ΅¬μ‘°λ‘ λμ΄ μλμ§λ§ μ μν΄ λμ "ν" μ.
[ 릴λ μ΄μ μΈμ€ν΄μ€ ]
- μ΄λ ν μμ μ 릴λ μ΄μ μ΄ κ°μ§κ³ μλ ν¬νμ μ§ν©
- μ½μ , μμ , κ°±μ λ±μ ν΅ν΄ μκ°μ λ°λΌ λ³νλ 릴λ μ΄μ μ κ°μ μλ―Έν¨.
- μ¦, μ€μ ν μ΄λΈμ μ μ₯λ λ°μ΄ν°(ν, ν¬ν) λ€μ μ§ν©μ. ( μ€μ λ€μ΄κ° λ°μ΄ν°λ€μ μ§ν©μ 릴λ μ΄μ μΈμ€ν΄μ€λΌν¨ )
(4) 릴λ μ΄μ - νΉμ§
- 릴λ μ΄μ (ν μ΄λΈ) μ μ¬λ¬ ν¬ν(ν)μΌλ‘ μ΄λ£¨μ΄μ§ μ§ν©μ΄λ©°, 4κ°μ§ νΉμ§μ κ°μ§κ³ μλ€.
- ( ν¬νμ μ μΌμ±, ν¬νμ 무μμμ±, μμ±μ 무μμμ±, μμ±κ°μ μμμ± )
- μ§ν©μ κΈ°λ³Έμ μΌλ‘ μ€λ³΅μ΄ μκ³ , μμλ μλ νΉμ§μ΄ μλλ°, 릴λ μ΄μ λ μ΄λ° μ±μ§μ κ·Έλλ‘ λ°λ¦.
[ ν¬νμ μ μΌμ± ]
- νλμ 릴λ μ΄μ μλ μ€λ³΅λ ν¬νμ΄ μμ ν¬νμ μ μΌν μλ³μ΄ κ°λ₯ν¨.
- μ¦, κ° νμ μ μΌν΄μΌ νλ€λ μλ―Έμ΄λ©°, μ΄κ±Έ 보μ₯νκΈ° μν΄ κΈ°λ³Έν€(Primary Key) κ° νμν¨.
[ ν¬νμ 무μμμ± ]

- ν 릴λ μ΄μ μ ν¬ν¨λ ν¬νλ€μ μμλ₯Ό κ°μ§κ³ μμ§ μμ
- μ¦, ν μ΄λΈμμ νμ μμλ μμκ° λ°λμ΄λ μλ―Έλ λμΌνλ€λ λ»μ.
[ μμ±μ 무μμμ± ]

- νλμ 릴λ μ΄μ μ ꡬμ±νλ μμ±λ€ μ¬μ΄μλ μμκ° μμ.
- μ¦, μ»¬λΌ μμκ° λ¬λΌλ κ°μ μλ―ΈλΌλ λ»μ.
- κ²°κ΅ λ°μ΄ν°μ λ Όλ¦¬μ μλ―Έκ° κ°λ€λ©΄, μ»¬λΌ μμκ° λ¬λΌλ λ¬Έμ κ° μμ
[ μμ±κ°μ μμμ± ]

- λͺ¨λ μμ±μ κ°μ λ μ΄μ λΆν΄κ° λΆκ°λ₯ν νλμ κ°μΈ μμκ°μ κ°μ§.
- μ¦, νλμ μ μλ νλμ κ°λ§ λ€μ΄κ°μΌ ν¨μ λ»ν¨. ( μ¬λ¬κ°κ° μμΌλ©΄ μμμ± μ΄λΌλ νΉμ§μ ν΄μΉ¨ )
(5) ν€(Key)
- 릴λ μ΄μ (ν μ΄λΈ) μμμ ν¬ν(κ° ν)μ ꡬλΆνκΈ° μν κΈ°μ€(μλ³μ) κ° ν€(Key)μ΄λ€.
- ν€μ νΉμ±μ λ§μ‘±νλ €λ©΄, μ μΌμ±κ³Ό μ΅μμ±μ λ§μ‘±ν΄μΌλ§ νλ€.
- μ μΌμ±: ν€ κ°μ΄ κ° νμ μ μΌνκ² μλ³ν μ μμ΄μΌ νλ€. ( unique )
- μ΅μμ±: ν€λ ν¬νμ μ μΌνκ² μλ³ν μ μλ μ΅μνμ μμ±λ€λ‘λ§ κ΅¬μ±λμ΄μΌ νλ€. ( λΆνμν 컬λΌμ΄ μμ΄λ©΄ μλλ€λ λ» )
- μ½κ²λ§ν΄, νλμ 컬λΌλ§μΌλ‘ ν€ κ°μ μ΄μ©ν΄μΌνλ©°, λΆνμν 컬λΌμ΄ μμ΄λ©΄ μλλ€λ μλ―Έμ.
(6) ν€(Key) μ μ’ λ₯
- μνΌν€: μ μΌμ±μ λ§μ‘±νλ μμ± λλ μμ±μ μ§ν©
- ν보ν€: μνΌν€ μ€μμ μ΅μμ±κΉμ§ λ§μ‘±νλ κ²
- κΈ°λ³Έν€: νλ³΄ν€ μ€μμ κΈ°λ³Έμ μΌλ‘ μ¬μ©ν ν€λ‘ μ ν λ κ²μ μλ―Έν¨.
- λ체ν€: νλ³΄ν€ μ€μμ κΈ°λ³Έν€λ‘ μ νλμ§ μμ κ²μ μλ―Έν¨.
- μΈλν€: λ€λ₯Έ 릴λ μ΄μ μ κΈ°λ³Έν€λ₯Ό κ·Έλλ‘ μ°Έμ‘°νλ μμ± λλ μμ±μ μ§ν©μ μλ―Έν¨.
- ( μνΈ κ΄λ ¨ μλ 릴λ μ΄μ μ¬μ΄μμ λ°μ΄ν° μΌκ΄μ±μ μ μ§νλ μλ¨μ )
(7) μ μ½ μ‘°κ±΄
- μ μ½ μ‘°κ±΄μ λͺ¨λ 릴λ μ΄μ μΈμ€ν΄μ€κ° λ§μ‘±ν΄μΌ νλ 쑰건μ μλ―Έν¨.
- μ¦, ν μ΄λΈ μμ λ°μ΄ν°κ° μ§μΌμΌ νλ κ·μΉμ λ§ν¨.
- μ΄κ±Έ μ μ§ν€λ©΄ λ°μ΄ν°κ° μλͺ»λκ±°λ λͺ¨μλ μ μκΈ° λλ¬Έμ DBMSκ° μλμΌλ‘ λ§μμ€.
[ μμ μ μ½ μ‘°κ±΄ ]
- κ° μμ±μ κ°μ λ°λμ ν΄λΉ μμ(Domain) μ ν¬ν¨λμ΄μΌ νλ©°, μμκ°μ΄μ΄μΌ ν¨.
- μ½κ²λ§ν΄, κ° μ»¬λΌμλ 미리 μ ν΄μ§ μλ£ν(λ°μ΄ν° νμ )μ κ°λ§ λ€μ΄μ¬ μ μμΌλ©°, ν μ μμλ λΆλ¦¬ν μ μλ νλμ κ°μΈ μμκ°λ§ λ€μ΄μμΌ νλ€λ μλ―Έμ΄λ€. ( μμκ° μμ: "μμΈ, λΆμ°" X / "μμΈ" O )
[ ν€ μ μ½ μ‘°κ±΄ ]
- μλ‘ λ€λ₯Έ λ ν¬νμ λͺ¨λ μμ±μ λν΄ κ°μ μμ±κ° μ‘°ν©μ κ°μ§ μ μμ
- νλμ ν€κ° λͺ¨λ ν¬νμ μ μΌνκ² μλ³ν μ μμ΄μΌ ν¨.
- μ½κ²λ§ν΄, ν μ΄λΈ μμμ λ νμ΄ λμΌν ν€κ°μ κ°μ§ μ μλ€λ μλ―Έ(UNIQUE)μ΄λ€.
- μλ₯Ό λ€λ©΄ νλ²μ΄ ν€λ³Έν€λΌλ©΄, κ°μ νλ²μ κ°μ§ νμμ λ λͺ μ‘΄μ¬ ν μ μλ μλ―Έμ. μ¦, μ μΌμ±μ λ§μ‘±ν΄μΌν¨.
[ κ°μ²΄ λ¬΄κ²°μ± μ μ½ μ‘°κ±΄ ]
- ν¬νμ μ μΌνκ² μλ³νκΈ° μν΄μ μ΄λ ν κΈ°λ³Έν€κ°λ λκ°μ΄ λ μ μμ.
- μ¦, κΈ°λ³Έν€ κ°μ λ(NULL) μΌ μ μλ μ μ½ μ‘°κ±΄μ. ( κ° νμ ꡬλ³ν΄μΌ νλ―λ‘, λΉμλ μ μμ )
[ μ°Έμ‘° λ¬΄κ²°μ± μ μ½ μ‘°κ±΄ ]
- λ€λ₯Έ 릴λ μ΄μ μ μν΄ μ°Έμ‘°λλ ν¬νμ λ°λμ κ·Έ 릴λ μ΄μ λ΄μ μ‘΄μ¬ν΄μΌ ν¨. ( μ°Έμ‘° λ¬΄κ²°μ± μ΄μ΄μΌ νλ€λ μλ―Έμ )
- μ½κ²λ§ν΄, μΈλν€κ° μ°Έμ‘°νλ κ°μ λ°λμ μ°Έμ‘°λ ν μ΄λΈ(λΆλͺ¨ ν μ΄λΈ)μ μ‘΄μ¬ν΄μΌ νλ€λ κ·μΉμ΄λ€.
β 2. λ°μ΄ν°λ² μ΄μ€ μ€κ³
- μ¬μ©μμ μꡬ 쑰건μμλΆν° DB ꡬ쑰λ₯Ό λμΆνκ³ κ΅¬μΆνλ κ³Όμ μ΄λ€.

- λ°μ΄ν° μ²λ¦¬μ μμ© νλ‘κ·Έλ¨ μ€κ³ κ΄λ ¨ νλ(Java λ±) κ³Ό DB λ΄μ© λ° κ΅¬μ‘° μ€κ³ κ΄λ ¨ νλ λ κ°μ§ μ€κ³λ₯Ό κ°μ΄ λ³νν¨.
(1) μ€κ³ κ³Όμ - μ¬μ©μ μꡬ μ¬ν λΆμ
- μ¬μ©μμ μλνλ λ°μ΄ν°λ² μ΄μ€μ λͺ©μ κ³Ό μ©λλ₯Ό νμ νλ κ²μΌλ‘λΆν° μ€κ³κ° μμλλ€.
- μ μ μ μΈ λ°μ΄ν°λ² μ΄μ€ μ¬μ©μκ° μ΄λ€ μ¬μ©μ μΈμ§ λ²μλ₯Ό νμ νμ¬ μλ³μ νκ² λ¨.
- 곡μμ μΈ μꡬ 쑰건 λͺ μΈ μ μ - μ μ μ 보 ꡬ쑰(DB λ΄μ©/ꡬ쑰 μ€κ³)μ λν μꡬ 쑰건 νμ
- 곡μμ μΈ μꡬ 쑰건 λͺ μΈ μ μ - λμ DB μ²λ¦¬(λ°μ΄ν° μ²λ¦¬, μμ© νλ‘κ·Έλ¨) μꡬ 쑰건 νμ
- 곡μμ μΈ μꡬ 쑰건 λͺ μΈ μ μ - λ²κΈ°κ΄μ μ μ½ μ‘°κ±΄ νμ
- μꡬ μ¬ν λͺ μΈμ, μꡬ μ¬ν μ μμ λ±μ λ¬Έμν μμ κΉμ§ ν¬ν¨
(2) μ€κ³ κ³Όμ - κ°λ μ DB μ€κ³
- κ°μ²΄ νμ κ³Ό κ°μ²΄ νμ κ°μ κ΄κ³λ₯Ό λνλ΄κΈ° μν΄ νΉμ DBMSμλ 무κ΄ν κ°λ μ λ°μ΄ν° λͺ¨λΈμ μ¬μ©νμ¬ λ°μ΄ν°λ² μ΄μ€μ λν κ°λ μ ꡬ쑰λ₯Ό μμ±νλ κ³Όμ μ΄λ€.
- κ°λ μ ꡬ쑰: μ¬μ©μμ μꡬ μ¬νμ κ°λ¨ν κΈ°μ ν κ²μΌλ‘, λ°μ΄ν° νμ , κ΄κ³, μ μ½ μ‘°κ±΄μ μ€λͺ νλ€. ( ERD )
- E-R λͺ¨λΈ: κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ₯Ό μν λνμ κ°λ μ λͺ¨λΈ
- νΈλμμ (μμ© νλ‘κ·Έλ¨) λͺ¨λΈλ§ κ³Όμ λ ν΄λΉ λ¨κ³μμ μ΄λ€μ§.
(3) μ€κ³ κ³Όμ - λ Όλ¦¬μ DB μ€κ³
- μμ© DBMSλ₯Ό μ¬μ©ν΄μ κ³ μμ€μ κ°λ μ ꡬ쑰λ₯Ό λͺ©ν DBMSμ λ Όλ¦¬μ λ°μ΄ν° λͺ¨λΈλ‘ λ³ννλ κ³Όμ μ΄λ€.
- μ¦, ν΄λΉ λ¨κ³μμλΆν°λ νΉμ DBMSμ μμ‘΄νλ λ¨κ³λΌλ μλ―Έμ΄λ©°, λ Όλ¦¬μ λ°μ΄ν° λͺ¨λΈλ§ λ¨κ³λΌκ³ λΆλ¦.
- κ²°κ³Όμ μΌλ‘, λͺ©ν DBMSμ λ°μ΄ν° μ μμ΄λ‘ κΈ°μ λ μ€ν€λ§κ° λ§λ€μ΄μ§λ κ³Όμ μ.
- **μ½κ²λ§ν΄, DBMS λ§λ€ λ€λ₯Έ λΆλΆμ DBMS λ₯Ό μ νλ©΄μ ν΄λΉ DBMSμ νΉμ§μ λ§μΆ°μ μ€κ³λ₯Ό νλ κ³Όμ μΌλ‘ 보면 λ¨.**
- ν΄λΉ λ¨κ³μμλ μ μΆλ ₯κ³Ό κΈ°λ₯μ ννλ‘λ§ μ μλ νΈλμμ μ λν μΈν°νμ΄μ€ μ€κ³νλ κ³Όμ μ΄ μ΄λ£¨μ΄μ§.
- **μ½κ²λ§ν΄, κΈ°λ₯(νΈλμμ )μ SQLλ¬ΈμΌλ‘ ꡬ체ννλ κ³Όμ μΌλ‘ λ³Ό μ μλλ―.**
[ λ Όλ¦¬μ DB μ€κ³ - λ Όλ¦¬μ λͺ¨λΈλ§ ]

- κ°λ μ ꡬ쑰λ₯Ό λͺ©ν DBMSμ κ΅¬μ‘°λ‘ λ³ννλ κ³Όμ μ΄λ€. ( μ½κ²λ§ν΄, λ΄κ° μ νν DBMS μ DBμ λ§κ² μ€κ³νλ κ² )
- μ¦, κ°λ μ ꡬ쑰λ ERD λ₯Ό λ§νκ³ , ERD μ κ·Έλ €μ§ κ°μ²΄(μ¬κ°ν), κ΄κ³(λ§λ¦λͺ¨)λ₯Ό μ€μ ν μ΄λΈ ννλ‘ λ°κΎΈλ κ³Όμ μ.
- μμ§ κ΅¬ννλ λ¨κ³λ μλμ§λ§, κ°λ μ ꡬ쑰λ₯Ό DBMSμ λ§κ² λμ± μμΈν μ€κ³κ° λ λͺ¨λΈλ‘ λ³Ό μ μμ.
- ERD μμ μ¬κ°νμΌλ‘ κ·Έλ €μ§ κ°μ²΄(Entity) λ κ΄κ³ν λͺ¨λΈλ‘ λ°κΏ λ νλμ ν μ΄λΈ(κ°μ²΄ 릴λ μ΄μ )μ΄ λλ€.
- κ°μ²΄ νμ μ μν μμ±μ ν΄λΉ κ°μ²΄ 릴λ μ΄μ μ μμ±μ΄ λ¨. μ¦, ERDμμ κ°μ²΄μ λ¬λ € μλ μμ±(νμν) λ€μ κ·Έλλ‘ ν μ΄λΈμ 컬λΌ(μμ±)μ΄ λλ€λ λ»μ.
- λ§λ¦λͺ¨μ κ΄κ³ νμ μ κ΄κ³ 릴λ μ΄μ μΌλ‘ ννμ΄ λ¨. μ¦, ν μ΄λΈκ°μ κ΄κ³μ λν μ°κ²°μ νλ μνλ‘ λ§λ€μ΄μ§.
- κ΄κ³ νμ μ μν μμ±μ ν΄λΉ κ΄κ³ 릴λ μ΄μ μ μμ±μ΄ λ¨. μ¦, μΈλν€ μ μμ κ΄λ ¨λ μλ―Έμ.
- μ°κ΄λ κ°μ²΄ νμ μ ν€ μμ±μ κ΄κ³ 릴λ μ΄μ μ μμ±μΌλ‘ ν¬ν¨μν΄.

- λν, μμ κ°μ΄ κ΄κ³ 릴λ μ΄μ μ€κ° ν μ΄λΈμ μ¬μ©νμ§ μκ³ , 묡μμ μΌλ‘ κ΄κ³λ₯Ό νν ν μλ μμ.
(4) μ€κ³ κ³Όμ - 물리μ DB μ€κ³
- λ Όλ¦¬μ ꡬ쑰λ‘λΆν° ν¨μ¨μ μ΄κ³ ꡬν κ°λ₯ν 물리μ λ°μ΄ν°λ² μ΄μ€ ꡬ쑰λ₯Ό μ€κ³νλ κ²μ.
- 물리μ DB ꡬ쑰: λ°μ΄ν°λ² μ΄μ€μ ν¬ν¨λ μ¬λ¬ νμΌ νμ μ λν μ μ₯ λ μ½λμ μμ, μμ, μ κ·Ό κ²½λ‘, μ μ₯ 곡κ°μ ν λΉ λ±μ ννν κ²μ΄λ€. ( μ¦, μ€μ μ΄λ»κ² μ μ₯μ΄ λλκ°μ λν μ μ₯ κ΄λ ¨ λ΄μ©μ΄ ν¬ν¨μ΄ λ μ μμ. )
- νΈλμμ μ λν μΈλΆμ μΈ μ€κ³κ° ν¬ν¨λ¨.
- μ½κ²λ§ν΄, μ μ½μ‘°κ±΄ ꡬν, μΈλ±μ€ μ€κ³, 보μ/κΆν μ€μ λ±μ νλ λ¨κ³μ΄κ³ , μ΄κ²λ€μ ꡬν λ¨κ³μμ μ€νμ΄ λ¨
(5) μ€κ³ κ³Όμ - ꡬν
- λͺ©ν DBMSμ λ°μ΄ν° μ μμ΄λ‘ κΈ°μ λ λͺ λ Ήλ¬Έ(λ Όλ¦¬μ λ¨κ³μμ λ§λ€μ΄μ§ κ²)μ μ»΄νμΌνκ³ μ€νν΄μ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§μ λΉ λ°μ΄ν°λ² μ΄μ€ νμΌ μμ±μ νκ² λλ€.
- μ΄ν, μ€μ λ°μ΄ν° μ μ¬ -> λ°μ΄ν°λ² μ΄μ€ μ€ν λ° μ΄μ νλ λ¨κ³μ΄λ€.
- νΈλμμ μ ꡬνμ νκ² λ¨.
β 3. SQL
(1) SQL (Structured Query Language) λ?
- ꡬ쑰νλ μ§μ μΈμ΄(Structured Query Language) λ‘ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ₯Ό λ€λ£¨κΈ° μν μ§μμ΄μ.
- IBMμ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ μμ€ν μΈ SYSTEM Rμ μν΄ μ²μ μ€κ³κ° λμμ.
- νμ¬λ λ―Έκ΅ νμ€, κ΅μ νμ€μΌλ‘ μ μ λμ΄ μ μΈκ³ κ±°μ λͺ¨λ κ΄κ³ν DBMS μμ μ¬μ©μ΄ λ¨.
[ νΉμ§ ]
- SQLμ λ¨μν κ²μμ© μΈμ΄κ° μλ, λ°μ΄ν°μ μ μ(DDL), μ‘°μ(DML), μ μ΄(DCL) κΉμ§ λ€λ£° μ μλ μμ ν DBμΈμ΄μ.
- λνμμΌλ‘ μ§μ ν°λ―Έλμμ μ¬μ©ν μλ μκ³ , C, Java, Python κ°μ μΈμ΄ μμ μ½μ ν΄μ ν¨κ» μ¬μ©ν μλ μμ.
- SQL μμλ κ΄κ³ν λͺ¨λΈμ 릴λ μ΄μ , ν¬ν, μμ± λμ ν μ΄λΈ, ν, μ΄ μ΄λΌλ μ©μ΄λ₯Ό λ λ§μ΄ μ¬μ©ν¨. ( μ νΈν¨ )
- SQLμ μ¬μ©μκ° μ²λ¦¬ μ μ°¨λ₯Ό μ μνμ§ μκ³ κ²°κ³Όλ§ μμ²νλ λΉμ μ°¨μ μΈμ΄μ΄λ€.
# μ μ°¨μ μΈμ΄: Python
result = [] // # ages 리μ€νΈμμ 30μΈ μ΄μλ§ κ³¨λΌλ΄λ μ μ°¨
for age in ages:
if age >= 30:
result.append(age)
# λΉμ μ°¨μ μΈμ΄: SQL
SELECT * FROM people WHERE age >= 30;
- λΉμ μ°¨μ μΈμ΄: μνλ κ²°κ³Ό μ‘°κ±΄λ§ λͺ μνλ©΄ μ μ°¨λ DBMS κ° μλμΌλ‘ μ²λ¦¬λ₯Ό ν΄μ€.
(2) λ°μ΄ν° μ μμ΄

- μ€ν€λ§, λλ©μΈ, ν μ΄λΈ, λ·°, μΈλ±μ€ λ₯Ό μ μνκ±°λ μμ λ° μ κ±°νλ λ¬Έμ₯(λͺ λ Ήμ΄)μΌλ‘ ꡬμ±μ΄ λμ΄μμ.
[ λ°μ΄ν° μ μμ΄ - κΈ°λ³Έμ μΈ λ°μ΄ν° νμ ]

- λ°μ΄ν° μ μμ΄ - ν μ΄λΈμ λ§λλ κ³Όμ μλ λ°μ΄ν° νμ μ κ°μ΄ λͺ μλ₯Ό ν΄μ€μΌ ν¨.
(2) λ°μ΄ν° μ μμ΄ - ν μ΄λΈ μμ±


- μμκ°μ΄ 릴λ μ΄μ μ€ν€λ§(릴λ μ΄μ μ΄λ¦κ³Ό μμ±) μ λ§λ€κΈ° μν΄μλ, μλμ κ°μ΄ SQL λ¬Έμ μμ±νλ©΄ λλ€.
- κ°κ°μ 릴λ μ΄μ μμ±μλ μ΄λ¦μ μμ±λͺ μ λͺ μν΄μ£Όκ³ , λ°μ΄ν° νμ κ³Ό ν¬κΈ°λ₯Ό μ€μ ν΄ μ€ μ μμ.
- PRIMARY KEY μ€μ μ ν΅ν΄ μ μ½ μ‘°κ±΄μ κ±ΈμμΌλ‘μ¨, 곡κΈμλ²νΈλ unique λ₯Ό 보μ₯λ°μΌλ―λ‘, 무결μ±μ λ§μ‘± ν μ μμ.
- μ¦, μμ κ°μ΄ μ¬λ¬ ν μ΄λΈμ CREATE TABLE μ΄λΌλ λ°μ΄ν° μ μμ΄λ₯Ό ν΅ν΄ λ§λ€ μ μμ.

- λν, λ κ° μ΄μμ ν μ΄λΈ κ΄κ³λ₯Ό λ§ΊκΈ° μν΄μλ FOREIGN KEY(μΈλν€) μ μ½μ‘°κ±΄μ ν΅ν΄μ, κ΄κ³λ₯Ό λ§Ίμ μ μμ.
- ν΄λΉ μΈλν€ μ μ½μ‘°κ±΄μ λ³΄ν΅ μλ ν μ΄λΈμ PRIMARY KEY(κΈ°λ³Έν€) λ₯Ό κΈ°λ°μΌλ‘ κ΄κ³λ₯Ό λ§Ίμ. ( JOIN κ°λ₯ )
(3) λ°μ΄ν° μ μμ΄ - ν μ΄λΈ μμ λ° μ»¬λΌ μμ
[ μλ‘μ΄ μ΄ μΆκ° ]

ALTER TABLE ν
μ΄λΈλͺ
ADD COLUMN 컬λΌλͺ
λ°μ΄ν°νμ
[μ μ½μ‘°κ±΄];
# employees ν
μ΄λΈμ VARCHAR(100) λ°μ΄ν° νμ
μ κ°λ email μ»¬λΌ ADD
ALTER TABLE employees ADD COLUMN email VARCHAR(100);
# stock κ°μ΄ λ°λμ μ‘΄μ¬ν΄μΌ νλ©°, κΈ°λ³Έκ°μ 0μΌλ‘ μ€μ λ©λλ€.
ALTER TABLE productsADD COLUMN stock INT NOT NULL DEFAULT 0;
- μμ κ°μ μ§μμ΄ κ΅¬μ±μ ν΅ν΄ ν μ΄λΈ μμ μ ν μ μμ.
[ κΈ°μ‘΄ μ΄ μμ ]

ALTER TABLE ν
μ΄λΈλͺ
DROP COLUMN 컬λΌλͺ
;
ALTER TABLE employees DROP COLUMN email;
# RESTRICT, CASCADE options
ALTER TABLE ν
μ΄λΈλͺ
DROP COLUMN 컬λΌλͺ
RESTRICT; # RESTRICT λν΄νΈ μ΅μ
ALTER TABLE ν
μ΄λΈλͺ
DROP COLUMN 컬λΌλͺ
CASCADE; # CASCADE μ°Έμ‘° κ°μ μμ
- CASCADE: μμ μ μ°Έμ‘°νκ³ μλ λͺ¨λ μ μ½μ‘°κ±΄/κ°μ²΄κΉμ§ κ°μ΄ μμ λ₯Ό ν΄μ€λ€.
- RESTRICT: μ°Έμ‘°κ° μμΌλ©΄ μμ λΆκ°λ₯νκ² μμ νκ² λ§μμ€. ( λ³΄ν΅ μ΄ μ΅μ μ΄ λν΄νΈλ‘ μ μ©λμ΄ μμ. )
[ κΈ°μ‘΄ μ΄μ λν κΈ°λ³Έκ° μ§μ λ° μμ ]

ALTER TABLE ν
μ΄λΈλͺ
ALTER 컬λΌλͺ
(DROP DEFAULT / SET DEFAULT κΈ°λ³Έκ°)
# SET DEFAULT: κΈ°λ³Έκ°μ μ§μ μ§μμ΄ -> age 컬λΌμ κΈ°λ³Έκ° 18 μ€μ
ALTER TABLE users ALTER COLUMN age SET DEFAULT 18;
# DROP DEFAULT: κΈ°λ³Έκ° μ κ±° μ§μμ΄ -> age 컬λΌμ κΈ°λ³Έκ° μ κ±°
ALTER TABLE users ALTER COLUMN age DROP DEFAULT;
- μμ±μ λν λ°μ΄ν° κΈ°λ³Έκ°μ μμ νκ±°λ μ§μ ν΄μ£Όλ μ§μμ΄μ.
(4) λ°μ΄ν° μ μμ΄ - ν μ΄λΈ μμ

DROP TABLE ν
μ΄λΈλͺ
[CASCADE, RESTRICT];
DROP TABLE employees; # λν΄νΈ RESTRICT
- ν μ΄λΈμ λν μ€λͺ μ΄ μΉ΄νλ‘κ·Έμμ μ κ±°λλ―λ‘, κΈ°λ³Έ ν μ΄λΈμμ μ μλ λͺ¨λ μΈλ±μ€μ λ·°λ μλμΌλ‘ μμ κ° λλ€.
(5) λ°μ΄ν° μ‘°μμ΄

- κΈ°λ³Έ ν μ΄λΈ, λ·°μ ν΄λΉνλ λ°μ΄ν°λ₯Ό μ‘°μ(κ²μ, κ°±μ , μμ , μ½μ ) νκΈ° μν λͺ λ Ήλ¬Έμ΄λ€.
(5) λ°μ΄ν° μ‘°μμ΄ - λ°μ΄ν° κ²μ SELETE λ¬Έ

- ALL: μ€λ³΅μ νμ©νλ©°, λͺ¨λ λ°μ΄ν°λ₯Ό 보μ¬μ£Όλ μ΅μ μ.
- DISTINCT: μ€λ³΅μ λͺ¨λ μ κ±°νμ¬ λ³΄μ¬μ£Όλ μ΅μ μ.

- AS λ₯Ό ν΅ν΄ κ±°λν¬μΈνΈμ 컬λΌλͺ μ κ±°λμ μλ‘ λ³κ²½νμ¬ μ‘°νκ° κ°λ₯ν¨.
- ORDER BY λ₯Ό ν΅ν΄ μ λ ¬μ ν μ μκ³ , μ΅μ μΌλ‘ DESC(λ΄λ¦Όμ°¨μ) ASC(μ€λ₯Έμ°¨μ) μ€μ μ΄ κ°λ₯ν¨.
- FROM μ ν μ΄λΈ λ κ°λ₯Ό μ§μ ν΄ λ ν μ΄λΈμ κ΄ν WHERE 쑰건μ μ€μ ν΄ μ‘°νκ°λ₯.

- SUM() κ³Ό κ°μ ν¨μλ₯Ό ν΅ν΄ ν μ΄λΈμ μ μ₯λ μμ±κ°λΌλ¦¬ μ°μ°μ ν μ μμ.
- GROUP BY λ₯Ό ν΅ν΄ κ·Έλ£ΉμΌλ‘ λ¬Άμ μ μμΌλ©°, GROUP BY μλ HAVING 쑰건μ μ μ¬μ© ν μ μμ.

- IN: μλ²μΏΌλ¦¬ κ²°κ³Όμ νΉμ κ°μ΄ μ‘΄μ¬νλμ§ λΉκ΅
- EXISTS: μλΈμΏΌλ¦¬ κ²°κ³Όκ° νλλΌλ μ‘΄μ¬νλμ§ μ¬λΆλ§ νμΈ
(6) λ°μ΄ν° μ‘°μμ΄ - λ°μ΄ν° μ½μ INSERT λ¬Έ

- INSERT INTO ν μ΄λΈλͺ (컬λΌλͺ , 컬λΌλͺ , ...) VALUES('컬λΌκ°', '컬λΌκ°' ...) μ ν΅ν΄ λ°μ΄ν° μ½μ μ΄ κ°λ₯ν¨.
(7) λ°μ΄ν° μ‘°μμ΄ - λ°μ΄ν° μμ DELETE λ¬Έ

- DELETE FROM ν μ΄λΈλͺ ; μ νκ² λλ©΄ ν΄λΉ ν μ΄λΈμ μμ±κ°λ€μ΄ λͺ¨λ μμ κ° λ¨.
- ν μ΄λΈ, μ»¬λΌ λ± ν μ΄λΈ ꡬ쑰λ λ¨μ μμ§λ§, ν μ΄λΈμ μμ±κ°μ λ λΌκ°κ² λ¨.
- μλ DROP TABLE ν μ΄λΈλͺ ; κ°μ κ²½μ°μλ ν μ΄λΈ μ체λ₯Ό μμ νλ κ²μ΄λ―λ‘, ꡬ쑰λ₯Ό μμ λ λ¦¬κ² λλ€.
- μ¦, ν μ΄λΈμ΄ μ¬λΌμ§λ λμμ λ΄λΆμ 컬λΌλ€κ³Ό μμ±κ° λ±μ΄ λ€ λ λΌκ°.
(8) λ°μ΄ν° μ‘°μμ΄ - λ°μ΄ν° κ°±μ UPDATE λ¬Έ

- WHERE 쑰건μ νμ©ν΄ μ΄λ€ νμ λ°κΏκ±΄μ§ λͺ μ νλ©°, SET μ ν΅ν΄ νΉμ 컬λΌμ μμ±κ°μ λ£μ΄μ μμ ν¨.
β 4. SQL - λ·°

CREATE VIEW high_score AS
SELECT name, score FROM student WHERE score >= 90;
SELECT * FROM high_score; -- λ·°λ κ°μμ ν
μ΄λΈμ²λΌ μ‘°νλ¨
- λ·°(View): νλ μ΄μμ ν μ΄λΈμ κΈ°λ°μΌλ‘ λ§λ€μ΄μ§ κ°μ ν μ΄λΈμ μλ―Έν¨.
- λ·° λ΄μ©μ 물리μ μΌλ‘ ꡬνλμ΄ μ€μ μ μΌλ‘ μ‘΄μ¬νλ κ²μ΄ μλλΌ λ·°μ λν μ‘°μμ μꡬν λλ§λ€ κΈ°λ³Έ ν μ΄λΈμ λ°μ΄ν°λ₯Ό μ΄μ©ν΄μ λ΄μ©μ λ§λ€μ΄μ μ¬μ©μμκ² μλ κ²μ²λΌ 보μ¬μ£Όλ κΈ°λ₯μ μνν¨.
- λ·°λ ν¨μμ²λΌ μ¬μ¬μ© κ°λ₯νλ©΄μ, κ²°κ³Όκ° ν μ΄λΈμ²λΌ 보μ΄λ νΉμ± λλ¬Έμ κ°μ ν μ΄λΈ μ΄λΌκ³ λΆλ¦.
- μ¦, λ·°μ λ³Έμ§μ 쿼리μ μ΄λ¦μ λΆμ¬μ μ¬μ¬μ© κ°λ₯νκ² νλ κ²μ΄ ν΅μ¬μ΄λ©° λ³Έμ§μ. ( κ·Έλ¦¬κ³ SELECT λ¬Έλ§ μ¬μ©? )
(1) λ·° μ₯μ
- DB μ¬κ΅¬μ±(νμ₯, ꡬ쑰λ³κ²½) λ©΄μμ μ΄λ μ λμ λ Όλ¦¬μ λ°μ΄ν° λ 립μ±μ μ 곡ν¨.
- λμΌ λ°μ΄ν°μ λν΄ λμμ μ¬λ¬ μ¬μ©μμκ² λ€μν λ·°λ₯Ό μ 곡ν¨
- νΉμ μ¬μ©μκ° κ΄μ¬μλ λ°μ΄ν°μλ§ μ΄μ μ λ§μΆκ³ λλ¨Έμ§λ 무μν¨
- μ¬μ©μμ λ°μ΄ν°μ λν μΈμκ³Ό κ΄λ¦¬λ₯Ό λ¨μνμν΄
- κ°μΆ°μ§ λ°μ΄ν°μ λν΄ λ³΄μμ΄ μλμΌλ‘ μ κ³΅μ΄ λλ€.
(2) λ·° λ¨μ
- λ μμ μΈ μΈλ±μ€λ₯Ό κ°μ§ μ μκ³ , μ μ λ³κ²½ λΆκ°, μ½μ /μμ /κ°±μ μ°μ°μ μ μ½μ΄ λ°λ¦.