✅ 1. SQL 기본 개념

구분 설명

SQL Structured Query Language. 관계형 DB 조작/정의 언어
DML SELECT, INSERT, UPDATE, DELETE
DDL CREATE, ALTER, DROP
DCL GRANT, REVOKE
TCL COMMIT, ROLLBACK, SAVEPOINT

✅ 2. SELECT 기본 문법

sql
복사편집
SELECT [DISTINCT] 컬럼명
FROM 테이블명
WHERE 조건
GROUP BY 그룹컬럼
HAVING 그룹조건
ORDER BY 정렬컬럼 [ASC|DESC]

  • DISTINCT: 중복 제거
  • WHERE vs HAVING:
    • WHERE는 행 필터링,
    • HAVING은 집계 결과 필터링

✅ 3. 함수

📍단일행 함수

함수 설명

숫자함수 ROUND, TRUNC, MOD
문자함수 LENGTH, SUBSTR, CONCAT, UPPER/LOWER
날짜함수 SYSDATE, ADD_MONTHS, MONTHS_BETWEEN, LAST_DAY
변환함수 TO_CHAR, TO_DATE, CAST, CONVERT

📍그룹 함수

함수 설명

SUM, AVG, MIN, MAX, COUNT 집계 함수 (NULL 제외)
COUNT(*) NULL 포함 전체 행 수

✅ 4. JOIN

유형 설명

INNER JOIN 조건 일치하는 행만
OUTER JOIN LEFT, RIGHT, FULL (비교 테이블 없으면 NULL 채움)
SELF JOIN 자기 자신과 JOIN
NATURAL JOIN 같은 이름의 컬럼 자동 JOIN
USING 특정 컬럼 기준으로 JOIN
ON 조건 명시적 지정
sql
복사편집
SELECT *
FROM A
JOIN B ON A.id = B.id;


✅ 5. 서브쿼리

유형 설명

단일행 서브쿼리 =, >, < 등 단일 값 비교
다중행 서브쿼리 IN, ANY, ALL 사용
상관 서브쿼리 메인쿼리의 컬럼을 내부 쿼리에서 참조
인라인 뷰 FROM 절에 사용하는 서브쿼리
WITH절 공통 테이블 표현식 (CTE), 가독성 향상

✅ 6. 집합 연산자

연산자 설명

UNION 중복 제거 합집합
UNION ALL 중복 포함 합집합
INTERSECT 교집합
MINUS / EXCEPT 차집합 (A에 있고 B엔 없는 값)

✅ 7. 데이터 변경

구문 설명

INSERT INTO 테이블 VALUES (값) 행 추가
UPDATE 테이블 SET 컬럼 = 값 WHERE 조건 값 수정
DELETE FROM 테이블 WHERE 조건 행 삭제
MERGE 조건에 따라 INSERT 또는 UPDATE 수행

✅ 8. 트랜잭션 제어 (TCL)

명령어 설명

COMMIT 변경 사항 저장
ROLLBACK 변경 사항 취소
SAVEPOINT 중간 저장점 설정
SET AUTOCOMMIT 자동 커밋 설정 여부 제어 (DBMS마다 다름)

✅ 9. 인덱스 & 뷰

개념 설명

인덱스 검색 성능 향상, 자동/수동 생성 가능
뷰(View) 가상 테이블, 실질 데이터 없음
인라인 뷰 서브쿼리를 FROM절에서 사용
Materialized View (물리적 뷰) 데이터를 저장, 성능↑, 자동 갱신 가능

✅ 10. 최신 출제 경향 정리 (2024~2025 기준)

테마 출제 포인트

JOIN INNER/OUTER JOIN 개념 및 결과 예측 문제
함수 날짜 + 문자 + 변환 함수 조합 문제
서브쿼리 상관 서브쿼리 vs 일반 서브쿼리 비교
DML UPDATE/DELETE with 조건
집합 연산 결과 값 추론 및 중복 포함 여부
GROUP BY 그룹화 컬럼 개수 및 HAVING 조건 해석
DCL/TCL GRANT/COMMIT 개념 이해
WITH절 가독성 및 재사용 목적 파악

✅ 정규화 (Normalization)란?

데이터베이스 설계 시 데이터 중복을 최소화하고 **이상 현상(Anomaly)**을 방지하기 위해 릴레이션을 구조적으로 분해하는 과정을 말합니다.

🎯 정규화의 목적

  • 데이터 중복 최소화
  • 삽입/삭제/갱신 이상 방지
  • 데이터 무결성 유지
  • 구조적이고 논리적인 테이블 구성

✅ 이상 현상 (Anomaly)의 종류

구분 설명

삽입 이상 일부 속성만 알 때는 데이터를 삽입할 수 없음
삭제 이상 한 데이터를 삭제하면 다른 정보까지 함께 사라짐
갱신 이상 중복된 데이터의 일부만 수정될 경우 데이터 불일치 발생

✅ 정규형 (Normal Forms)

정규형 조건 해결하는 문제

제1정규형 (1NF) 모든 속성의 값이 원자값(Atomic) 반복되는 그룹 제거
제2정규형 (2NF) 1NF 만족 + 부분 함수 종속 제거 복합키에서 일부 속성만 종속된 경우 분해
제3정규형 (3NF) 2NF 만족 + 이행 함수 종속 제거 기본키가 아닌 속성에 의해 결정되는 속성 제거
BCNF (보이스-코드 정규형) 결정자가 후보키인 경우만 허용 3NF보다 더 엄격한 형태
제4정규형 (4NF) 다치 종속(Multi-valued dependency) 제거 하나의 키에 여러 속성이 독립적으로 종속된 경우 분해

🔑 주요 용어 정리

  • 함수 종속 (Functional Dependency)
  • : X → Y는 X의 값이 주어지면 Y의 값이 유일하게 결정된다는 뜻
  • 부분 함수 종속
  • : 복합키의 일부에만 종속되는 경우
  • 이행 함수 종속
  • : A → B, B → C가 있을 때 A → C가 되는 경우 (A → B → C)
  • 다치 종속
  • : 하나의 키에 여러 속성이 독립적으로 종속될 때 발생

💡 정규화 예시 (간단한 흐름)

비정규형

학번 이름 수강과목1 수강과목2

→ 반복 속성 있음 → 1NF로 변환

1NF (원자값만)

학번 이름 수강과목

→ 과목이 키 일부(학번)에만 종속 → 2NF로 변환

→ 이름이 학번에 종속되며, 수강과목과는 무관 → 3NF로 변환


✅ 요약 표

정규형 기준 제거 대상

1NF 원자값 반복 속성
2NF 부분 함수 종속 제거 일부 키 종속
3NF 이행 함수 종속 제거 비키 속성에 의한 결정
BCNF 결정자 → 후보키 모든 결정자 후보키화
4NF 다치 종속 제거 독립적 다치 종속

+ Recent posts