← 목록으로

[정처기 실기] 1. DB (데이터베이스)

정보처리기사 실기 — 1. DB (데이터베이스)

출제 확률: ★(낮음) ~ ★★★★★(매우 높음)


0. DB 과목 한눈에

항목내용
예상 문제 수3~4문제
★★★★★SQL 명령어, 조인
★★★★트랜잭션, 요개논물, 키
★★★정규화, 스토리지
★★관계대수/해석, 관계데이터모델, 무결성, 파일구조

1. SQL 명령어 ★★★★★

1.1 DML / DDL / DCL — 상황별 쿼리

-- 데이터 추가
INSERT INTO 테이블(컬럼1, 컬럼2...) VALUES (값1, 값2...);

-- 데이터 복제
INSERT INTO 테이블1(컬럼1...) SELECT 컬럼3, 컬럼4... FROM 테이블2;

-- 데이터 삭제
DELETE FROM 테이블 WHERE 조건;

-- 데이터 수정
UPDATE 테이블 SET 컬럼1=값1, 컬럼2=값2 WHERE 조건;

-- 테이블 제거 (RESTRICT: 참조 시 삭제 불가 / CASCADE: 참조 테이블까지 삭제)
DROP TABLE 테이블 RESTRICT;
DROP TABLE 테이블 CASCADE;

-- 권한 부여 / 회수
GRANT 권한 ON 테이블 TO 사용자;   -- SELECT, INSERT 등
REVOKE 권한 ON 테이블 FROM 사용자;

-- 뷰 생성 / 제거
CREATE VIEW 뷰이름 AS SELECT ... FROM 테이블 WHERE 조건;
DROP VIEW 뷰이름 RESTRICT;
DROP VIEW 뷰이름 CASCADE;

-- 컬럼 추가 / 제거
ALTER TABLE 테이블 ADD 컬럼이름 데이터타입;
ALTER TABLE 테이블 DROP COLUMN 컬럼이름;

-- 인덱스 생성
CREATE INDEX 인덱스이름 ON 테이블(컬럼1, 컬럼2...);

1.2 SELECT — 정렬·조건·집계

-- 컬럼 기준 정렬 (ASC 오름차순 생략 가능 / DESC 내림차순)
SELECT 컬럼1, 컬럼2 FROM 테이블 ORDER BY 컬럼1 ASC;
SELECT 컬럼1, 컬럼2 FROM 테이블 ORDER BY 컬럼1 DESC, 컬럼2 DESC;

-- 범위 조회
SELECT ... FROM 테이블 WHERE 컬럼1 BETWEEN 1 AND 3;
SELECT ... FROM 테이블 WHERE 컬럼1 IN (1, 2, 3);

-- LIKE 패턴
SELECT ... FROM 테이블 WHERE 컬럼1 LIKE '특정문자%';   -- 특정 문자로 시작
SELECT ... FROM 테이블 WHERE 컬럼1 LIKE '%특정문자%';  -- 특정 문자 포함
SELECT ... FROM 테이블 WHERE 컬럼1 LIKE '_특정문자';   -- 앞에 한 글자만

-- NULL / 별칭
SELECT ... FROM 테이블 WHERE 컬럼1 IS NULL;
SELECT 컬럼1 AS 별칭1, 컬럼2 별칭2 FROM 테이블;      -- AS 생략 가능

-- 집계 + 조건 (HAVING은 GROUP BY 이후 그룹 조건)
SELECT 컬럼2, SUM(컬럼1) AS 합계
FROM 테이블 WHERE 조건
GROUP BY 컬럼2 HAVING SUM(컬럼1) 조건;

-- 개수 세기
SELECT COUNT(컬럼명) FROM 테이블 WHERE 조건;  -- NULL 아닌 행
SELECT COUNT(*) FROM 테이블 WHERE 조건;        -- 모든 행

1.3 집계 함수

함수역할
COUNT(*, 컬럼명)* = 모든 행 / 컬럼명 = NULL 아닌 행
SUM(컬럼명)합계
AVG(컬럼명)평균
MAX(컬럼명)최대값
MIN(컬럼명)최소값

1.4 서브쿼리

연산자의미
IN서브쿼리 값 중 하나라도 일치하면 반환
> ALL서브쿼리 모든 값보다 커야 반환
> ANY (= SOME)서브쿼리 값 하나라도보다 크면 반환
EXISTS서브쿼리 결과가 존재하면 반환

중첩 서브쿼리 풀이 순서: 가장 안쪽 → 바깥쪽 → 메인 쿼리

1.5 집합 연산자

연산자설명
UNION중복 제거 합집합
UNION ALL중복 포함 합집합
INTERSECT교집합
EXCEPT차집합 (Oracle: MINUS)
SELECT 컬럼명 FROM 테이블1 UNION SELECT 컬럼명 FROM 테이블2;
SELECT 컬럼명 FROM 테이블1 UNION ALL SELECT 컬럼명 FROM 테이블2;
SELECT 컬럼명1 FROM 테이블1 INTERSECT SELECT 컬럼명 FROM 테이블2;
SELECT 컬럼명1 FROM 테이블1 EXCEPT SELECT 컬럼명 FROM 테이블2;

1.6 쿼리 해석 — 자주 나오는 패턴

-- AND가 OR보다 우선 → (조건1 AND 조건2) OR 조건3
SELECT COUNT(*) FROM 테이블 WHERE 조건1 AND 조건2 OR 조건3;

-- 중복 제외한 고유 값 개수
SELECT COUNT(DISTINCT 컬럼1) FROM 테이블;

2. 조인(JOIN) ★★★★★

종류키워드설명
세타 조인(INNER) JOIN + 비등호조건 만족 튜플만 반환
동등 조인(INNER) JOIN + =세타 조인 중 등호 일치
자연 조인NATURAL JOIN동등 조인 + 중복 속성 제거
외부 조인LEFT/RIGHT/FULL OUTER JOIN불일치 튜플도 반환, NULL 채움
교차 조인CROSS JOIN모든 튜플 조합 (카티션)
-- 세타 조인
SELECT T1.컬럼1, T2.컬럼2 FROM 테이블1
INNER JOIN 테이블2 ON T1.컬럼1 > T2.컬럼1;

-- 동등 조인 (INNER 생략 가능)
SELECT T1.컬럼1, T2.컬럼2 FROM 테이블1
INNER JOIN 테이블2 ON T1.컬럼1 = T2.컬럼1;

-- 자연 조인
SELECT 컬럼1, 컬럼2 FROM 테이블1 NATURAL JOIN 테이블2;

-- 외부 조인
SELECT T1.컬럼1, T2.컬럼2 FROM 테이블1
LEFT OUTER JOIN 테이블2 ON T1.컬럼1 = T2.컬럼1;

-- 교차 조인 (= FROM 테이블1, 테이블2)
SELECT T1.컬럼1, T2.컬럼2 FROM 테이블1 CROSS JOIN 테이블2;

3. 트랜잭션 ★★★★

3.1 ACID

특성키워드
원자성 (Atomicity)All or Nothing
일관성 (Consistency)실행 후에도 DB 일관성 보장
고립성 (Isolation)다른 트랜잭션 끼어들 수 없음
지속성 (Durability)성공 완료 결과 영구 저장

3.2 동시성 제어 — Locking

용도
S-Lock (공유 락)읽기 — 동시 읽기 가능, 쓰기 불가
X-Lock (배타 락)쓰기 — 읽기/쓰기 모두 불가

3.3 회복 기법

구분항목키워드
핵심Redo (재실행)Start/Commit 기록 필요
핵심Undo (취소)Start 있지만 Commit 없는 경우
기법지연 갱신Redo만 사용
기법즉각 갱신Redo + Undo 모두 필요
기법체크포인트 회복특정 시점 DB 상태 저장 후 복구
기법그림자 페이징실패 시 그림자 페이지로 대체

3.4 스키마 3단계

스키마키워드
외부 스키마사용자 뷰, 서브스키마
개념 스키마개체 간 관계·제약 조건 정의
내부 스키마물리 저장, 레코드 형식 정의

4. 관계대수 / 관계해석 ★★

구분관계대수관계해석
성격절차적 언어비절차적 언어 (Codd)
관점어떻게(HOW)무엇을(WHAT)

4.1 일반 집합 연산자

연산자기호설명
합집합중복 제외, 두 릴레이션 튜플 모두 반환
교집합공통 튜플 반환
차집합왼쪽에만 있는 튜플
카티션 프로덕트×모든 순서쌍 조합

4.2 순수 관계 연산자

연산자기호설명
셀렉트σ조건 만족 튜플 반환 (수평)
프로젝트π조건 만족 열 반환 (수직)
조인공통 속성 기준 결합
디비전÷B의 모든 튜플에 관계 맺는 A의 튜플 반환

주어진 릴레이션에 대해 연산자 수행 결과를 직접 쓸 수 있어야 함 (예: R ÷ S)


5. 관계 데이터 모델 ★★

구성요소키워드
Attribute (속성)릴레이션의 각 열, 데이터 필드
Tuple (튜플)릴레이션의 각 행, 중복값 포함 가능
Cardinality튜플의 수, 고유 값 총 개수
Degree (차수)릴레이션 속성 수
Domain (도메인)속성이 가질 수 있는 값의 집합
Relation Instance특정 시점의 실제 데이터 집합
Relation (릴레이션)행·열 2차원 테이블
Relation SchemaDB 구조/제약 조건 명세
Identifier (식별자)튜플 고유 식별 속성 (후보키 등)

6. 요개논물 (DB 설계) ★★★★

6.1 데이터 모델 3가지 구성요소

구성 요소핵심 개념설명
구조논리 데이터모델 표현타입, 관계 정의
연산데이터 처리 작업 명세조작, 검색 방법
제약조건무결성 유지 방법논리적 제약사항

6.2 DB 설계 4단계

단계핵심 활동주요 산출물
요구조건 분석사용자 요구사항 수집·분석요구조건 명세서
개념적 설계현실 세계 추상적 표현ER 다이어그램
논리적 설계DBMS 맞춤 설계, 정규화논리적 스키마
물리적 설계특정 DBMS 고려테이블 정의서

전체 프로세스: 요구조건 분석 → 개념적 → 논리적 → 물리적 → 구현


7. 정규화 ★★★

7.1 정규형

정규형조건
제1정규형모든 속성 값 = 원자값
제2정규형부분 함수 종속 제거
제3정규형이행 함수 종속 제거
BCNF모든 결정자가 후보키
제4정규형다치 종속 제거
제5정규형조인 종속 제거

7.2 함수 종속

종류설명
완전 함수 종속기본키 전체에 대해서만 종속
부분 함수 종속기본키 일부 속성에 종속
이행 함수 종속A→B, B→C, A→C 성립
  • A→B: 속성 A의 값이 속성 B의 값을 결정
  • 반정규화: 정규화된 구조를 의도적으로 통합·중복 허용 → 성능 최적화

8. 키(Key) ★★★★

기대(후)슈: 기본키 + 대체키 = 후보키 ⊂ 슈퍼키

키 종류키워드
기본키후보키 중 선택, NOT NULL
대체키후보키 중 선택되지 못한 나머지
후보키유일성 O, 최소성 O
슈퍼키유일성 O, 최소성 X
외래키다른 릴레이션 기본키 참조

9. 무결성 ★★

무결성SQL 구현키워드
개체PRIMARY KEYNOT NULL + 유일
참조FOREIGN KEY참조 테이블 기본키값 or NULL
속성(도메인)DOMAIN, CHECK, DEFAULT정의된 도메인 준수
사용자TRIGGER비즈니스 규칙 직접 정의
UNIQUE적어도 하나의 키 존재

10. 스토리지 (RAID) ★★★

RAID핵심키워드
RAID 0분산 저장스트라이핑, 패리티·복제 없음
RAID 1복제 저장미러링, 높은 안정성
RAID 5스트라이핑 + 분산 패리티최소 3개 디스크
RAID 6이중 분산 패리티최소 4개 디스크
RAID 10미러링 + 스트라이핑RAID 1 + 0, 최소 4개 디스크

11. 파일구조 ★★

접근 방법키워드
순차저장 순서대로 접근, 공간 효율적
인덱스키값 + 주소 포인터, 검색 빠름
해싱해시 함수, 매우 빠른 접근

12. 시험 포인트 체크리스트

  • DROP TABLE/VIEW — RESTRICT vs CASCADE 차이
  • WHERE vs HAVING — 행 필터 vs 그룹 필터
  • COUNT(*) vs COUNT(컬럼) — NULL 처리 차이
  • AND vs OR 우선순위 — AND가 OR보다 먼저
  • 서브쿼리 — IN / ALL / ANY / EXISTS 의미 구분
  • 조인 — 세타·동등·자연·외부·교차 조인 결과 차이
  • ACID 4특성 + S-Lock / X-Lock
  • Redo vs Undo — 지연 갱신 vs 즉각 갱신
  • 관계대수 — σ, π, ÷ 연산 결과 직접 작성
  • 정규화 — 1NF → 2NF → 3NF → BCNF
  • 키 계층 — 슈퍼키 ⊃ 후보키 = 기본키 + 대체키
  • RAID — 0, 1, 5(3디스크), 6(4디스크), 10