SQL relation operations
ꡬ쑰μ μ§μμ΄(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(Γ·)
μ§ν© μ°μ°
- ν©μ§ν© (Union)
R βͺ S = {e | e β R β¨ e β S} = R UNION S
- μ°¨μμ λμ μμ±μ λλ©μΈμ΄ λμΌν΄μΌ ν¨
- μ€λ³΅ μ κ±°νμ¬ ν©μΉ¨
- κ΅μ§ν© (Intersection)
R β© S = {e | e β R β§ e β S} = R INTERSECT S
- μ°¨μμ λμ μμ±μ λλ©μΈμ΄ λμΌν΄μΌ ν¨
- λμΌ(μ€λ³΅) νν μΆμΆ
- μ°¨μ§ν© (Difference)
R - S = {e | e β R β§ e β S} = R MINUS S
- μ°¨μμ λμ μμ±μ λλ©μΈμ΄ λμΌν΄μΌ ν¨
- κ²°κ³Όλ λμ 릴λ μ΄μ (R)μ λΆλΆμ§ν©
- κ³±μ§ν© (Cartesian Product)
- μμμ μ§ν© μμ±
- μ°¨μ/λλ©μΈμ΄ λ¬λΌλ κ°λ₯
- κ²°κ³Ό: κΈ°μλ λ 릴λ μ΄μ μ κ³±, μ°¨μλ λ 릴λ μ΄μ μ°¨μμ ν©
- μκΈ°λ²: μ΄-μ°¨ (λΉ)ν-κΈ°
κ΄κ³ μ°μ°
- SELECT
- μνμ (νν) λΆλΆ μ§ν© μΆμΆ
- νκΈ°:
Ο <쑰건> (R)
- μ:
Ο λμ¬νμ > 7 (R)
- PROJECT
- μμ§μ (μμ±) λΆλΆ μ§ν© μΆμΆ
- νκΈ°:
Ο <리μ€νΈ> (R)
- μ:
Ο νμλ²νΈ, μ΄λ¦ (R)
- JOIN
- 쑰건μ λ§λ ννμ ν©μ³ μλ‘μ΄ λ¦΄λ μ΄μ μμ±
- κ³΅ν΅ μμ± νμ
- μ’
λ₯:
R β μμ± = μμ± S
: λμΌ μμ± κΈ°μ€ μ‘°μΈ (μ€λ³΅ ν¬ν¨)R β N S
: λμΌ μμ± κΈ°μ€ μ‘°μΈ (μ€λ³΅ μ μΈ)R β + S
: 쑰건 λΆμΌμΉ ννλ ν¬ν¨ (NULL μ²λ¦¬)R β ΞΈ S
: λ±νΈ μΈ μ‘°κ±΄μ κΈ°μ€ μ‘°μΈ
- DIVISION
R Γ· S
: S μμ±κ° κΈ°μ€μΌλ‘ Rμ λλ¨Έμ§ μμ± μ€ Sμ λͺ¨λ κ° λ§μ‘±νλ νν λ°ν
쿼리 μ΅μ ν κ·μΉ
μ£Όμ μμΉ
- μ λμ μΈ μ΅μ ν κ·μΉμ μμ
- Project(μμ§μ ) μ°μ°μ μ΅λν μΌμ° μν
- Select(μνμ ) μ°μ°λ κ°κΈμ μΌμ° μν
- Join μ°μ°μ μ±λ₯ μν₯μ΄ ν¬λ―λ‘ λ§μ§λ§μ μν