공통

데이터베이스 입문자를 위한 SQL 가이드 (JOIN, 인덱스, 보안 포함)

creator6556 2025. 4. 26. 07:56

1 개념

1) 정의

→ 데이터를 효율적으로 저장하고 관리하는 시스템

→ 데이터를 체계적으로 저장해 쉽게 검색, 수정, 삭제할 수 있게 해줌


2) DBMS(Database Management System)

① 정의

→ 데이터를 관리하는 소프트웨어

→ 사용자가 데이터를 저장하고 처리할 수 있도록 돕는 도구

② 주요 기능

→ 데이터 저장, 검색, 수정, 삭제

→ 일관성 및 무결성 보장

→ 보안 관리 및 접근 제어

→ 백업과 복구


3) 데이터 조직 구조

① 정의

→ 보통 테이블 형태로 저장

→ 테이블은 행(Row)과 열(Column)으로 구성

행(Row) 하나의 데이터 단위
열(Column) 데이터 항목

2 특징과 원칙

1) 주요 특징

일관성 데이터는 항상 정해진 규칙에 맞게 처리
정합성(무결성) 데이터는 정확하고 신뢰 가능해야 함
영속성 시스템이 종료되어도 데이터는 보존
접근성 효율적으로 데이터를 검색하고 사용할 수 있어야 함

2) ACID 원칙

→ 트랜잭션(데이터 작업 단위)의 안전성을 보장하기 위한 특성

Atomicity (원자성) 트랜잭션은 전부 실행되거나 전혀 실행되지 않아야 함
Consistency (일관성) 수행 전후 데이터는 항상 유효한 상태여야 함
Isolation (격리성) 트랜잭션은 독립적으로 실행되어야 함
Durability (지속성) 완료된 작업은 영구히 반영됨

3 활용 사례

비즈니스 고객, 제품, 판매 데이터 관리
웹 애플리케이션 사용자 정보, 게시글, 댓글 관리
금융 거래 기록, 계좌 정보 관리
의료 환자 정보, 진료 기록 관리

4 종류

종류 형태 특징 예시
관계형 데이터베이스
(RDBMS)
테이블(행과 열) 구조 → SQL 사용
→ 관계 정의(PK, FK)
MySQL, PostgreSQL,
Oracle, SQL Server
비관계형 데이터베이스
(NoSQL)
문서, 키-값, 컬럼 등 다양한
구조
→ 유연한 스키마
→ 수평 확장에 유리
MongoDB, Cassandra,
CouchDB, Redis
그래프 데이터베이스 노드(Node)와 간선(Edge) 복잡한 관계를 효율적으로 표현 Neo4j, ArangoDB
키-값 데이터베이스 키(Key)와 값(Value)의 쌍 → 매우 빠른 조회 속도
→ 단순 구조
Redis, Riak
컬럼 패밀리 데이터베이스 열(Column) 단위 저장 대규모 분석에 유리 Apache Cassandra, HBase
문서 지향 데이터베이스 JSON, BSON 형태의 문서 → 유연한 스키마
→ 대규모 데이터 처리
MongoDB, CouchDB
타임 시리즈 데이터베이스 시간 기반 데이터 저장 → 시간 단위 기록
→ 빠른 분석
InfluxDB, Timescale DB

5 데이터베이스 기본 개념

1) 데이터베이스 모델

① 정의

→ 데이터 구조를 정의하는 설계 방식

② 종류와 설명

종류 설명
관계형 모델 테이블 기반
객체 지향 모델 객체와 데이터를 함께 관리
문서 지향 모델 JSON 문서 형태 저장
그래프 모델 노드와 간선으로 표현

2) 스키마(Schema)

① 정의

→ 데이터베이스의 구조를 정의한 설계도

② 종류와 설명

종류 설명
내부 스키마 물리적 저장 방식
개념 스키마 논리적 데이터 구조
외부 스키마 사용자 시점의 데이터 구조

3) 데이터 타입

① 정의

→ 컬럼에 저장될 데이터 형식을 정의

② 종류와 예시

종류 예시
숫자형 INT, FLOAT
문자형 CHAR, VARCHAR
날짜형 DATE, TIME, DATETIME
논리형 TRUE, FALSE

4) 키(Key)

① 정의

→ 각 데이터를 고유하게 식별하는 필드

② 종류와 설명

종류 설명
기본 키 (Primary Key) 유일한 값이며 NULL 불가
외래 키 (Foreign Key) 다른 테이블과 연결
후보 키 (Candidate Key) 기본 키 후보
대체 키 (Alternate Key) 기본 키 외의 고유 키

5) 정규화(Normalization)

① 정의

→ 중복을 제거하고 무결성을 높이기 위한 테이블 분해 작업

② 종류와 설명

종류 설명
1NF 반복 그룹 제거
2NF 부분 종속성 제거
3NF 이행적 종속성 제거

6) 무결성 제약(Integrity Constraints)

종류 설명
개체 무결성 기본 키는 NULL 불가
참조 무결성 외래 키는 존재하는 값
도메인 무결성 값은 지정된 데이터 타입과 일치

7) 인덱스(Index)

→ 검색 속도를 높이기 위한 데이터 구조

→ 빠른 검색이 가능

→ 삽입/수정/삭제 성능이 저하 가능


8) 뷰(View)

→ 실제 데이터를 저장하지 않고 가상의 테이블로 데이터를 조회

→ 복잡한 쿼리를 단순화

→ 보안 향상 가능


6 SQL (Structured Query Language)

1) 개념

→ 데이터베이스와 상호작용하는 표준 언어

→ 데이터를 삽입, 조회, 수정, 삭제하는 작업에 사용


2) 명령어 종류

종류 설명 예시
DML 데이터 조작 INSERT, SELECT, UPDATE, DELETE
DDL 데이터 정의 CREATE, ALTER, DROP
DCL 권한 제어 GRANT, REVOKE
TCL 트랜잭션 제어 COMMIT, ROLLBACK

3) SELECT 문 기본 사용법

SELECT column1, column2 FROM table_name;

※ 상세한 사용법은 https://m.blog.naver.com/math717/223797267286에 정리해놨으니 참고


7 WHERE 절 & 조건 연산자

종류 설명
=, !=, <, > 기본 비교 연산자
BETWEEN 범위 지정
IN 특정 값들 중 포함 여부
LIKE 패턴 매칭
IS NULL NULL 여부 확인

8 집계 함수와 GROUP BY

1) 집계 함수

→ COUNT(), SUM(), AVG(), MAX(), MIN()

2) CROUP BY column

→ 특정 기준으로 집계


9 JOIN 종류

종류 설명
INNER JOIN 양쪽 모두 일치하는 데이터
LEFT JOIN 왼쪽 테이블을 기준으로 오른쪽은 일치하는 것
RIGHT JOIN 오른쪽 테이블을 기준으로 왼쪽은 일치하는 것
FULL JOIN 양쪽 모두 포함

10 LIMIT과 OFFSET

LIMIT 조회할 최대 행 수
OFFSET 몇 행 건너뛰고 시작할지 지정

11 동시성 제어

1) 격리 수준

→ READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE


2) 동시성 제어 방식

종류 설명
잠금 공유/배타적 잠금
타임스탬프 트랜잭션 순서 기반 충돌 해결
낙관적 제어 충돌 없다고 가정하고 나중에 검사

12 인덱스와 성능 최적화

1) 인덱스 종류

종류 설명
클러스터드 인덱스 실제 데이터가 정렬됨
논클러스터드 인덱스 별도로 저장
유니크 인덱스 중복 금지
복합 인덱스 여러 컬럼 조합

2) 쿼리 성능 향상 팁

→ EXPLAIN으로 실행 계획 확인

→ 자주 조회하는 컬럼에 인덱스 추가

→ 조인 시 인덱스 적극 활용


3) 테이블 설계 전략

→ 정규화로 무결성 유지

→ 필요한 경우 비정규화로 성능 향상

→ 캐싱 & 파티셔닝도 고려


13 백업과 보안

1) 백업 전략

종류 설명
전체 백업 모든 데이터를 백업
차등 백업 전체 이후 변경분만 백업
증분 백업 마지막 백업 이후 변경분만 백업
트랜잭션 로그 백업 세밀한 복구 가능

2) 보안 요소

종류 설명
접근 제어 사용자 인증과 권한 설정
암호화 저장 및 전송 시 데이터 보호
감사 로그 이상 접근 추적
sql 인젝션 방지 Prepared Statement 사용
백업 파일 보안 암호화 및 접근 제어
재해 복구 빠른 복원 계획 수립

더 상세한 정보를 알고 싶으면 https://m.blog.naver.com/math717/223797267286에 접속