[DBMS] DBMS & SQL κ°œλ…

:-)Β·2022λ…„ 5μ›” 20일
0

πŸ’» DBMS

λͺ©λ‘ 보기
1/1
post-thumbnail
post-custom-banner

πŸ“ λ°μ΄ν„°λ² μ΄μŠ€

  • 데이터(data)와 베이슀(base)의 합성어이며 DBMSλŠ”
    Database Management System의 μ•½μžλ‘œ 'λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ'을
    μ˜λ―Έν•œλ‹€.

κΈ°λ³Έ κ°œλ…

자료 (Data)

  • ν˜„μ‹€ μ„Έκ³„μ—μ„œ κ΄€μ°°μ΄λ‚˜ 츑정을 톡해 μˆ˜μ§‘ν•œ λ‹¨μˆœν•œ μ‚¬μ‹€μ΄λ‚˜ κ°’

정보 (Information)

  • μ˜μ‚¬ 결정에 도움을 쀄 수 μžˆλŠ” μœ μš©ν•œ ν˜•νƒœ
  • 자료λ₯Ό 가곡(처리)ν•΄μ„œ 얻을 수 μžˆλŠ” κ²°κ³Όλ₯Ό 의미

데이터 베이슀

  • μ–΄λŠ ν•œ 쑰직체의 μ—¬λŸ¬ μ‘μš© μ‹œμŠ€ν…œλ“€μ΄ κ³΅λ™μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν†΅ν•©ν•˜μ—¬ μ €μž₯ν•œ
    μš΄μ˜λ°μ΄ν„°μ˜ 집합.
  • κ³΅λ™μ˜ λͺ©μ μ„ μ§€μ›ν•˜κΈ° μœ„ν•œ μ„œλ‘œ κ΄€λ ¨λœ μžλ£Œλ“€μ˜ λͺ¨μž„
  • μ£Όμ œμ™€ κ΄€λ ¨λœ 의미 μžˆλŠ” λ°μ΄ν„°λ“€μ˜ λͺ¨μŒ

DBMS (DataBase Management System)

  • μ‚¬μš©μžμ—κ²Œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μƒμ„±ν•˜κ³  μœ μ§€ν•  수 있게 ν•˜λŠ” ν”„λ‘œκ·Έλž¨ 집합
  • DBMSλŠ” λ°μ΄ν„°λ² μ΄μŠ€ μ–Έμ–΄λ₯Ό 가지고 있으며 이λ₯Ό 톡해 λ°μ΄ν„°μ˜ μ‚½μž…/μ‚­μ œ/μˆ˜μ •μ„
    ν•  수 μžˆλ‹€.
  • DBMS μ’…λ₯˜ :
    • MySql, MongoDB, Oracle, MSSql, MariaDB, Tibero, Postgresql,
      sqlite, h2



DBMS κΈ°λŠ₯

  • λ°μ΄ν„°μ˜ 무결성 μœ μ§€
    • DB의 λ°μ΄ν„°λŠ” 싀세계λ₯Ό μ μš©ν•˜λŠ” κ·œμΉ™μ„ 항상 λ§Œμ‘±ν•΄μ•Ό ν•œλ‹€.
    • μ„œλ‘œ λ‹€λ₯Έ 뢀뢄에 μžˆλŠ” 두 개의 데이터가 μ„œλ‘œ λͺ¨μˆœλ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€.
      즉, λ°μ΄ν„°μ˜ 일관성 μœ μ§€

DBMS의 3가지 νŠΉμ„±

  1. λ°μ΄ν„°μ˜ 논리적 독립성

    • ν•œ 속성에 가해진 변경이 λ™μΌν•œ ν…Œμ΄λΈ”μ—μ„œ λ‹€λ₯Έ 속성에 영ν–₯을 주지
      μ•ŠλŠ” 것을 μ˜λ―Έν•œλ‹€.
    • μ‘μš©ν”„λ‘œκ·Έλž¨μ— 영ν–₯을 주지 μ•Šκ³  데이터 ꡬ쑰λ₯Ό λ³€κ²½ν•  수 있게 ν•˜λŠ” 것
  2. μ°Έμ‘° 무결성과 데이터 무결성

    • μ‘μš©ν”„λ‘œκ·Έλž¨ κ°œλ°œμ‹œ 무결성 μ œμ•½ 쑰건을 신경쓰지 μ•Šμ•„λ„ λœλ‹€.
  3. λΉ„μ •κ·œ 질의

    • μ‚¬μš©μžλŠ” μž‘μ—…μ„ μ‹€ν–‰ν•˜λŠ” 방법을 λͺ…μ‹œν•˜μ§€ μ•Šκ³ λ„, λ°μ΄ν„°λ² μ΄μŠ€μ—κ²Œ μ–΄λ–€
      데이터λ₯Ό μ‘°νšŒν•  것인지λ₯Ό λͺ…λ Ήν•  수 μžˆλ‹€.



λ°μ΄ν„°λ² μ΄μŠ€ λͺ¨λΈμ˜ μ’…λ₯˜

  • κ³„μΈ΅ν˜• 데이터 λͺ¨λΈ
    • λ‚˜λ­‡κ°€μ§€ ν˜•νƒœμ˜ 트리(tree)ꡬ쑰λ₯Ό ν™œμš©ν•˜μ—¬ 데이터 관련성을
      κ³„μΈ΅λ³„λ‘œ λ‚˜λˆ„μ–΄ λΆ€λͺ¨ μžμ‹ 같은 관계λ₯Ό μ •μ˜ν•˜κ³  데이터λ₯Ό
      κ΄€λ¦¬ν•œλ‹€.
    • μΌλŒ€λ‹€ ꡬ쑰의 데이터λ₯Ό ν‘œν˜„ν•˜κΈ°μ—λŠ” μ•Œλ§žμ§€λ§Œ μžμ‹ κ°œμ²΄κ°€
      μ—¬λŸ¬ λΆ€λͺ¨λ₯Ό 가진 κ΄€κ³„λŠ” ν‘œν˜„ν•  수 μ—†λ‹€.


  • λ§ν˜• 데이터 λͺ¨λΈ (λ„€νŠΈμ›Œν¬ 데이터 λͺ¨λΈ)
    • κ·Έλž˜ν”„(graph) ꡬ쑰λ₯Ό 기반으둜 ν•œλ‹€.
    • 개체 κ°„ 관계λ₯Ό κ·Έλž˜ν”„ ꡬ쑰둜 μ—°κ²°ν•˜λ―€λ‘œ μžμ‹ κ°œμ²΄κ°€
      μ—¬λŸ¬ λΆ€λͺ¨ κ°œμ±„λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.


  • 객체 지ν–₯ 데이터 λͺ¨λΈ
    • 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ‚¬μš©ν•˜λŠ” 객체 κ°œλ…μ„ 기반으둜 ν•œλ‹€.
    • 데이터λ₯Ό λ…λ¦½λœ 객체둜 κ΅¬μ„±ν•˜κ³  κ΄€λ¦¬ν•˜μ—¬ 상속, μ˜€λ²„λΌμ΄λ“œ λ“±
      객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ‚¬μš©ν•˜λŠ” κ°•λ ₯ν•œ κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ‹€.

    • ν•˜μ§€λ§Œ 객체 지ν–₯ν˜• λͺ¨λΈ κ°œλ…μ„ μ™„μ „νžˆ 데이터 λ² μ΄μŠ€μ—
      μ μš©ν•˜λŠ” 것은 쉽지 μ•ŠκΈ° λ•Œλ¬Έμ— 이λ₯Ό μ μš©ν•œ
      μ‚¬μš© DBMSλŠ” λ§Žμ§€ μ•Šλ‹€.
      λ‹€λ§Œ μ—¬λŸ¬ DBMSμ œν’ˆκ΅°μ΄ 'κ΄€κ³„ν˜• 데이터 λͺ¨λΈ'을 λ°”νƒ•μœΌλ‘œ 객체 κ°œλ…μ„
      λ„μž…ν•˜μ—¬ '객체 κ΄€κ³„ν˜• DBMS'둜 μ˜μ—­μ„ ν™•μž₯ν•˜κ³  μžˆλ‹€.


  • κ΄€κ³„ν˜• 데이터 λͺ¨λΈ (Relational Data Model)
    • 개체 집합에 λŒ€ν•œ 속성 관계λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•˜μ—¬ 개체λ₯Ό
      ν…Œμ΄λΈ”(table)둜 μ‚¬μš©ν•˜κ³  개체 집합듀 μ‚¬μ΄μ˜ κ΄€κ³„λŠ” 곡톡 μ†μ„±μœΌλ‘œ
      μ—°κ²°ν•˜λŠ” λ…λ¦½λœ ν˜•νƒœμ˜ 데이터 λͺ¨λΈ

κ΄€κ³„ν˜• 데이터 λͺ¨λΈμ˜ 핡심 ꡬ성 μš”μ†Œ

이름섀λͺ…
개체
(entity)
λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ λ°μ΄ν„°ν™”ν•˜λ €λŠ” 사물, κ°œλ…μ˜ 정보 λ‹¨μœ„
κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν…Œμ΄λΈ”(table) κ°œλ…κ³Ό λŒ€μ‘λ˜λ©° ν…Œμ΄λΈ”μ€ λ¦΄λ ˆμ΄μ…˜(relation)으둜 ν‘œκΈ°ν•˜κΈ°λ„ ν•œλ‹€.
속성
(attribute)
개체λ₯Ό κ΅¬μ„±ν•˜λŠ” λ°μ΄ν„°μ˜ κ°€μž₯ μž‘μ€ 논리적 λ‹¨μœ„λ‘œμ„œ λ°μ΄ν„°μ˜ μ’…λ₯˜, νŠΉμ„±, μƒνƒœ 등을 μ •μ˜ν•œλ‹€.
κ΄€κ³„ν˜• 데이터 베이슀의 μ—΄(column)κ°œλ…κ³Ό λŒ€μ‘λœλ‹€.
관계
(relationship)
κ°œμ²΄μ™€ 개체 λ˜λŠ” 속성 κ°„μ˜ 연관성을 λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ μ‚¬μš©
κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œλŠ” ν…Œμ΄λΈ” κ°„μ˜ 관계λ₯Ό μ™Έλž˜ν‚€(foreign key)λ“±μœΌλ‘œ κ΅¬ν˜„ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

κ΄€κ³„ν˜• λͺ¨λΈμ˜ ꡬ성 μš”μ†Œ

  • ν…Œμ΄λΈ” (table)
    • κ΄€κ³„ν˜• λͺ¨λΈμ€ 기본적으둜 데이터λ₯Ό 2차원 ν‘œ ν˜•νƒœλ‘œ μ €μž₯,κ΄€λ¦¬ν•œλ‹€.
    • 이 ν‘œν˜•νƒœμ˜ 데이터 μ €μž₯ 곡간을 ν…Œμ΄λΈ”μ΄λΌκ³  ν•œλ‹€.
    • ν…Œμ΄λΈ”μ˜ λ‚΄μš©μ€ μ‹€μ œμ μΈ ν–‰μ˜ μ§‘ν•©μœΌλ‘œ κ°„μ£Όλœλ‹€.
  • ν–‰ (row)
    • ν…Œμ΄λΈ”μ˜ κ°€λ‘œμ€„μ„ λ§ν•œλ‹€.
    • μ €μž₯ν•˜λ €λŠ” ν•˜λ‚˜μ˜ 개체λ₯Ό κ΅¬μ„±ν•˜λŠ” μ—¬λŸ¬ 값을 κ°€λ‘œλ‘œ
      λŠ˜μ–΄λœ¨λ¦° ν˜•νƒœ
    • μˆœμ„œκ°€ μ •ν•΄μ Έ μžˆμ§€ μ•Šλ‹€.
  • μ—΄(column)
    • ν…Œμ΄λΈ”μ˜ μ„Έλ‘œμ€„μ„ λ§ν•œλ‹€.
    • μ €μž₯ν•˜λ €λŠ” 데이터λ₯Ό λŒ€ν‘œν•˜λŠ” 이름과 곡톡 νŠΉμ„±μ„ μ •μ˜ν•œλ‹€.
    • μ €μž₯ 쑰건과 λ²”μœ„λ₯Ό 지정할 수 μžˆλ‹€.



ν‚€ (key)

데이터λ₯Ό ꡬ별할 수 μžˆλŠ” μœ μΌν•œ κ°’μœΌλ‘œ, μ’…λ₯˜λ³„λ‘œ 데이터λ₯Ό κ΅¬λ³„ν•˜κ±°λ‚˜
ν…Œμ΄λΈ” κ°„μ˜ μ—°κ΄€ 관계λ₯Ό ν‘œν˜„ν•  λ•Œ ν‚€λ‘œ μ§€μ •ν•œ 열을 μ‚¬μš©ν•œλ‹€.

  • κΈ°λ³Έν‚€ (PK : Primary Key)
    • ν…Œμ΄λΈ”μ— μ €μž₯된 행을 식별할 수 μžˆλŠ” μœ μΌν•œ κ°’
    • ν•œ ν…Œμ΄λΈ” λ‚΄μ—μ„œ μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” κ°’λ§Œ κ°€μ§ˆ 수 μžˆλŠ” ν‚€
    • NULL 값을 κ°€μ§ˆ 수 μ—†λ‹€.

κΈ°λ³Έν‚€λŠ” ν•™λ²ˆ, μ£Όλ―Όλ“±λ‘λ²ˆν˜Έ λ“± 처럼 개인 정보 λ…ΈμΆœμ΄ κ°€μž₯ 적은
데이터λ₯Ό μ„ μ •ν•œλ‹€.

  • 보쑰킀 (λŒ€μ²΄ν‚€ alternate key)

    • 후보킀(candidate key)에 속해 μžˆλŠ” ν‚€λ‘œ 후보킀 μ€‘μ—μ„œ
      κΈ°λ³Έν‚€λ‘œ μ§€μ •λ˜μ§€ μ•ŠλŠ” 열이닀.
    • 예λ₯Όλ“€μ–΄ κΈ°λ³Έν‚€λ‘œ μ„ νƒν•œ μ£Όλ―Όλ“±λ‘λ²ˆν˜Έλ₯Ό μ œμ™Έν•œ ν•™λ²ˆ,
      아이디가 보쑰킀가 λœλ‹€.

  • μ™Έλž˜ν‚€(FK: Foreign Key)

    • νŠΉμ • ν…Œμ΄λΈ”μ— ν¬ν•¨λ˜μ–΄ μžˆμœΌλ©΄μ„œ λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έν‚€λ‘œ
      μ§€μ •λœ ν‚€λ₯Ό μ˜λ―Έν•œλ‹€.
    • μ™Έλž˜ν‚€λŠ” λ°μ΄ν„°μ˜ 쀑볡을 ν”Όν•˜κΈ° μœ„ν•΄ ν…Œμ΄λΈ” μ‚¬μ΄μ˜ 관계λ₯Ό
      규λͺ…ν•˜κΈ° μœ„ν•œλ‹€.

μ‚¬μ§„μ—μ„œ 학생 정보 ν…Œμ΄λΈ”μ„ 보면 μ—΄ 쀑에 ν•™κ³Ό 정보 ν…Œμ΄λΈ”μ˜ 기본킀인
'ν•™κ³Ό μ½”λ“œ'κ°€ μžˆλ‹€.
이 ν•™κ³Ό μ½”λ“œκ°€ λ°”λ‘œ 학생 정보 ν…Œμ΄λΈ”κ³Ό ν•™κ³Ό 정보 ν…Œμ΄λΈ”μ„ 이어 μ£ΌλŠ”
'μ™Έλž˜ν‚€' 역할을 ν•œλ‹€.
즉! 학생 정보 ν…Œμ΄λΈ”μ€ ν•™κ³Ό μ½”λ“œλ₯Ό 톡해 ν•™κ³Ό 정보 ν…Œμ΄λΈ”μ˜ μ„ΈλΆ€ 정보λ₯Ό μ°Ύμ•„ 갈
수 μžˆλ‹€. 이λ₯Ό 학생 정보 ν…Œμ΄λΈ”μ΄ ν•™κ³Ό μ½”λ“œλ₯Ό 'μ°Έμ‘°'ν•œλ‹€κ³  ν‘œν˜„ν•œλ‹€.

  • 볡합킀 (composite key)
    • μ—¬λŸ¬ 열을 μ‘°ν•©ν•˜μ—¬ κΈ°λ³Έν‚€ 역할을 ν•  수 있게 λ§Œλ“  ν‚€λ₯Ό λœ»ν•œλ‹€.
    • ν•˜λ‚˜μ˜ μ—΄λ§ŒμœΌλ‘œ 행을 μ‹λ³„ν•˜λŠ” 것이 λΆˆκ°€λŠ₯ν•˜μ—¬ 두 개 μ΄μƒμ˜ μ—΄ 값을
      ν•¨κ»˜ μ‚¬μš©ν•΄μ•Ό 각 행이 μœ μΌν•œ λ°μ΄ν„°λ‘œμ„œ κ°€μΉ˜λ₯Ό μ§€λ‹Œλ‹€.


λ§Œμ•½ 같은 κ³Όλͺ©μ„ μ—¬λŸ¬ κ΅μˆ˜κ°€ κ°€λ₯΄μΉ˜κ±°λ‚˜, ν•œ κ΅μˆ˜κ°€ μ„œλ‘œ λ‹€λ₯Έ κ³Όλͺ©μ„
κ°€λ₯΄μΉ˜λŠ” κ²½μš°μ—λŠ” ν…Œμ΄λΈ” 행을 μ •ν™•νžˆ κ΅¬λΆ„ν•˜λŠ” 것이 λΆˆκ°€λŠ₯ν•˜λ‹€.

μ΄λ•Œ 각 κ³Όλͺ©λ³„ κ³Όλͺ© μ½”λ“œμ™€ λ‹΄λ‹Ή ꡐ수 열을 μ‘°ν•©ν•˜μ—¬ ν•˜λ‚˜μ˜ ν‚€λ‘œ
μ§€μ •ν•œλ‹€λ©΄ κ³Όλͺ© 정보 ν…Œμ΄λΈ”μ˜ 행을 μ •ν™•νžˆ ꡬ뢄할 수 μžˆλ‹€.
즉 'κ³Όλͺ© μ½”λ“œ + λ‹΄λ‹Ή ꡐ수' κ°€ λ³΅ν•©ν‚€λ‘œμ„œ κΈ°λ³Έν‚€ 역할을 ν•˜κ²Œ λœλ‹€.




SQLμ΄λž€?

  • Structured Query Language의 μ•½μžλ‘œμ„œ κ΄€κ³„ν˜• 데이터 베이슀 언어이닀.
  • λ°μ΄ν„°μ˜ μ‚½μž…, μ‚­μ œ, κ°±μ‹ , 질의, 보호(λ³΄μ•ˆ) λͺ…λ Ήλ¬ΈμœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.
  • SQL은 λΉ„μ ˆμ°¨μ  λ°μ΄ν„°λ² μ΄μŠ€ μ–Έμ–΄λ‘œ λΆ„λ₯˜ν•œλ‹€.

SQL κΈ°λŠ₯에 λ”°λ₯Έ λΆ„λ₯˜

μ’…λ₯˜μ„€λͺ…
데이터 μ •μ˜μ–΄(DDL)ν…Œμ΄λΈ”μ΄λ‚˜ κ΄€κ³„μ˜ ꡬ쑰λ₯Ό μƒμ„±ν•˜λŠ”λ° μ‚¬μš©ν•œλ‹€.
Create, Alter, Drop λ¬Έ 등이 μžˆλ‹€.
데이터 μ‘°μž‘μ–΄(DML)ν…Œμ΄λΈ”μ— 데이터λ₯Ό 검색, μ‚½μž…, μˆ˜μ •, μ‚­μ œν•˜λŠ”λ° μ‚¬μš©ν•œλ‹€.
select, insert, delete, update λ¬Έ 등이 μžˆλ‹€.
데이터 μ œμ–΄μ–΄(DCL)λ°μ΄ν„°μ˜ μ‚¬μš© κΆŒν•œμ„ κ΄€λ¦¬ν•˜λŠ”λ° μ‚¬μš©ν•œλ‹€.
grant, revokeλ¬Έ 등이 μžˆλ‹€.









참고자료 : <Do it! 였라클둜 λ°°μš°λŠ” λ°μ΄ν„°λ² μ΄μŠ€ μž…λ¬Έ>
post-custom-banner

0개의 λŒ“κΈ€