본문 바로가기

자격증 시험준비

[SQLD] AI로 만든 실전 모의문제 풀이 & 헷갈리는 개념 총정리_v2

반응형

안녕하세요! 어제 SQLD 57회 시험이 끝났습니다 😌

원래 시험 2일 전에 올리려던 심화 모의문제를 시험공부하느라 미처 올리지 못했는데, 늦었지만 지금이라도 정리해서 가져왔어요.

시험 범위의 개념들을 바탕으로 ChatGPT와 NotebookLM에게 다양한 난이도의 문제를 요청해서 풀어봤어요. 특히 '이런 함수 조합은 어떨까?', '이 상황에서 인덱스 성능은?' 같은 실무 연계형 문제들을 많이 만들어서 풀었습니다.

※ 본 포스팅의 문제들은 실제 출제된 기출문제가 아니라
AI를 활용해 예상문제 형태로 만들어 직접 풀어본 내용입니다.
실제 시험과는 난이도나 유형, 표현이 다를 수 있으니 내 실력 점검 및 개념 확인용으로 참고해 주세요.

1과목 데이터 모델링의 이해 (객관식+해설)

1. 3-Tier 스키마에서 DB가 물리적으로 저장되는 형식을 정의하는 계층은?

① 외부 스키마 ② 개념 스키마 ③ 내부 스키마 ④ 응용 스키마

정답: ③ 내부 스키마
해설:
3-Tier 스키마에서 내부 스키마는 물리적 저장 구조(파일 형식, 인덱스, 압축 기법 등)를 정의합니다. 개념 스키마(논리적 구조)와 외부 스키마(사용자 뷰)와 구분됩니다.

2. 아래 설명에 가장 적절한 엔터티 유형은?

· 업무 수행 결과 발생

· 시간 경과에 따라 양이 급증

① 기본 엔터티 ② 행위 엔터티 ③ 중심 엔터티 ④ 관계 엔터티

정답: ② 행위 엔터티
해설:
행위 엔터티는 업무 수행 과정에서 발생하는 이벤트(예: 주문, 결제)를 의미합니다. 시간 경과에 따라 데이터가 누적되는 특징이 있으며, 기본 엔터티(고객, 상품)와 구분됩니다.

3. 식별 관계(Identifying Relationship)에 대한 설명으로 옳은 것은?

① 자식 엔터티의 PK는 부모 PK를 포함하지 않는다.

② 관계선은 점선으로 표현한다.

③ 부모 엔터티 삭제 시 자식 레코드도 삭제된다.

④ 부모 PK가 자식의 FK로만 존재한다.

정답: ③ 부모 엔터티 삭제 시 자식 레코드도 삭제된다.
해설:
식별 관계는 부모 PK가 자식의 PK에 포함되며, 실선으로 표현됩니다. 부모 삭제 시 자식도 함께 삭제되는 CASCADE 삭제 규칙이 적용됩니다.

4. 인조 식별자(Surrogate Key)를 사용해야 하는 상황으로 가장 적절한 것은?

① 주민번호로 PK를 구성할 때

② 복합 PK가 지나치게 길어질 때

③ 업무 규칙상 의미 있는 값이 필요할 때

④ 자연키가 단순 정수형일 때

정답: ② 복합 PK가 지나치게 길어질 때
해설:
인조 식별자(예: 순차 번호)는 자연키(주민번호 등)가 복잡하거나 불안정할 때 사용됩니다. 성능 향상과 유지보수 용이성을 위해 복합 키 대체로 적합합니다.

5. 정규화 단계별 핵심 목표가 잘못 짝지어진 것은?

① 1NF – 도메인 원자성 확보

② 2NF – 부분 함수 종속 제거

③ 3NF – 이행 함수 종속 제거

④ BCNF – 데이터 중복 허용

정답: ④ BCNF – 데이터 중복 허용
해설:
BCNF(Boyce-Codd 정규형)는 후보키가 아닌 결정자 제거를 목표로 합니다. 데이터 중복 허용은 정규화 원칙에 위배되므로 오답입니다.

6. 다음 중 카디널리티(Cardinality) 표현이 옳지 않은 것은?

① (0,N) ② (1,1) ③ (1,N) ④ (N,N)

정답: ④ (N,N)
해설:
카디널리티는 (최소, 최대) 형식으로 표현하며, N 대신 M을 사용합니다. (1:M, 0:N 등은 가능하나 (N,N)은 표기법 오류입니다).

7. 업무 규칙과 가장 거리가 먼 것은?

① 값 범위 제약

② 코드 간 유효 조합

③ 반정규화 테이블 생성

④ 상태 전이 조건

정답: ③ 반정규화 테이블 생성
해설:
업무 규칙은 데이터 무결성 제약조건(값 범위, 코드 조합, 상태 전이)을 의미합니다. 반정규화는 성능 향상을 위한 설계 기법으로 업무 규칙과 무관합니다.

8. 트랜잭션의 특성 중 원자성 설명으로 올바른 것은?

① 실행 순서를 변경해도 결과가 동일하다.

② 완전히 실행되거나 전혀 실행되지 않는다.

③ 동시에 실행돼도 일관성이 보장된다.

④ 영속적으로 저장된다.

정답: ② 완전히 실행되거나 전혀 실행되지 않는다.
해설:
원자성(Atomicity)은 트랜잭션의 전체 실행 또는 전체 롤백을 보장합니다. 부분적 실행으로 인한 데이터 불일치를 방지합니다.

9. 도메인 설계 시 고려 사항이 아닌 것은?

① 데이터 유형 ② 값 허용 범위 ③ 기본 키 여부 ④ 단위

정답: ③ 기본 키 여부
해설:
도메인 설계 시 데이터 유형, 값 허용 범위, 단위를 정의합니다. 기본 키 여부는 엔터티 설계 단계에서 결정됩니다.

10. NULL에 대한 설명으로 옳은 것은?

① ‘0’과 동일하다. ② 비교 연산이 가능하다. ③ IS NULL로만 검사한다. ④ AVG 집계 시 포함된다.

정답: ③ IS NULL로만 검사한다.
해설:
NULL은 값의 부재를 의미하며, =나 <>로 비교 불가능합니다. IS NULL 또는 IS NOT NULL로만 체크할 수 있으며, 집계 함수에서는 NULL을 무료합니다.

 

 


2과목 SQL 기본 및 활용 (객관식+해설)

 

1. 서로 다른 DBMS 간 표준 호환성이 가장 높은 JOIN 구문은?

A.empno = B.empno(+)

USING JOIN

NATURAL JOIN

INNER JOIN ... ON

정답: ④
해설:
INNER JOIN ... ON은 ANSI 표준 SQL 구문으로, 대부분의 DBMS에서 호환성이 가장 높습니다. 나머지는 특정 DBMS(특히 Oracle)에 종속적입니다.

2. Oracle에서 별칭에 AS를 사용할 수 없는 대상은?

① 테이블

② 컬럼

③ 서브쿼리

④ 뷰

정답: ①
해설:
Oracle에서는 컬럼, 서브쿼리, 뷰에는 AS를 사용할 수 있으나, 테이블에는 AS를 사용할 수 없습니다. 테이블 별칭은 FROM 테이블명 별칭 형태로만 지정합니다.

3. GROUP BY 없이 집계 함수 사용 시 올바른 문장은?

① SELECT deptno, COUNT(*) FROM emp;

② SELECT COUNT(*), SUM(sal) FROM emp;

③ SELECT deptno, AVG(sal) FROM emp;

④ SELECT ename, MAX(sal) FROM emp;

정답: ②
해설:
GROUP BY 없이 집계 함수만 사용하면 전체 테이블을 대상으로 한 결과 한 행만 나옵니다. 일반 컬럼과 집계 함수를 같이 쓰면 오류입니다.

4. ROLLUP(deptno, job) 결과에 포함되지 않는 그룹은?

① (deptno, job)

② (deptno, NULL)

③ (NULL, NULL)

④ (job, NULL)

정답: ④
해설:
ROLLUP(deptno, job)은 (deptno, job), (deptno, NULL), (NULL, NULL) 그룹을 만듭니다. (job, NULL)은 생성되지 않습니다.

5. SELECT NVL(comm,0) FROM emp; 함수 동작으로 맞는 것은?

① NULL이면 0 반환

② NULL이면 '' 반환

③ NULL이면 0 출력, 아닌 값은 NULL

④ NULL 판단 없이 항상 0

정답: ①
해설:
NVL 함수는 comm이 NULL이면 0을 반환, NULL이 아니면 comm 값을 그대로 반환합니다.

6. 윈도 함수로 누적 합계를 계산하려면?

① SUM(sal) OVER()

② SUM(sal)

③ SUM(sal) GROUP BY deptno

④ SUM(sal) OVER(PARTITION BY deptno ORDER BY sal ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

정답: ④
해설:
누적합(누적 집계)은 윈도 함수의 OVER 절에서 ORDER BY와 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW를 함께 써야 합니다.

7. DELETE FROM emp; 수행 후 ROLLBACK 가능 여부는?

① 가능, UNDO 존재

② 불가능, 자동 커밋

③ 테이블 정의도 삭제

④ 인덱스까지 모두 삭제

정답: ①
해설:
DELETE는 DML이므로 커밋 전까지 ROLLBACK이 가능하며, UNDO 영역에 변경 전 데이터가 저장됩니다.

8. CTAS 문장 설명으로 옳지 않은 것은?

① 기존 테이블 제약 조건을 그대로 복사한다.

② SELECT 결과로 테이블을 생성한다.

③ 데이터와 정의가 함께 생성된다.

④ 서브쿼리 사용 가능하다.

정답: ①
해설:
CTAS(CREATE TABLE AS SELECT)는 데이터와 구조만 복사하며, PK, FK 등 제약 조건은 복사하지 않습니다.

9. SELECT * FROM emp WHERE ROWNUM <= 5 ORDER BY sal DESC; 의 문제점은?

① 구문 오류

② 결과가 의도대로 정렬되지 않을 수 있다.

③ ROWNUM 사용 시 ORDER BY 불필요

④ TOP-N 쿼리로 최적

정답: ②
해설:
ROWNUM은 WHERE 절에서 먼저 적용되고, 그 후 ORDER BY가 적용되므로, 정렬 후 상위 N건을 뽑으려면 서브쿼리 등을 사용해야 합니다.

10. UNION과 UNION ALL의 차이로 옳은 것은?

① UNION ALL은 정렬을 수행한다.

② UNION은 중복을 제거한다.

③ UNION ALL은 서로 다른 컬럼 수 가능

④ UNION은 NULL을 제거한다.

정답: ②
해설:
UNION은 중복 행을 제거, UNION ALL은 중복을 허용합니다.

11. WITH 절(서브쿼리 팩터링)의 장점이 아닌 것은?

① 가독성 향상

② 반복 실행 최소화

③ 인덱스 자동 생성

④ 재귀 쿼리 지원

정답: ③
해설:
WITH는 인덱스 자동 생성과는 관련이 없습니다.

12. HAVING 절이 필요 없는 경우는?

① 집계 결과 필터링

② 그룹핑 전 행 필터링

③ ROLLUP 결과 필터링

④ GROUPING 함수 사용

정답: ②
해설:
HAVING은 그룹핑 후 결과를 필터링할 때 사용하며, 그룹핑 전 필터링은 WHERE 절을 사용합니다.

13. SELECT AVG(NVL(comm,0)) FROM emp; 결과 해석으로 맞는 것은?

① NULL 포함 평균

② NULL 제외 평균

③ 0을 NULL로 변환

④ ROWID 기준

정답: ①
해설:
NVL로 NULL을 0으로 바꿔 평균을 내므로, NULL도 0으로 포함되어 평균이 계산됩니다.

14. 서브쿼리 중 상관 서브쿼리 특징은?

① 메인 쿼리 1회 실행 후 서브쿼리 1회

② 서브쿼리가 메인 컬럼을 참조

③ 결과 집합 합칠 때 사용

④ FROM 절에서만 사용

정답: ②
해설:
상관 서브쿼리는 메인 쿼리의 값을 서브쿼리에서 참조하여, 메인 쿼리의 각 행마다 서브쿼리가 실행됩니다.

15. DELETE vs TRUNCATE 비교로 옳은 것은?

① TRUNCATE는 WHERE 절 사용 가능

② DELETE는 로그가 생성되지 않는다.

③ TRUNCATE 후 ROLLBACK 불가능

④ DELETE는 AUTO-COMMIT이다.

정답: ③
해설:
TRUNCATE는 DDL로 ROLLBACK이 불가능합니다. DELETE는 DML로 ROLLBACK이 가능합니다.

16. CREATE INDEX idx1 ON emp(deptno, job); 다중 컬럼 인덱스 사용이 잘못된 경우는?

① WHERE job='CLERK' AND deptno=10

② WHERE deptno=10

③ WHERE job='CLERK'

④ WHERE deptno=10 AND job='CLERK'

정답: ③
해설:
복합 인덱스에서 선행 컬럼(deptno) 없이 후행 컬럼(job)만 조건으로 쓰면 인덱스가 효율적으로 사용되지 않습니다.

17. Oracle에서 시퀀스 NEXTVAL 호출 위치로 적절하지 않은 것은?

① SELECT 절

② VALUES 절

③ WHERE 절 비교값

④ DEFAULT 값

정답: ③
해설:
시퀀스 NEXTVAL은 SELECT, VALUES, DEFAULT에서는 사용 가능하지만, WHERE 조건값에는 사용할 수 없습니다.

18. 아래 중 무결성 제약이 아닌 것은?

① PRIMARY KEY

② FOREIGN KEY

③ CHECK

④ SYNONYM

정답: ④
해설:
SYNONYM(동의어)은 객체 별칭이며, 무결성 제약이 아닙니다.

19. REGEXP_LIKE(col, '^[A-Z]{3}[0-9]{2}$') 의미에 부합하는 값은?

① AB123

② ABC12

③ abc12

④ ABC1234

정답: ②
해설:
대문자 3글자 + 숫자 2글자에만 부합합니다.

20. TRANSACTION ISOLATION 수준 중 Dirty Read를 허용하는 단계는?

① SERIALIZABLE

② REPEATABLE READ

③ READ COMMITTED

④ READ UNCOMMITTED

정답: ④
해설:
READ UNCOMMITTED는 Dirty Read(커밋 전 데이터 읽기)를 허용합니다.

21. MERGE INTO emp e USING new_emp n ON (e.empno=n.empno) 구문 특징은?

① INSERT 전용

② UPDATE 전용

③ INSERT·UPDATE 동시 처리

④ DELETE 동시 처리

정답: ③
해설:
MERGE는 조건에 따라 INSERT 또는 UPDATE를 한 번에 처리할 수 있습니다.

22. VIEW의 장점이 아닌 것은?

① 보안

② 논리적 독립성

③ 물리적 성능 향상

④ 쿼리 단순화

정답: ③
해설:
뷰는 보안, 논리적 독립성, 쿼리 단순화에 도움을 주지만, 물리적 성능 향상에는 직접적 효과가 없습니다.

23. ALTER TABLE emp ADD CONSTRAINT ck_sal CHECK(sal BETWEEN 0 AND 9999); 설명으로 옳지 않은 것?

① sal 범위 제약

② 행마다 자동 검증

③ 이미 존재하는 잘못된 데이터 무시

④ 제약 이름은 ck_sal

정답: ③
해설:
이미 존재하는 데이터가 제약 조건을 위반하면 제약 추가가 실패합니다.

24. SELECT COALESCE(comm, bonus, 0) FROM emp; 결과 동작은?

① NULL이 있으면 0 반환

② 첫 번째 NULL 아님 값을 반환

③ 모두 NULL이어도 NULL 반환

④ 세 개 모두 반환

정답: ②
해설:
COALESCE는 인자 중 첫 번째로 NULL이 아닌 값을 반환합니다.

25. Oracle 문자 함수 중 양쪽 공백 제거 함수는?

① TRIM

② LTRIM

③ RTRIM

④ REPLACE

정답: ①
해설:
TRIM은 양쪽 공백을 모두 제거합니다.

26. GRANT SELECT ON emp TO scott; 명령 유형은?

① DCL

② DDL

③ TCL

④ DML

정답: ①
해설:
GRANT는 권한 부여 명령으로 DCL(Data Control Language)입니다.

 

27. SAVEPOINT sp1; 후 ROLLBACK TO sp1; 설명이 맞는 것은?

① 전체 트랜잭션 취소

② sp1 이후만 취소

③ sp1 이전만 취소

④ 롤백 불가

정답: ②
해설:
ROLLBACK TO는 지정한 SAVEPOINT 이후의 트랜잭션만 취소합니다.

28. SELECT * FROM dual WHERE 1=1 AND 1=2 OR 1=1; 결과 행 개수는?

① 0

② 1

③ 2

④ 오류

정답: ②
해설:
WHERE 조건이 항상 참이므로 dual 테이블의 한 행이 반환됩니다.

29. SET OPERATORS 중 정렬을 가장 많이 수행하는 것은?

① UNION

② INTERSECT

③ MINUS

④ UNION ALL

정답: ①
해설:
UNION은 중복 제거를 위해 정렬을 반드시 수행합니다.

30. ALTER TABLE emp DROP COLUMN comm; 실행 시 영향이 아닌 것은?

① comm 데이터 삭제

② 인덱스 자동 삭제

③ 테이블 전체 재구성

④ 뷰/프로시저 의존성 오류 가능

정답: ②
해설:
컬럼 삭제 시 인덱스가 자동으로 삭제되는 것은 아닙니다
(컬럼이 인덱스에 포함된 경우에만 관련 인덱스가 무효화/삭제될 수 있음).

 

31. PL/SQL 블록 기본 구조에서 중첩이 불가능한 절은?

① DECLARE

② BEGIN

③ EXCEPTION

④ END

정답: ④
해설:
END는 블록의 종료로, 중첩이 불가능합니다. BEGIN, EXCEPTION, DECLARE는 중첩 가능.

32. SELECT TRUNC(SYSDATE,'MM') FROM dual; 결과는?

① 이번 달 1일 00:00:00

② 이번 달 마지막 날

③ 오늘 00:00:00

④ 현재 날짜시간

정답: ①
해설:
TRUNC(SYSDATE, 'MM')은 이번 달 1일 00:00:00을 반환합니다.

33. SELECT job, COUNT(*) FROM emp GROUP BY job HAVING COUNT(*) > 5;에서 HAVING의 역할은?

① 그룹 전 필터

② 그룹 후 필터

③ 정렬

④ 조인

정답: ②
해설:
HAVING은 그룹핑 후 결과를 필터링합니다.

34. CREATE TABLE t AS SELECT * FROM emp WHERE 1=2; 동작은?

① 데이터 포함

② 제약 조건 포함

③ 구조만 복사

④ 인덱스까지 복사

정답: ③
해설:
WHERE 1=2는 항상 거짓이므로 데이터 없이 테이블 구조만 복사됩니다.

35. SELECT sal, NTILE(4) OVER(ORDER BY sal DESC) q FROM emp; NTILE 함수 의미는?

① 누적 합계

② 이동 평균

③ 동일 순위

④ 사분위 구간

정답: ④
해설:
NTILE(4)는 결과를 4개의 동일한 구간(사분위)으로 나눕니다.

 

36. EXPLAIN PLAN으로 확인할 수 없는 정보는?

① 인덱스 사용 여부

② 예상 실행 비용

③ 실제 실행 시간

④ 접근 경로

정답: ③
해설:
EXPLAIN PLAN은 실제 실행 시간은 알 수 없습니다.

37. ANSI SQL에서 불리언 비교 TRUE/FALSE/UNKNOWN을 유발하는 값은?

① 0

② ''

③ NULL

④ ‘N’

정답: ③
해설:
NULL은 비교 연산 시 UNKNOWN을 반환합니다.

 

38. SELECT * FROM emp e WHERE EXISTS (SELECT 1 FROM dept d WHERE d.deptno=e.deptno); EXISTS 의미는?

① 서브쿼리 결과 집합 반환

② TRUE/FALSE만 반환

③ 행 수 반환

④ 상관 관계 없음

정답: ②
해설:
EXISTS는 서브쿼리 결과가 존재하면 TRUE, 아니면 FALSE를 반환합니다.

 

39. DROP TABLE emp PURGE; 의 효과는?

① 휴지통 이동

② 플래시백 가능

③ 즉시 물리 삭제

④ 인덱스 보존

정답: ③
해설:
PURGE 옵션을 사용하면 휴지통을 거치지 않고 바로 물리적으로 삭제됩니다.

 

40. CREATE SYNONYM emp_syn FOR scott.emp; 목적은?

① 성능 향상

② 저장 공간 절약

③ 객체명 단순화

④ 무결성 강화

정답: ③
해설:
동의어(SYNONYM)는 객체명을 단순하게 만들어줍니다.
 

실제 57회 시험을 보고 나니, 제가 준비한 키워드별 개념들은 대부분 나와서 방향성은 맞았던 것 같아요!

다만 손코딩 문제를 좀 더 많이 풀어봤으면 더 좋았을 것 같다는 아쉬움이 남네요 😅

SQLD 끝, 그 다음은? SQL 기초를 다졌으니 이제 데이터를 '어떻게 보여줄 것인가'에 대한 고민이 시작됐어요. 마침 경영정보시각화 실기 시험도 준비해야 하고요!

데이터 추출부터 시각화까지, 이어지는 여정을 함께 기록해보려고 합니다. 다음 글에서는 경영정보시각화 실기 준비 과정을 공유할 예정이니 기대해 주세요.

모두 고생 많으셨습니다!

반응형