Ch.10 오답 패턴 & 취약점 분석
필기 오답 Top 30 — 데이터베이스
WHERE와 HAVING의 차이를 헷갈리면 시험장에서 당합니다
DB 기본 개념부터 SQL 쿼리까지 30가지 함정을 코드 비교로 정리
이론은 알지만 비슷한 용어를 구분하지 못하는 것이 핵심 문제
데이터베이스 과목 오답률 상위 30개를 잘못된 쿼리 vs 올바른 쿼리로 비교합니다
핵심 내용
데이터베이스 과목에서 수험생이 가장 많이 틀리는 30가지 포인트를 5개 카테고리로 분류했습니다. SQL 오답은 잘못된 쿼리 vs 올바른 쿼리 비교로 확인합니다.
함정 #1 — 스키마 3계층: 외부 스키마=사용자 뷰, 개념 스키마=전체 논리 구조, 내부 스키마=물리 저장. '개념 스키마=물리 구조'라고 하면 오답!
데이터베이스의 전체 논리적 구조를 정의하는 스키마는?
함정 #2 — 데이터 독립성: 논리적 독립성=개념↔외부 간, 물리적 독립성=개념↔내부 간. 방향을 혼동하면 오답!
함정 #3 — 관계형 모델 용어: 릴레이션=테이블, 튜플=행(레코드), 속성=열(필드), 도메인=속성의 값 범위. '튜플=열'이라고 하면 오답!
함정 #4 — 차수 vs 카디널리티: 차수(Degree)=속성(열) 수, 카디널리티(Cardinality)=튜플(행) 수. '차수=행 수'라고 착각하면 오답!
릴레이션에서 튜플(행)의 수를 나타내는 용어는?
함정 #5 — ER 모델 기호: 사각형=엔티티, 마름모=관계, 타원=속성. '마름모가 속성'이라고 하면 오답!
함정 #6 — 뷰(View): 가상 테이블(실제 데이터 저장 안 함). '뷰에 데이터가 물리적으로 저장된다'라고 하면 오답!
함정 #7 — 기본키(PK) vs 후보키: 후보키 중 하나를 기본키로 선택. 기본키=유일+NOT NULL. '기본키는 NULL 가능'이라고 하면 오답!
함정 #8 — 외래키(FK): 다른 테이블의 기본키를 참조. 외래키는 NULL 가능(참조 무결성 위배 아님). '외래키도 NOT NULL'이라고 착각하면 오답!
외래키(Foreign Key)에 대한 설명으로 올바른 것은?
함정 #9 — 참조 무결성: 외래키 값은 참조 테이블의 기본키에 반드시 존재하거나 NULL. '존재하지 않는 값 참조'=무결성 위반!
함정 #10 — 개체 무결성 vs 참조 무결성: 개체=기본키 NOT NULL, 참조=외래키 값이 참조 테이블에 존재. 두 무결성의 대상이 다름!
함정 #11 — 슈퍼키 vs 후보키: 슈퍼키=유일성만 만족(불필요 속성 포함 가능), 후보키=유일성+최소성. '슈퍼키=최소성 보장'이라고 하면 오답!
함정 #12 — 1NF: 모든 속성값이 원자값(더 이상 쪼갤 수 없는 값). 다중값/반복그룹 제거. '1NF=중복 제거'라고 착각하면 오답!
함정 #13 — 2NF: 1NF + 부분 함수 종속 제거. 기본키 일부에만 종속되는 속성 분리. '2NF=이행 종속 제거'라고 하면 오답!(이행 종속=3NF)
2NF에서 3NF로 가기 위해 제거해야 하는 것은?
함정 #14 — BCNF: 모든 결정자가 후보키. 3NF보다 엄격. '3NF=BCNF'라고 착각하면 오답! BCNF가 3NF보다 강한 조건.
함정 #15 — 반정규화(역정규화): 성능 향상을 위해 의도적으로 중복 허용. '반정규화=데이터 오류'가 아님! 의도적 설계.
함정 #16 — WHERE vs HAVING: WHERE=그룹화 전 조건(개별 행), HAVING=그룹화 후 조건(집계 결과). WHERE에서 집계함수 사용 불가!
GROUP BY 후 집계 결과에 조건을 걸 때 사용하는 절은?
함정 #17 — DELETE vs DROP vs TRUNCATE: DELETE=행 삭제(WHERE 가능, 롤백 O), DROP=테이블 자체 삭제, TRUNCATE=전체 행 삭제(롤백 X).
함정 #18 — DISTINCT: SELECT DISTINCT=중복 행 제거. 'DISTINCT=정렬'이 아님! 중복만 제거, 정렬은 ORDER BY.
함정 #19 — LIKE 와일드카드: %=0자 이상, _=정확히 1자. 'LIKE 김%'=김으로 시작, 'LIKE _김%'=두번째 글자가 김.
이름이 '김'으로 시작하고 3글자인 사원을 검색하는 SQL은?
함정 #20 — JOIN 종류: INNER JOIN=교집합, LEFT JOIN=왼쪽 테이블 전체+교집합, CROSS JOIN=모든 조합(카티션 곱).
함정 #21 — IN vs BETWEEN: IN=(값1, 값2, 값3) 목록 중 일치, BETWEEN 값1 AND 값2 = 범위 (경계값 포함). 'BETWEEN은 경계 미포함'이라고 하면 오답!
함정 #22 — NULL 비교: WHERE col = NULL (X) → WHERE col IS NULL (O). NULL은 =로 비교 불가!
함정 #23 — SQL 실행 순서: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY. 'SELECT가 가장 먼저'라고 착각하면 오답!
함정 #24 — ALTER TABLE: ALTER TABLE=테이블 구조 변경(열 추가/삭제/수정). 'ALTER=데이터 수정'이 아님! 데이터 수정=UPDATE.
함정 #25 — GRANT vs REVOKE: GRANT=권한 부여, REVOKE=권한 회수. DCL(Data Control Language)에 해당.
함정 #26 — Access 객체: 테이블=데이터 저장, 쿼리=데이터 조회/조작, 폼=입력/편집 UI, 보고서=인쇄 출력. '폼=인쇄 출력'이라고 하면 오답!
Access에서 데이터를 인쇄 형태로 출력하는 데 사용하는 개체는?
함정 #27 — Access 쿼리 종류: 선택 쿼리=데이터 조회, 실행 쿼리=데이터 변경(추가/업데이트/삭제/테이블만들기). '선택 쿼리로 데이터 변경'은 불가!
함정 #28 — Access 기본키 자동 설정: 새 테이블 생성 시 ID 필드(일련번호)를 자동 기본키로 설정. '기본키 없이 테이블 생성 불가'는 아님!
함정 #29 — Access 관계 설정: 참조 무결성 적용 시 '관련 필드 계단식 업데이트/삭제' 옵션. '관계=자동 JOIN'이 아님! 관계 설정은 무결성 규칙.
함정 #30 — Access 매크로 vs VBA: 매크로=미리 정의된 동작 조합(간단), VBA=프로그래밍 코드(복잡). '매크로=VBA'라고 동일시하면 오답!
비교 정리
| 항목 | 카테고리 | 문항 수 | 핵심 함정 유형 |
|---|---|---|---|
| DB 개념 | 6 | 스키마·모델 혼동 | |
| 키/무결성 | 5 | 키 종류·무결성 규칙 착각 | |
| 정규화 | 5 | 정규형 단계 혼동 | |
| SQL | 10 | 구문 순서·조건절 착각 | |
| Access | 4 | 폼/보고서/쿼리 역할 혼동 |
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작