SQL

[DBMS 기초] 관계형 데이터베이스, MySQL CRUD까지

개발자 누렁이 2025. 5. 19. 17:51
728x90
반응형

1. DBMS란?

**DBMS (DataBase Management System)**는 데이터를 저장하고 관리하며, 필요할 때 꺼내 쓸 수 있도록 도와주는 시스템입니다.

예) MySQL, Oracle, PostgreSQL, SQL Server 등

DBMS 안에는 여러 개의 **Database(계정)**가 있고, 그 안에 여러 개의 **Table(테이블)**이 존재합니다. 이 구조가 바로 관계형 데이터베이스(RDBMS)의 기본입니다.


2. MySQL 구성 개요

  • Client / Server 구조
    • 사용자가 데이터를 요청 → 서버가 DB를 조회 후 응답
    • 화면에서는 form 데이터를 받고, DB에서는 column 기준으로 데이터를 처리
  • MySQL 구성
    • DBServer → Database → Table
    • 테이블 구조는 2차원 (행과 열 = row, column)
    • 하나의 테이블에는 정형데이터만 저장 가능

정형데이터: 숫자, 날짜, 문자열 등 쪼갤 수 있는 구조적 데이터
비정형데이터: 이미지, 음성, 자연어 등 → DBMS가 아닌 AI 쪽에서 다룸


3. 테이블 설계와 모델 구성

  • VO(Value Object): 데이터 구조 자체
  • DAO(Data Access Object): DB에 접근해서 CRUD 처리
  • 둘을 합쳐 Model이라 부르기도 합니다.

⚠️ Java의 상속 관계를 DB 테이블에 그대로 적용하면 안 됩니다.
테이블은 중복을 최소화해야 하고, 상속보다는 단일 테이블 구조로 설계합니다. 예: Employee 테이블


4. Primary Key란?

  • **기본 키(Primary Key)**는 하나의 행을 고유하게 식별합니다.
  • 반드시 지켜야 할 조건:
    1. Not Null
    2. Unique

예:

myTable  
1, James, 25  → 행(row), 즉 하나의 레코드

5. SELECT 문과 SQL 실행 순서

  • SQL에서의 실행 순서:
FROM → WHERE → SELECT → ORDER BY

즉, SELECT가 제일 먼저 눈에 보여도, 실제 실행은 FROM부터입니다.

  • Projection: 보여주고자 하는 컬럼만 SELECT 절에 명시
    • 예: SELECT id, name FROM mytable;
  • Selection: 조건에 맞는 행만 가져오기
    • 예: SELECT * FROM mytable WHERE age = 30;

⚠️ SELECT *은 절대 사용하지 말 것!
보안상 민감한 데이터까지 노출될 수 있고, 성능에도 악영향


6. CRUD와 실무 사용 비율

기능설명
C Create — INSERT
R Read — SELECT (95% 차지)
U Update
D Delete
 

구조 변경 시엔 DROP, ALTER 명령어 사용


7. RDBMS의 관계 모델

  • 1:N 관계
    • 하나의 부서(Department)에는 여러 명의 직원(Employee)이 소속
    • 한 명의 직원은 하나의 부서에만 소속
  • Java로 비유하자면:
 
class Employee {
  Department department;
}

→ 이는 Has-A 관계이며, 관계형 모델로 구현됩니다.


8. 추가 개념 요약

  • MySQL에서 계정은 데이터베이스 단위로 관리됨
  • 테이블은 정형데이터만 저장 가능
  • MongoDB 같은 비관계형 DB는 비정형데이터를 다룰 수 있음
728x90
반응형