ν μ΄λΈ μΈμ€ν΄μ€λ λ μ½λλ€μ μ§ν© μ΄λ―λ‘
μ°¨μ (degree) : ν μ΄λΈ μ€ν€λ§μ μ μλ νλμ μ
λλ©μΈ : κ° νλμ μ λ ₯ κ°λ₯ν κ°λ€μ λ²μ, μ¦ κ° νλκ° κ°μ§ μ μλ λͺ¨λ κ°λ€μ μ§ν©
κΈ°μ (cardinality) : λ μ½λ μ
λͺ¨λ νλλ λ μ΄μ λΆλ¦¬λμ§ μλ κ°, μ¦ μμκ° (atomic value) μ κ°μ§λ€.
2κ° μ΄μμ νλλ‘ κ΅¬μ±λ ν€λ₯Ό 볡ν©ν€λΌ νλ€.
μΈλν€ : λ€λ₯Έ ν μ΄λΈμ κΈ°λ³Έ ν€λ₯Ό μ°Έμ‘°νλ νλμ§ν©
βοΈ μ μ°¨μ μΈμ΄
βοΈ μνμμμ μμꡬ쑰μ μ μ¬
βοΈ κΈ°λ³Έ μ°μ°
βοΈ μΆκ°μ°μ°
μ‘°μΈ (theta join)
μμ° μ‘°μΈ (natural join)
μΈλΆ μ‘°μΈ (outer join)
μ§μ μ°μ° (assignment)
(λλκΈ° μ°μ°)
π‘ Structed Query Language
- κ΄κ³ν μ§μμΈμ΄
- κ΄κ³λμλ κ΄κ³ν΄μμ νμ€ν μ΄λ‘ μ λ°°κ²½μ μ 곡νλ μμ©μΌλ‘ μ°μ΄κΈ°μλ μ΄λ ΅κ³ μ μ μΉ μμ
- SQLμ μμ°μ΄μ μ μ¬νκ³ λΉμ μ°¨μ μΈμ΄μ΄λ―λ‘ μ¬μ©νκΈ° μ©μ΄ν¨
βοΈ SQLμ ν¬κ² DDLκ³Ό DMLλ‘ κ΅¬μ±λ¨
βοΈ λ°μ΄ν° μ μ μΈμ΄ DDL
βοΈ νλμ Data type μ’ λ₯
βοΈ λ°μ΄ν° μ‘°μ μΈμ΄ DML
βοΈ ν
μ΄λΈ μμ±, κΈ°λ³Έν€, μΈλν€ μ€μ
μ€μ ν μ΄λΈ μ΄λ¦μ΄ μμ λκ±°λ νλ μ΄λ¦μ΄ λ°λλ κ²μ΄ μλ!
μ§μλ₯Ό μ²λ¦¬νλ κ³Όμ λμλ§ μΌμμ μΌλ‘ μ¬μ©.
ννμ΄ λ¨μννκ±°λ, λμΌ μ΄λ¦μ΄ μ‘΄μ¬ν κ²½μ°μ μ¬μ©
λ¬Έμμ΄μ λν΄μλ μΌλΆλΆλ§ μΌμΉνλ κ²½μ°λ₯Ό μ°ΎμμΌ ν λ μ¬μ©.
<νλμ΄λ¦>μ μ§μ λ <λ¬Έμμ΄ν¨ν΄>μ΄ λ€μ΄ μλμ§λ₯Ό νλ¨.
where <νλμ΄λ¦> like <λ¬Έμμ΄ν¨ν΄>
= μ°μ°μ λμ μ like μ°μ°μλ₯Ό μ΄μ©ν¨ (= λ μ νν μΌμΉνλ κ²½μ°μλ§ μ¬μ©)
λ¬Έμμ΄ ν¨ν΄μ μ’ λ₯
ex) student ν μ΄λΈμμ μ¬νμλ€λ§μ κ²μ
κ΄κ³λμμ μ§ν© μ°μ°μΈ ν©μ§ν©, κ΅μ§ν©, μ°¨μ§ν©μ ν΄λΉνλ μ°μ°μ
ν©μ§ν© union
κ΅μ§ν© intersect
μ°¨μ§ν© minus
π βμ΄μ°μνβ, βκ°μ²΄μ§ν₯μΈμ΄β κ΅κ³Όλͺ©λ€μ class ν μ΄λΈμ μ μ₯λμ΄ μμ§ μκΈ° λλ¬Έμ κ²μ κ²°κ³Όμ ν¬ν¨λμ§ λͺ»νλ€. μ΄λ΄ λ μλμ μ‘°μΈμ ν΄μ£Όλ©΄ κ°κ° μ΄λ€ κ²°κ³Όλ€μ΄ λμ¬κΉ?
ν΅κ³μ°μ° κΈ°λ₯ μ 곡.
SELECT μ κ³Ό HAVING μ (λ€μ μ€λͺ ) μμλ§ μ¬μ© κ°λ₯.
sum, avgλ μ«μν ν μ΄ν° νμ μ κ°λ νλμλ§ μ μ©κ°λ₯.
count : λ°μ΄ν°μ κ°μλ₯Ό ꡬνλ€.
ex) student ν μ΄λΈμμ 3νλ νμμ΄ λͺ λͺ μΈμ§ μΆλ ₯
ex) student ν μ΄λΈμμ dept_id νλμ κ°μ΄ λͺ κ°μΈμ§λ₯Ό μΆλ ₯
distinct ν€μλλ₯Ό μ¬μ©νλ©΄ μ€λ³΅λλ λ°μ΄ν°λ₯Ό μ μΈν κ°μλ₯Ό 리ν΄
μ»΄ν¨ν°κ³΅νκ³Όμ νμ μλ₯Ό μΆλ ₯
sum : λ°μ΄ν°μ ν©μ ꡬνλ€.
avg : λ°μ΄ν°μ νκ· κ°μ ꡬνλ€.
max : λ°μ΄ν°μ μ΅λ κ°μ ꡬνλ€.
min : λ°μ΄ν°μ μ΅μ κ°μ ꡬνλ€.
βοΈ select μ μ μ§κ³ ν¨μκ° μ¬μ©λ κ²½μ° λ€λ₯Έ νλλ select μ μ μ¬μ©ν μκ° μμ.
μ§κΈκΉμ§μ SQLμ μ 체 λ μ½λλ€μ λμμΌλ‘ νκ· , ν©, μ΅λκ°/μ΅μκ° λ§μ μΆλ ₯.
GROUP BYλ₯Ό μ΄μ©νλ©΄ κ·Έλ£Ήλ³λ‘ μ§κ³ν¨μ μ μ© κ°λ₯! (μ: νκ³Όλ³νμμ,λΆμλ³μ΅λκΈβ)
κ·Έλ£Ήμ λν 쑰건μ λͺ μν λ μ¬μ©
ex) νκ· μ¬μ§μ°μκ° 10λ μ΄μμΈ νκ³Όμ λν΄μλ§ κ΅μ μ«μμ νκ· μ¬μ§μ°μ, μ΅λ μ¬μ§μ°μλ₯Ό μΆλ ₯
λ€μμ μ€λ₯ βοΈ
βοΈ Group μ λν 쑰건μ where μ μ μ¬μ©νμ§ λͺ»ν¨.
having μ μ μ΄μ©ν΄μΌ ν¨
ex) having μ μ μ΄μ©νμ¬ λ€μ μμ±
ex) μ§μ μ«μκ° 5λͺ μ΄μμΈ λΆμμ λν΄μ λΆμλ³ μ§μμ, νκ· κΈμ¬, μ΅λκΈμ¬, μ΅μκΈμ¬λ₯Ό μΆλ ₯
π‘ where μ κ³Ό having μ , group by μ μ λͺ¨λ ν¨κ» μ¬μ©ν κ²½μ°
1. where μ μ λͺ μλ 쑰건μ λ§μ‘±νλ λ μ½λλ€μ κ²μ
2. group by μ μ λͺ μλ νλμ κ°μ΄ μλ‘ μΌμΉνλ λ μ½λλ€ λΌλ¦¬ κ·Έλ£Ήμ μ§μ΄ μ§κ³ ν¨μλ₯Ό μ μ©
3. λ§μ§λ§μΌλ‘ κ·Έ μ§κ³ ν¨μλ₯Ό μ μ©ν κ²°κ³Όλ€ μ€μμ having μ μ λ§μ‘±νλ κ²°κ³Όλ§ κ³¨λΌμ μΆλ ₯
λμ κ²μνλ λ°©λ²
- <νλμ΄λ¦> is null
- <νλμ΄λ¦> is not null
ex) takes ν μ΄λΈμμ μμ§ νμ μ΄ λΆμ¬λμ§ μμ νμμ νλ²μ κ²μ
ex) takes ν μ΄λΈμμ νμ μ΄ 'A+'κ° μλ νμλ€μ νλ²μ κ²μ
SQLλ¬Έμ λ€λ₯Έ SQLλ¬Έ μμ μ€μ²©νμ¬ μ¬μ©νλ μ§μ
λΆμ§μλ μΈλΆμ§μμ from μ μ΄λ where μ μ μμΉ
ex) '301νΈ' κ°μμ€μμ κ°μ€λ κ°μ’μ κ³Όλͺ©λͺ μ μΆλ ₯
μ μ§μλ μλ μ§μμ μλ―Έκ° κ°λ€.
λΆ μ§μ : ν€μλ in λ€μ λμ€λ SQLλ¬ΈμΌλ‘μ class ν
μ΄λΈμμ κ°μμ€μ΄ '301νΈ'μΈ κ΅κ³Όλͺ© λ²νΈλ₯Ό
κ²μ
μΈλΆ μ§μ : course ν μ΄λΈμμ course_id νλμ κ°μ΄ λΆ μ§μμ κ²μ κ²°κ³Όμ ν¬ν¨λλ κ²½μ°(in)μλ§ κ³Όλͺ©λͺ μ μΆλ ₯
ex) 2012λ 2νκΈ°μ κ°μ€λμ§ μμ κ³Όλͺ©λͺ μ κ²μ
some= : μ§μ λ νλμ κ°μ΄ λΆμ§μ κ²μκ²°κ³Όμ μ‘΄μ¬νλ μμμ κ°κ³Ό κ°μμ§λ₯Ό λνλΌ λ μ¬μ© (in κ³Ό κ°μ μλ―Έ)
<=some : λΆμ§μμ κ²μκ²°κ³Όμ μ‘΄μ¬νλ μμμ κ°λ³΄λ€ μκ±°λ κ°μμ§λ₯Ό λνλΌ λ μ¬μ©
=all : μ§μ λ νλμ κ°μ΄ λΆμ§μ κ²μκ²°κ³Όμ ν¬ν¨λ λͺ¨λ κ°κ³Ό κ°μμ§λ₯Ό νλ¨
<=all : μ§μ λ νλμ κ°μ΄ λΆμ§μ κ²μκ²°κ³Όμ ν¬ν¨λ λͺ¨λ κ°λ³΄λ€ μκ±°λ κ°μμ§λ₯Ό νλ¨
ex) κ°μ₯ λ§μ μκ°μΈμμ κ°μ§ κ°μ’λ₯Ό κ²μ
λΆμ§μ κ²μκ²°κ³Όμ μ΅μν νλ μ΄μμ λ μ½λκ° μ‘΄μ¬νλμ§μ μ¬λΆλ₯Ό νν
exits : μ΅μν νκ°μ λ μ½λκ° μ‘΄μ¬νλ©΄ μ°Έμ΄ λκ³ κ·Έλ μ§ μμΌλ©΄ κ±°μ§
not exits : λΆμ§μμ κ²°κ³Όμ λ μ½λκ° νλλ μμΌλ©΄ μ°Έμ΄ λκ³ νλλΌλ μ‘΄μ¬νλ©΄ κ±°μ§
ex) '301νΈ' κ°μμ€μμ κ°μ€λ κ°μ’μ κ³Όλͺ©λͺ μ μΆλ ₯
ex) 2012λ 2νκΈ°μ κ°μ€λμ§ μμ κ³Όλͺ©λͺ μ κ²μ
κΈ°μ‘΄ ν μ΄λΈλ€λ‘λΆν° μμ±λλ κ°μμ ν μ΄λΈ
ν μ΄λΈμ²λΌ 물리μ μΌλ‘ μμ±λλ κ²μ΄ μλλΌ, κΈ°μ‘΄μ ν μ΄λΈλ€μ μ‘°ν©νμ¬ μ¬μ©μμκ² μ€μ λ‘ μ‘΄μ¬νλ ν μ΄λΈμΈ κ²μ²λΌ 보μ΄κ² ν¨
π‘ νΉμ μ¬μ©μμκ² ν μ΄λΈμ λ΄μ© μ€ μΌλΆλ₯Ό μ¨κΈΈ μ μκΈ° λλ¬Έμ 보μμ ν¨κ³Ό
π‘ 볡μ‘ν μ§μμ κ²°κ³Όλ₯Ό λ·°λ‘ λ§λ€μ΄μ μ¬μ©νκ² λλ©΄ μ§μλ₯Ό κ°λ¨ν ννν μ μμ
βοΈ λ·° μμ±
μμ±λ λ·°λ ν μ΄λΈκ³Ό λλ±νκ² μ¬μ©
create or replace view <λ·°μ΄λ¦> as <selectλ¬Έ>
or replace ν€μλλ₯Ό μΆκ°νλ©΄ <λ·°μ΄λ¦>κ³Ό κ°μ λ·°κ° μ΄λ―Έ μ‘΄μ¬νλ κ²½μ° κΈ°μ‘΄μ λ·°λ₯Ό μ§μ°κ³ μλ‘ μμ±
λ·° μμ±μ μ¬μ©λ selectλ¬Έ
λλΆλΆμ DBMS μμλ μ¬μ©μ κ³μ μλ λ·° μμ± κΆνμ΄ λΆμ¬λμ§ μμ
ex) takes ν μ΄λΈμμ grade νλλ₯Ό μ μΈν λλ¨Έμ§ νλλ§μΌλ‘ ꡬμ±λ λ·° λ₯Ό μμ±
ex) student ν μ΄λΈμμ μ»΄ν¨ν°κ³΅νκ³Ό νμλ€ λ μ½λλ§ μΆμΆνμ¬ cs_student λ·°λ₯Ό μμ±
βοΈ λ·° μ¬μ©
ex) v_takes λ·°μ λν΄ selectλ¬Έμ μ€ν
ex) λ·°μ λν΄μ insert, update, deleteλ¬Έμ μ€ν
μ½κΈ° μ μ© λ·°
βοΈ λ·° μμ
<λ°μ΄ν°λ² μ΄μ€μ μ΄ν΄> (μΆν:μ΄νλ―Έλμ΄) μ λ΄μ©μ μ 리ν λ΄μ©μ
λλ€.
μλͺ»λ λ΄μ©μ΄ μλ€λ©΄ λκΈλ‘ μλ €μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€ π