IT’s Portfolio

[Lecture] DataBase - Mid Summary λ³Έλ¬Έ

Development Study

[Lecture] DataBase - Mid Summary

f1r3_r41n 2023. 4. 22. 14:55
728x90
λ°˜μ‘ν˜•

πŸ’» 2023λ…„ λ°μ΄ν„°λ² μ΄μŠ€ 쀑간고사 λŒ€λΉ„ μš”μ  정리

πŸ‘€ [01] λ°μ΄ν„°λ² μ΄μŠ€ κΈ°λ³Έ κ°œλ…

λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ •μ˜

  • λ°μ΄ν„°λ² μ΄μŠ€(DB; DataBase) λŠ” νŠΉμ • 쑰직의 μ—¬λŸ¬ μ‚¬μš©μžκ°€ κ³΅μœ ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν†΅ν•©ν•΄μ„œ μ €μž₯ν•œ 운영 λ°μ΄ν„°μ˜ 집합
    • 곡유 데이터(shared data) : νŠΉμ • 쑰직의 μ—¬λŸ¬ μ‚¬μš©μžκ°€ ν•¨κ»˜ μ†Œμœ ν•˜κ³  μ΄μš©ν•  수 μžˆμ–΄μ•Ό ν•˜λŠ” 곡용 데이터
    • 톡합 데이터(integrated data) : 쀑볡을 μ΅œμ†Œν™”ν•˜κ³  ν†΅μ œκ°€ κ°€λŠ₯ν•œ μ€‘λ³΅λ§Œ ν—ˆμš©ν•˜λŠ” 데이터
    • μ €μž₯ 데이터(stored data) : 컴퓨터가 μ ‘κ·Όν•  수 μžˆλŠ” 맀체에 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ €μž₯ν•΄μ•Ό 함
    • 운영 데이터(operational data) : 쑰직을 μš΄μ˜ν•˜κ³  쑰직의 μ£Όμš” κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ κΌ­ ν•„μš”ν•¨

λ°μ΄ν„°λ² μ΄μŠ€μ˜ νŠΉμ§•

  • μ‹€μ‹œκ°„ μ ‘κ·Όμ„±(real-time accessibility)
    • μ‚¬μš©μžμ˜ 데이터 μš”κ΅¬μ— μ‹€μ‹œκ°„μœΌλ‘œ 응닡
  • 계속 λ³€ν™”(continuous evolution)
    • 데이터λ₯Ό 계속 μ‚½μž…, μ‚­μ œ, μˆ˜μ •ν•˜μ—¬ ν˜„μž¬μ˜ μ •ν™•ν•œ 데이터λ₯Ό μœ μ§€
  • λ™μ‹œ 곡유(concurrent sharing)
    • μ„œλ‘œ λ‹€λ₯Έ 데이터λ₯Ό λ™μ‹œμ— μ‚¬μš©ν•˜λŠ” 것뿐 μ•„λ‹ˆλΌ, 같은 데이터λ₯Ό λ™μ‹œμ— μ‚¬μš©ν•˜λŠ” 것도 λͺ¨λ‘ 지원
  • λ‚΄μš©μœΌλ‘œ μ°Έμ‘°(content reference)
    • μ €μž₯된 μ£Όμ†Œλ‚˜ μœ„μΉ˜κ°€ μ•„λ‹Œ λ°μ΄ν„°μ˜ λ‚΄μš©, 즉 κ°’μœΌλ‘œ μ°Έμ‘°ν•  수 있음

πŸ‘€ [02] λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ

λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œμ˜ μ£Όμš” κΈ°λŠ₯

  • μ •μ˜ κΈ°λŠ₯ : λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰λ₯Ό μ •μ˜ν•˜κ±°λ‚˜ μˆ˜μ •ν•  수 있음
    • DDL(Data Definition Language)
  • μ‘°μž‘ κΈ°λŠ₯ : 데이터λ₯Ό μ‚½μž…, μ‚­μ œ, μˆ˜μ •, κ²€μƒ‰ν•˜λŠ” 연산을 ν•  수 있음
    • DML(Data Manipulation Language)
  • μ œμ–΄ κΈ°λŠ₯ : 데이터λ₯Ό 항상 μ •ν™•ν•˜κ³  μ•ˆμ „ν•˜κ²Œ μœ μ§€ν•  수 있음
    • DCL(Data Control Language)

πŸ‘€ [04] 데이터 λͺ¨λΈλ§

데이터 λͺ¨λΈμ˜ ꡬ성

  • 데이터 ꡬ쑰(data structure)
    • κ°œλ…μ  데이터 λͺ¨λΈμ—μ„œ 데이터 ꡬ쑰 : ν˜„μ‹€ 세계λ₯Ό κ°œλ… μ„Έκ³„λ‘œ μΆ”μƒν™”ν–ˆμ„ λ•Œ μ–΄λ–€ μš”μ†Œλ‘œ 이루어져 μžˆλŠ”μ§€λ₯Ό ν‘œν˜„
    • 논리적 데이터 λͺ¨λΈμ—μ„œ 데이터 ꡬ쑰 : 데이터λ₯Ό μ–΄λ–€ λͺ¨μŠ΅μœΌλ‘œ μ €μž₯ν•  것인지λ₯Ό ν‘œν˜„
    • 정적인 νŠΉμ§•μ„ 가짐
  • μ—°μ‚°(operation)
    • κ°œλ… μ„Έκ³„λ‚˜ 컴퓨터 μ„Έκ³„μ—μ„œ μ‹€μ œλ‘œ ν‘œν˜„λœ 값듀을 μ²˜λ¦¬ν•˜λŠ” μž‘μ—…
    • 동적인 νŠΉμ§•μ„ 가짐
  • μ œμ•½μ‘°κ±΄(constraint) -> 데이터 무결성 μœ μ§€ λͺ©μ 
    • ꡬ쑰적 츑면의 μ œμ•½ 사항과 연산을 μ μš©ν•˜λŠ” 경우 ν—ˆμš©ν•  수 μžˆλŠ” 의미적 츑면의 μ œμ•½ 사항

E-R λ‹€μ΄μ–΄κ·Έλž¨

  • 개체(entity) : μ‚¬κ°ν˜• ν‘œν˜„, μ‚¬κ°ν˜• 내에 개체의 이름 ν‘œκΈ°
    • μ €μž₯ν•  λ§Œν•œ κ°€μΉ˜κ°€ μžˆλŠ” μ€‘μš” 데이터λ₯Ό 가지고 μžˆλŠ” μ‚¬λžŒμ΄λ‚˜ 사물 λ“±
  • 속성(attribute) : 타원 ν‘œν˜„, 타원 내에 μ†μ„±μ˜ 이름 ν‘œκΈ°
    • κ°œμ²΄κ°€ κ°–λŠ” κ³ μœ ν•œ νŠΉμ„±
    • (1) 속성 κ°’μ˜ 개수
      • 단일값 속성(single-valued attribute)
        • νŠΉμ • 개체λ₯Ό κ΅¬μ„±ν•˜λŠ” 속성 값이 ν•˜λ‚˜
      • 닀쀑값 속성(multi-valued attribute) : 이쀑 타원 ν‘œν˜„
        • 속성이 값을 μ—¬λŸ¬ 개 κ°€μ§ˆ 수 있음
    • (2) 의미의 λΆ„ν•΄ κ°€λŠ₯μ„±
      • λ‹¨μˆœ 속성(simple attribute)
        • 의미λ₯Ό λ”λŠ” λΆ„ν•΄ν•  수 μ—†μŒ
      • 볡합 속성(composite attribute) : 같은 νƒ€μ›μœΌλ‘œ 트리 ꡬ쑰둜 ν‘œν˜„
        • 의미λ₯Ό λΆ„ν•΄ν•  수 μžˆμ–΄ 값이 μ—¬λŸ¬ 개의 의미λ₯Ό 포함
    • (3) κΈ°μ‘΄ 속성 κ°’μ—μ„œ μœ λ„
      • μœ λ„ 속성(derived attribute) : 점선 타원 ν‘œν˜„
    • 널 속성(null attribute)
      • 아직 κ²°μ •λ˜μ§€ μ•Šμ•˜κ±°λ‚˜ λͺ¨λ₯΄λŠ” 값인 널 값을 ν—ˆμš©ν•˜λŠ” 속성
    • ν‚€ 속성(key attribute) : 밑쀄을 κ·Έμ–΄ ν‘œν˜„
      • 각 개체 μΈμŠ€ν„΄μŠ€λ“€μ„ μ‹λ³„ν•˜λŠ” 데 μ‚¬μš©
  • 관계(relationship) : λ§ˆλ¦„λͺ¨ ν‘œν˜„
    • κ°œμ²΄μ™€ κ°œμ²΄κ°€ λ§Ίκ³  μžˆλŠ” 의미 μžˆλŠ” μ—°κ΄€μ„±
    • 개체 집합듀 μ‚¬μ΄μ˜ λŒ€μ‘ 관계(correspondence), 즉 맀핑(mapping) 의미
    • (1) κ΄€κ³„μ˜ μœ ν˜•
      • 맀핑 카디널리티(mapping cardinality) κΈ°μ€€
      • 1:1 관계
      • 1:n 관계
      • n:m 관계
    • (2) κ΄€κ³„μ˜ μ°Έμ—¬ νŠΉμ„±
      • ν•„μˆ˜μ  μ°Έμ—¬ : 이쀑선 ν‘œν˜„
        • λͺ¨λ“  개체 μΈμŠ€ν„΄μŠ€κ°€ 관계에 λ°˜λ“œμ‹œ μ°Έμ—¬ν•΄μ•Ό 함
      • 선택적 μ°Έμ—¬
        • 개체 μΈμŠ€ν„΄μŠ€ 쀑 μΌλΆ€λ§Œ 관계에 참여해도 됨
    • (3) κ΄€κ³„μ˜ 쒅속성
      • μ•½ν•œ 개체(weak entity) : 이쀑 μ‚¬κ°ν˜• ν‘œν˜„, μ•½ν•œ κ°œμ²΄κ°€ κ°•ν•œ κ°œμ²΄μ™€ λ§ΊλŠ” κ΄€κ³„λŠ” 이쀑 λ§ˆλ¦„λͺ¨ ν‘œν˜„
        • λ‹€λ₯Έ 개체의 쑴재 여뢀에 의쑴적인 개체
      • κ°•ν•œ 개체(strong entity)
        • λ‹€λ₯Έ 개체의 쑴재 μ—¬λΆ€λ₯Ό κ²°μ •ν•˜λŠ” 개체

πŸ‘€ [05] 관계 데이터 λͺ¨λΈ

관계 데이터 λͺ¨λΈμ˜ κΈ°λ³Έ μš©μ–΄

  • λ¦΄λ ˆμ΄μ…˜(relation) : ν•˜λ‚˜μ˜ κ°œμ²΄μ— κ΄€ν•œ 데이터λ₯Ό 2차원 ν…Œμ΄λΈ” ꡬ쑰둜 μ €μž₯ν•œ 것
    • 파일(file)
  • 속성(attribute) : λ¦΄λ ˆμ΄μ…˜μ˜ μ—΄(column)
    • ν•„λ“œ(field)
  • νŠœν”Œ(tuple) : λ¦΄λ ˆμ΄μ…˜μ˜ ν–‰(row)
    • λ ˆμ½”λ“œ(record)
  • 도메인(domain) : 속성 ν•˜λ‚˜κ°€ κ°€μ§ˆ 수 μžˆλŠ” λͺ¨λ“  κ°’μ˜ 집합
    • 일반적으둜 μ†μ„±μ˜ νŠΉμ„±μ„ κ³ λ €ν•œ 데이터 νƒ€μž…μœΌλ‘œ μ •μ˜
  • 널 κ°’(null) : 속성 값을 아직 λͺ¨λ₯΄κ±°λ‚˜, μ ν•©ν•œ 값이 μ—†μŒμ„ ν‘œν˜„
  • 차수(degree) : ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ μ†μ„±μ˜ 전체 개수
    • 정적인 νŠΉμ§•
  • 카디널리티(cardinality) : ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ νŠœν”Œμ˜ 전체 개수
    • 동적인 νŠΉμ§•

ν‚€μ˜ μ’…λ₯˜

  • ν‚€(key) : λ¦΄λ ˆμ΄μ…˜μ— ν¬ν•¨λœ νŠœν”Œμ„λ“€ μœ μΌν•˜κ²Œ κ΅¬λ³„ν•΄μ£ΌλŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합
    • μœ μΌμ„±(uniqueness) : ν•˜λ‚˜μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œ λͺ¨λ“  νŠœν”Œμ€ μ„œλ‘œ λ‹€λ₯Έ ν‚€ 값을 κ°€μ Έμ•Ό 함
    • μ΅œμ†Œμ„±(minimality) : κΌ­ ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ μ†μ„±λ“€λ‘œλ§Œ ν‚€λ₯Ό ꡬ성함
  • μŠˆνΌν‚€(super key) : μœ μΌμ„±μ˜ νŠΉμ„±μ„ λ§Œμ‘±ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합
  • 후보킀(candidate key) : μœ μΌμ„±κ³Ό μ΅œμ†Œμ„±μ„ λ§Œμ‘±ν•˜λŠ” 속성 λ˜λŠ” μ†μ„±λ“€μ˜ 집합
  • κΈ°λ³Έν‚€(primary key) : μ—¬λŸ¬ 후보킀 쀑 기본적으둜 μ‚¬μš©ν•  ν‚€
    • 널 값을 κ°€μ§ˆ 수 μžˆλŠ” 속성이 ν¬ν•¨λœ ν›„λ³΄ν‚€λŠ” κΈ°λ³Έν‚€λ‘œ 뢀적합함
    • 값이 자주 변경될 수 μžˆλŠ” 속성이 ν¬ν•¨λœ ν›„λ³΄ν‚€λŠ” κΈ°λ³Έν‚€λ‘œ 뢀적합함
    • λ‹¨μˆœν•œ 후보킀λ₯Ό κΈ°λ³Έν‚€λ‘œ 선택함
  • λŒ€μ²΄ν‚€(alternate key) : κΈ°λ³Έν‚€λ‘œ μ„ νƒλ˜μ§€ λͺ»ν•œ 후보킀듀
  • μ™Έλž˜ν‚€(foreign key) : λ‹€λ₯Έ λ¦΄λ ˆμ΄μ…˜μ˜ κΈ°λ³Έν‚€λ₯Ό κ·ΈλŒ€λ‘œ μ°Έμ‘°ν•˜λŠ” μ†μ„±μ˜ 집합

관계 데이터 λͺ¨λΈμ˜ μ œμ•½

  • 무결성 μ œμ•½μ‘°κ±΄(integrity constraint) : λ°μ΄ν„°μ˜ 무결성을 보μž₯ν•˜κ³  μΌκ΄€λœ μƒνƒœλ‘œ μœ μ§€ν•˜κΈ° μœ„ν•œ κ·œμΉ™
    • 개체 무결성 μ œμ•½μ‘°κ±΄(entity integrity constraint) : κΈ°λ³Έν‚€λ₯Ό κ΅¬μ„±ν•˜λŠ” λͺ¨λ“  속성은 널 값을 κ°€μ§ˆ 수 μ—†μŒ
    • μ°Έμ‘° 무결성 μ œμ•½μ‘°κ±΄(referential integrity constraint) : μ™Έλž˜ν‚€λŠ” μ°Έμ‘°ν•  수 μ—†λŠ” 값을 κ°€μ§ˆ 수 μ—†μŒ

πŸ‘€ [06] 관계 데이터 μ—°μ‚°

관계 λŒ€μˆ˜ μ—°μ‚°μž - 순수 관계 μ—°μ‚°μž

  • μ…€λ ‰νŠΈ(select) : λ¦΄λ ˆμ΄μ…˜μ—μ„œ 주어진 쑰건을 λ§Œμ‘±ν•˜λŠ” νŠœν”Œλ§Œ μ„ νƒν•˜μ—¬ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ„ ꡬ성
    • μˆ˜ν•™μ  ν‘œν˜„ : $\sigma_{쑰건식}(λ¦΄λ ˆμ΄μ…˜)$
    • 데이터 언어적 ν‘œν˜„ : λ¦΄λ ˆμ΄μ…˜ where 쑰건식
  • ν”„λ‘œμ νŠΈ(project) : λ¦΄λ ˆμ΄μ…˜μ—μ„œ μ„ νƒν•œ 속성에 ν•΄λ‹Ήν•˜λŠ” κ°’μœΌλ‘œ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ„ ꡬ성
    • μˆ˜ν•™μ  ν‘œν˜„ : $\pi_{μ†μ„±λ¦¬μŠ€νŠΈ}(λ¦΄λ ˆμ΄μ…˜)$
    • 데이터 언어적 ν‘œν˜„ : λ¦΄λ ˆμ΄μ…˜[μ†μ„±λ¦¬μŠ€νŠΈ]
  • 쑰인(join) : 쑰인 속성(join attribute) 을 μ΄μš©ν•΄ 두 λ¦΄λ ˆμ΄μ…˜μ„ μ‘°ν•©ν•˜μ—¬ ν•˜λ‚˜μ˜ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ„ ꡬ성
    • 쑰인 속성 : 두 λ¦΄λ ˆμ΄μ…˜μ΄ κ³΅ν†΅μœΌλ‘œ 가지고 μžˆλŠ” μ†μ„±μœΌλ‘œ, 두 λ¦΄λ ˆμ΄μ…˜μ΄ 관계가 μžˆμŒμ„ λ‚˜νƒ€λƒ„
    • ν‘œν˜„λ²• : $λ¦΄λ ˆμ΄μ…˜1 \bowtie λ¦΄λ ˆμ΄μ…˜2$
    • 세타 쑰인(theta-join) : 동등 쑰인에 λΉ„ν•΄ μ’€ 더 μΌλ°˜ν™”λœ 쑰인
      • 주어진 쑰인 쑰건을 λ§Œμ‘±ν•˜λŠ” 두 λ¦΄λ ˆμ΄μ…˜μ˜ λͺ¨λ“  νŠœν”Œμ„ μ—°κ²°ν•œ μƒˆλ‘œμš΄ νŠœν”Œλ‘œ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ„ ꡬ성
      • ν‘œν˜„λ²• : $λ¦΄λ ˆμ΄μ…˜1 \bowtie_{A \theta B} λ¦΄λ ˆμ΄μ…˜2$
      • $\theta$ μ—λŠ” 비ꡐ μ—°μ‚°μžλ₯Ό λ‹€μ–‘ν•˜κ²Œ μ‚½μž…ν•˜μ—¬ 쑰건을 ν‘œν˜„ν•  수 있음
        • $\theta$ μ—°μ‚°μžκ°€ $=$ 인 세타 쑰인이 동등 μ‘°μΈμž„
    • μžμ—° 쑰인(natural join) : 동등 쑰인의 κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ—μ„œ μ€‘λ³΅λœ 속성을 μ œκ±°ν•˜μ—¬ 쑰인 속성이 ν•œ 번만 λ‚˜νƒ€λ‚˜κ²Œ ν•˜λŠ” μ—°μ‚°
      • ν‘œν˜„λ²• : $λ¦΄λ ˆμ΄μ…˜1 \bowtie_N λ¦΄λ ˆμ΄μ…˜2$
      • 세타 쑰인 μ—μ„œ $=$ μ—°μ‚°μžλ₯Ό μ΄μš©ν•΄ 쑰인 쑰건을 ν‘œν˜„ν•œ 것이 동등 쑰인 인 것이고 동등 쑰인 μ—μ„œ μ€‘λ³΅λœ 쑰인 속성을 μ œκ±°ν•˜λ©΄ μžμ—° 쑰인 인 κ²ƒμž„

관계 λŒ€μˆ˜ μ—°μ‚°μž - ν™•μž₯된 관계 λŒ€μˆ˜ μ—°μ‚°μž

  • μžμ—° 쑰인 연산을 ν™•μž₯ν•œ μ„Έλ―Έ 쑰인과 μ™ΈλΆ€ 쑰인
  • μ„Έλ―Έ 쑰인(semi-join)
  • λ¦΄λ ˆμ΄μ…˜ S의 쑰인 μ†μ„±μœΌλ‘œλ§Œ κ΅¬μ„±ν•œ(ν”„λ‘œμ νŠΈν•œ) λ¦΄λ ˆμ΄μ…˜μ„ λ¦΄λ ˆμ΄μ…˜ R에 μžμ—° μ‘°μΈν•˜λŠ” 것
    • ν‘œν˜„λ²• : $R ⋉ S$
    • 검색에 λΆˆν•„μš”ν•œ 속성을 미리 μ œκ±°ν•˜μ—¬ 쑰인 μ—°μ‚°μ˜ λΉ„μš©μ„ 쀄일 수 있음
  • μ™ΈλΆ€ 쑰인(outer-join)
    • 두 λ¦΄λ ˆμ΄μ…˜μ— μžμ—° 쑰인 연산을 μˆ˜ν–‰ν•  λ•Œ 쑰인 속성 값이 같은 νŠœν”Œμ΄ μƒλŒ€ λ¦΄λ ˆμ΄μ…˜μ— μ‘΄μž¬ν•˜μ§€ μ•Šμ•„ 쑰인 μ—°μ‚°μ—μ„œ μ œμ™Έλœ λͺ¨λ“  νŠœν”Œμ„ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ— 포함
      • κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ— 속성 값이 μ—†λŠ” κ²½μš°λŠ” 널 κ°’μœΌλ‘œ 처리
    • μ™Όμͺ½ μ™ΈλΆ€ 쑰인, 였λ₯Έμͺ½ μ™ΈλΆ€ 쑰인, μ™„μ „ μ™ΈλΆ€ 쑰인
      • λͺ¨λ“  νŠœν”Œμ„ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ κ°€μ Έμ˜€κ³ μž ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜μ΄ 무엇이냐에 따라 λΆ„λ₯˜
      • 쑰인 μ—°μ‚°μ—μ„œ μ œμ™Έλœ νŠœν”Œμ„ 포함
    • μ™Όμͺ½ μ™ΈλΆ€ 쑰인
      • μ™Όμͺ½μ— μžˆλŠ” 첫 번째 λ¦΄λ ˆμ΄μ…˜μ— μ‘΄μž¬ν•˜λŠ” λͺ¨λ“  νŠœν”Œμ„ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ— 포함
    • 였λ₯Έμͺ½ μ™ΈλΆ€ 쑰인
      • 였λ₯Έμͺ½μ— μžˆλŠ” 두 번째 λ¦΄λ ˆμ΄μ…˜μ— μ‘΄μž¬ν•˜λŠ” λͺ¨λ“  νŠœν”Œμ„ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ— 포함
    • μ™„μ „ μ™ΈλΆ€ 쑰인
      • 연산에 μ°Έμ—¬ν•˜λŠ” 두 λ¦΄λ ˆμ΄μ…˜μ— μžˆλŠ” λͺ¨λ“  νŠœν”Œμ„ κ²°κ³Ό λ¦΄λ ˆμ΄μ…˜μ— 포함

πŸ‘€ [07] λ°μ΄ν„°λ² μ΄μŠ€ μ–Έμ–΄ SQL

ν…Œμ΄λΈ” 생성 - create table λ¬Έ

create table Customer (
  id varchar(10) not null,
  name varchar(20) not null,
  age int,
  class varchar(10) not null,
  job varchar(20),
  reserves int default 0,
  primary key(id)
);
  • 고객 ν…Œμ΄λΈ” 생성
create table Product (
  id char(3) not null,
  name varchar(20),
  inventory int,
  price int,
  manufacturer varchar(20),
  primary key(id),
  check(inventory between 0 and 10000)
);
  • μ œν’ˆ ν…Œμ΄λΈ” 생성
  • 데이터 무결성 μ œμ•½μ‘°κ±΄μ˜ μ •μ˜
    • check
      • ν…Œμ΄λΈ”μ— μ •ν™•ν•˜κ³  μœ νš¨ν•œ 데이터λ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•΄ νŠΉμ • 속성에 λŒ€ν•œ μ œμ•½μ‘°κ±΄μ„ 지정
      • constraint ν‚€μ›Œλ“œμ™€ ν•¨κ»˜ 고유의 이름을 λΆ€μ—¬ν•  수 있음
create table Order (
  id char(3) not null,
  customer varchar(10),
  product char(3),
  quantity int,
  address varchar(30),
  day date,
  primary key(id),
  foreign key(customer) references Customer(id),
  foreign key(product) references Product(id)
);
  • μ£Όλ¬Έ ν…Œμ΄λΈ” 생성

데이터 검색 - select λ¬Έ

select [ all | distinct ] <attribute_list>
from <table_list>;
  • κΈ°λ³Έ 검색 λͺ…λ Ή ν˜•μ‹
  • 속성 λ¦¬μŠ€νŠΈμ• μ„œ λ‚˜μ—΄ μ‹œ μ†μ„±μ˜ μˆœμ„œλŠ” λ¬΄μ˜λ―Έν•¨
  • all : κ²°κ³Ό ν…Œμ΄λΈ”μ΄ νŠœν”Œμ˜ 쀑볡을 ν—ˆμš©ν•˜λ„λ‘ 지정, μƒλž΅ κ°€λŠ₯
  • distinct : κ²°κ³Ό ν…Œμ΄λΈ”μ΄ νŠœν”Œμ˜ 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•Šλ„λ‘ 지정
select name, price as value from Product;
  • μ œν’ˆ ν…Œμ΄λΈ”μ—μ„œ μ œν’ˆλͺ…κ³Ό 단가λ₯Ό κ²€μƒ‰ν•˜λ˜, 단가λ₯Ό κ°€κ²©μ΄λΌλŠ” μƒˆλ‘œμš΄ μ΄λ¦„μœΌλ‘œ 좜λ ₯
  • as : 별칭 지정
select name, price+500 as adjustment_price from Product;
  • μ œν’ˆ ν…Œμ΄λΈ”μ—μ„œ μ œν’ˆλͺ…κ³Ό 단가 속성을 κ²€μƒ‰ν•˜λ˜, 단가에 500원을 더해 'μ‘°μ • 단가' λΌλŠ” μƒˆ μ΄λ¦„μœΌλ‘œ 좜λ ₯
select product, quantity, day from Order where customer='apple' and quantity>=15;
  • μ£Όλ¬Έ ν…Œμ΄λΈ”μ—μ„œ apple 고객이 15개 이상 μ£Όλ¬Έν•œ μ£Όλ¬Έμ œν’ˆ, μˆ˜λŸ‰, 주문일자 검색
select product, quantity, day, customer from Orderr where customer='apple' or quantity>=15;
  • μ£Όλ¬Έ ν…Œμ΄λΈ”μ—μ„œ apple 고객이 μ£Όλ¬Έν–ˆκ±°λ‚˜ 15개 이상 주문된 μ œν’ˆμ˜ μ£Όλ¬Έμ œν’ˆ, μˆ˜λŸ‰, 주문일자, 주문고객을 검색
select name, price, manufacturer from Product where price between 2000 and 3000;
  • μ œν’ˆ ν…Œμ΄λΈ”μ—μ„œ 단가가 2,000원 μ΄μƒμ΄λ©΄μ„œ 3,000원 μ΄ν•˜μΈ μ œν’ˆμ˜ μ œν’ˆλͺ…, 단가, μ œμ‘°μ—…μ²΄λ₯Ό 검색
select name, class, age from Customer order by age desc;
  • 고객 ν…Œμ΄λΈ”μ—μ„œ 고객이름, λ“±κΈ‰, λ‚˜μ΄λ₯Ό κ²€μƒ‰ν•˜λ˜, λ‚˜μ΄λ₯Ό κΈ°μ€€μœΌλ‘œ λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬
select customer, product, quantity, day from Orderr where quantity >= 10
order by product asc, quantity desc;
  • μ£Όλ¬Έ ν…Œμ΄λΈ”μ—μ„œ μˆ˜λŸ‰μ΄ 10개 이상인 주문의 주문고객, μ£Όλ¬Έμ œν’ˆ, μˆ˜λŸ‰, 주문일자λ₯Ό 검색. 단, μ£Όλ¬Έμ œν’ˆμ„ κΈ°μ€€μœΌλ‘œ μ˜€λ¦„μ°¨μˆœ μ •λ ¬ν•˜κ³ , 동일 μ œν’ˆμ€ μˆ˜λŸ‰μ„ κΈ°μ€€μœΌλ‘œ λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬
  • count(*) : 전체 νŠœν”Œμ˜ 개수
  • max(quantity) : μˆ˜λŸ‰μ—μ„œ 제일 큰 κ°’
ν•¨μˆ˜ 의미 μ‚¬μš© κ°€λŠ₯ν•œ μ†μ„±μ˜ νƒ€μž…
count 속성 κ°’μ˜ 개수 λͺ¨λ“  데이터
max 속성 κ°’μ˜ μ΅œλŒ“κ°’ λͺ¨λ“  데이터
min 속성 κ°’μ˜ μ΅œμ†Ÿκ°’ λͺ¨λ“  데이터
sum 속성 κ°’μ˜ 합계 숫자 데이터
avg 속성 κ°’μ˜ 평균 숫자 데이터
  • νŠΉμ • 속성 값을 ν†΅κ³„μ μœΌλ‘œ κ³„μ‚°ν•œ κ²°κ³Όλ₯Ό κ²€μƒ‰ν•˜κΈ° μœ„ν•΄ 집계 ν•¨μˆ˜(aggregate function) μ‚¬μš©
    • μ—΄ ν•¨μˆ˜(column function) 라고도 함
  • 널인 속성 값은 μ œμ™Έν•˜κ³  계산함
  • where μ ˆμ—μ„œλŠ” μ‚¬μš© λΆˆκ°€λŠ₯
  • select λ‚˜ having μ ˆμ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯
/* where */
select sum(inventory) as total_inventory from Product where manufacturer='ν•œλΉ›μ œκ³Ό';

/* group by */
select sum(inventory) as total_inventory from Product group by manufacturer having manufacturer='ν•œλΉ›μ œκ³Ό';
  • ν•œλΉ›μ œκ³Όμ—μ„œ μ œμ‘°ν•œ μ œν’ˆμ˜ μž¬κ³ λŸ‰ 합계λ₯Ό μ œν’ˆ ν…Œμ΄λΈ”μ—μ„œ 검색
/* 숫자 μˆœμ„œλ‘œ 연산됨 */
(5)select [ all | distinct ] <attribute_list>
(1)from <table_list>
(2)[ where <condition> ]
(3)[ group by <attribute_list> (4)[ having <condition> ] ]
(6)[ order by <attribute_list> [ asc | desc ] ];
  • group by : νŠΉμ • μ†μ„±μ˜ 값이 같은 νŠœν”Œλ“€μ„ λͺ¨μ•„ 그룹을 λ§Œλ“€κ³ , κ·Έλ£Ήλ³„λ‘œ 검색
    • group by ν‚€μ›Œλ“œμ™€ 그룹을 λ‚˜λˆ„λŠ” 기쀀이 λ˜λŠ” 속성을 지정
  • having : 그룹에 λŒ€ν•œ 쑰건 μž‘μ„±
  • 그룹을 λ‚˜λˆ„λŠ” 기쀀이 λ˜λŠ” 속성을 select μ ˆμ—λ„ μž‘μ„±ν•˜λŠ” 것이 μ’‹μŒ
select manufacturer, count(*) as number_of_products, max(price) as highest_price
from Product group by manufacturer;
  • μ œν’ˆ ν…Œμ΄λΈ”μ—μ„œ μ œμ‘°μ—…μ²΄λ³„λ‘œ μ œμ‘°ν•œ μ œν’ˆμ˜ κ°œμˆ˜μ™€ μ œν’ˆ 쀑 κ°€μž₯ λΉ„μ‹Ό 단가λ₯Ό κ²€μƒ‰ν•˜λ˜, μ œν’ˆμ˜ κ°œμˆ˜λŠ” μ œν’ˆμˆ˜λΌλŠ” μ΄λ¦„μœΌλ‘œ 좜λ ₯ν•˜κ³  κ°€μž₯ λΉ„μ‹Ό λ‹¨κ°€λŠ” μ΅œκ³ κ°€λΌλŠ” μ΄λ¦„μœΌλ‘œ 좜λ ₯
select manufacturer, count(*) as number_of_products, max(price) as highest_price
from Product group by manufacturer having count(*)>=3;
  • μ œν’ˆ ν…Œμ΄λΈ”μ—μ„œ μ œν’ˆμ„ 3개 이상 μ œμ‘°ν•œ μ œμ‘°μ—…μ²΄λ³„λ‘œ μ œν’ˆμ˜ κ°œμˆ˜μ™€, μ œν’ˆ 쀑 κ°€μž₯ λΉ„μ‹Ό 단가λ₯Ό 검색
select product, customer, sum(quantity) as total_quantity from Orderr
group by product, customer;
  • μ£Όλ¬Έ ν…Œμ΄λΈ”μ—μ„œ 각 주문고객이 μ£Όλ¬Έν•œ μ œν’ˆμ˜ μ΄μ£Όλ¬Έμˆ˜λŸ‰μ„ μ£Όλ¬Έμ œν’ˆλ³„λ‘œ 검색
  • 집계 ν•¨μˆ˜λ‚˜ group by μ ˆμ— λͺ…μ‹œλœ 속성 μ™Έμ˜ 속성은 select μ ˆμ— μž‘μ„± λΆˆκ°€
  • as μƒλž΅ ν›„ 별칭을 μž‘μ€ λ”°μ˜΄ν‘œλ‘œ 묢어도 됨
728x90
λ°˜μ‘ν˜•

'Development Study' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Lecture] Operating System - Mid Summary  (0) 2023.04.23
[Lecture] Operating System with Ubuntu - Day 6  (0) 2023.04.23
[Lecture] Operating System with Ubuntu - Day 5  (0) 2023.04.17
[Lecture] DataBase - SQL Assignment  (0) 2023.04.16
[Lecture] Data Communication - Mid Summary  (1) 2023.04.14
Comments