2026 SQLD 필기 모의고사 1회 | 50문항 — 정답·해설

데이터위자드 ·

2026 SQLD 필기 모의고사 1회 | 50문항 — 정답·해설

필기 · 객관식 모의고사

필기 모의고사 1회

객관식 50문항 · 90분

과목객관식 문항배점
데이터 모델링의 이해1020점
SQL 기본 및 활용4080점

총점 60점 이상과 과목별 40% 미만 과락 기준을 함께 확인합니다.

1과목. 데이터 모델링의 이해

문제 1

데이터 모델·엔터티·속성에서 모델링의 세 단계에 대한 설명으로 옳은 것은?

  1. ① 개념 모델링에서 모든 인덱스를 확정한다.
  2. ② 물리 모델링은 업무 규칙과 무관하다.
  3. ③ 물리 모델링은 DBMS 특성과 저장 구조를 고려한다.
  4. ④ 논리 모델은 특정 DBMS의 저장 블록을 먼저 정한다.
정답과 해설 보기

정답 ③

개념 모델링은 고객·주문 같은 핵심 대상을 도출하고 관계를 표현합니다. 논리 모델링은 식별자·속성·관계를 구체화하면서 특정 DBMS에 종속되지 않는 구조를 만듭니다. 물리 모델링에서 테이블·컬럼·자료형·인덱스 등 구현 요소를 정합니다. 업무가 고객과 주문을 관리한다는 사실과 주문일을 DATE로 저장한다는 결정은 수준이 다릅니다. 문제에서 구체적인 자료형이나 저장 구조가 등장하면 물리 단계인지 먼저 확인하세요. 앞 단계로 돌아가 수정할 수 있으므로 세 단계가 서로 완전히 단절되는 것도 아닙니다.

기억할 핵심

물리 모델링은 DBMS 특성과 저장 구조를 고려한다.

문제 2

고객·주문 관계를 정리한 뒤 PostgreSQL의 NUMERIC 자료형과 인덱스를 결정했다. 마지막 작업의 단계는?

  1. ① 물리 모델링
  2. ② 요구사항 수집만 수행
  3. ③ 개념 모델링
  4. ④ 개념적 추상화만 수행
정답과 해설 보기

정답 ①

자료형과 인덱스는 실제 DBMS에 구현하는 물리 단계의 결정입니다.

기억할 핵심

물리 모델링은 DBMS 특성과 저장 구조를 고려한다.

문제 3

데이터 모델·엔터티·속성에서 엔터티의 성립 조건에 대한 설명으로 옳은 것은?

  1. ① 모든 명사는 반드시 별도 엔터티다.
  2. ② 고객번호 101 한 명이 고객 엔터티 전체다.
  3. ③ 엔터티는 업무에서 관리하는 대상이고 인스턴스는 그 대상의 개별 발생이다.
  4. ④ 속성이 전혀 없어도 업무 엔터티로 충분하다.
정답과 해설 보기

정답 ③

엔터티는 업무에서 관리할 가치가 있고, 여러 인스턴스로 구분되며, 속성과 관계를 갖는 대상입니다. 고객이라는 엔터티와 고객번호 101인 고객 한 명이라는 인스턴스를 구별하세요. 주문의 결제금액 하나는 일반적으로 독립 엔터티가 아니라 주문의 속성입니다. 같은 명사라도 업무에 따라 엔터티가 될 수도 속성이 될 수도 있습니다. 배송지를 주소 문자열 하나로만 다루면 고객 속성이지만, 여러 배송지·기본 여부·이력을 별도로 관리하면 배송지 엔터티로 분리하는 편이 자연스럽습니다.

기억할 핵심

엔터티는 업무에서 관리하는 대상이고 인스턴스는 그 대상의 개별 발생이다.

문제 4

여러 고객이 각각 여러 배송지를 저장하고 기본 배송지를 선택한다. 적절한 설계는?

  1. ① 배송지를 별도 엔터티로 두고 고객과 연결한다.
  2. ② 고객별 테이블을 하나씩 생성한다.
  3. ③ 배송지 수만 저장하고 주소는 버린다.
  4. ④ 고객명에 모든 주소를 이어 붙인다.
정답과 해설 보기

정답 ①

반복되는 배송지는 독립 인스턴스로 관리하고 고객과 관계를 맺어야 검색·수정이 가능합니다.

기억할 핵심

엔터티는 업무에서 관리하는 대상이고 인스턴스는 그 대상의 개별 발생이다.

문제 5

데이터 모델·엔터티·속성에서 속성과 도메인에 대한 설명으로 옳은 것은?

  1. ① 도메인은 속성이 가질 수 있는 값의 범위와 형식을 규정한다.
  2. ② 도메인은 테이블의 현재 행 수다.
  3. ③ 숫자형이면 모든 업무 규칙을 만족한다.
  4. ④ 속성은 항상 여러 값을 한 셀에 저장한다.
정답과 해설 보기

정답 ①

속성은 인스턴스를 설명하는 최소한의 의미 단위입니다. 도메인은 속성에 허용되는 값의 집합과 형식입니다. 수량의 도메인을 1 이상의 정수로 정했다면 소수나 음수를 허용하는지 따져야 합니다. 자료형만 정했다고 업무상의 허용 범위까지 모두 정해진 것은 아닙니다. 금액이 숫자라는 사실과 금액이 0 이상이어야 한다는 규칙을 구분하세요. 날짜 형식이 맞아도 종료일이 시작일보다 빠르면 업무 규칙을 어길 수 있습니다. 도메인과 제약조건은 이런 잘못된 값을 차단하는 기준을 제공합니다.

기억할 핵심

도메인은 속성이 가질 수 있는 값의 범위와 형식을 규정한다.

문제 6

주문수량은 1 이상의 정수라는 규칙에 어긋나는 값은?

  1. ① 0
  2. ② 1
  3. ③ 12
  4. ④ 300
정답과 해설 보기

정답 ①

수량 0은 정수이지만 1 이상이라는 도메인 범위에 들어가지 않습니다.

기억할 핵심

도메인은 속성이 가질 수 있는 값의 범위와 형식을 규정한다.

문제 7

데이터 모델·엔터티·속성에서 기본·설계·파생 속성에 대한 설명으로 옳은 것은?

  1. ① 파생 속성은 원본과 불일치할 가능성이 없다.
  2. ② 다른 속성으로 계산할 수 있는 금액은 파생 속성의 예다.
  3. ③ 기본 속성은 반드시 숫자여야 한다.
  4. ④ 고객명은 설계를 위해 임의 생성한 번호다.
정답과 해설 보기

정답 ②

업무에서 원래 발생하는 고객명·주문일은 기본 속성의 예입니다. 설계 편의를 위해 만든 일련번호나 코드 체계는 설계 속성으로 분류할 수 있습니다. 수량×단가로 얻는 금액은 파생 속성입니다. 파생 속성을 저장하면 조회를 단순하게 만들 수 있지만 원본 변경과 동시에 갱신해야 합니다. 계산할 수 있다는 이유만으로 항상 저장하거나 항상 제거하는 것은 아닙니다. 성능과 이력 보존 요구를 함께 봅니다. 주문 시점의 단가를 보존해야 한다면 현재 상품 가격과 별도로 주문 상세의 단가를 저장할 필요가 있습니다.

기억할 핵심

다른 속성으로 계산할 수 있는 금액은 파생 속성의 예다.

문제 8

수량 3, 주문 당시 단가 2,000원으로 주문금액을 계산한다. 파생 값은?

  1. ① 2,000원
  2. ② 3원
  3. ③ 5,000원
  4. ④ 6,000원
정답과 해설 보기

정답 ④

주문금액=수량×주문 단가이므로 3×2,000=6,000입니다. 현재 상품 단가와 주문 당시 단가를 혼동하지 마세요.

기억할 핵심

다른 속성으로 계산할 수 있는 금액은 파생 속성의 예다.

문제 9

데이터 모델·엔터티·속성에서 데이터 독립성에 대한 설명으로 옳은 것은?

  1. ① 물리적 독립성은 컬럼의 업무 의미를 삭제하는 것이다.
  2. ② 저장 구조 변화의 영향을 논리 구조에서 줄이는 것이 물리적 독립성이다.
  3. ③ 개념 스키마는 사용자 한 명의 화면만 뜻한다.
  4. ④ 외부 스키마는 디스크 블록 배치다.
정답과 해설 보기

정답 ②

논리적 데이터 독립성은 논리 구조 변화가 외부 사용자 관점에 미치는 영향을 줄이는 성질입니다. 물리적 데이터 독립성은 저장 방식 변화가 논리 구조에 미치는 영향을 줄이는 성질입니다. 인덱스를 추가했는데 사용자의 SELECT 문을 반드시 모두 다시 작성해야 한다면 독립성이 부족한 구조입니다. 외부·개념·내부 스키마를 각각 사용자 관점·전체 논리 구조·물리 저장 관점으로 연결해 외우면 방향이 명확합니다. 독립성은 어떤 변경도 영향이 없다는 보장이 아니라 변경의 파급을 분리하는 설계 목표입니다.

기억할 핵심

저장 구조 변화의 영향을 논리 구조에서 줄이는 것이 물리적 독립성이다.

문제 10

테이블의 업무 구조를 유지하면서 인덱스만 추가했다. 가장 관련 있는 개념은?

  1. ① 물리적 데이터 독립성
  2. ② 엔터티 통합
  3. ③ 다치 속성
  4. ④ 식별 관계만의 특징
정답과 해설 보기

정답 ①

인덱스는 저장·접근 경로와 관련되며 논리적인 업무 데이터 구조와 구분됩니다.

기억할 핵심

저장 구조 변화의 영향을 논리 구조에서 줄이는 것이 물리적 독립성이다.

2과목. SQL 기본 및 활용

문제 11

관계형 DB와 SELECT·DISTINCT에서 행과 열의 구분에 대한 설명으로 옳은 것은?

  1. ① SELECT 목록은 결과 열을, WHERE는 결과에 포함될 행을 정한다.
  2. ② FROM은 반환 열 이름만 지정한다.
  3. ③ WHERE는 테이블의 컬럼을 삭제한다.
  4. ④ SELECT는 항상 행을 정렬한다.
정답과 해설 보기

정답 ①

관계형 테이블에서 행은 개별 사실, 열은 속성입니다. 고객 3명에 대해 번호·이름·지역을 저장하면 행은 3개, 열은 3개입니다. SELECT 이름,지역은 열을 줄이고 WHERE 지역 조건은 행을 줄입니다. SELECT *는 모든 열을 조회하지만 행 순서를 보장하지는 않습니다. 화면에서 우연히 PK 순으로 나왔다고 그 순서가 계약된 것은 아닙니다. 필요한 열을 명시하면 결과 구조가 명확하고 테이블에 열이 추가될 때의 영향도 줄일 수 있습니다.

기억할 핵심

SELECT 목록은 결과 열을, WHERE는 결과에 포함될 행을 정한다.

문제 12

고객 10행에서 이름과 지역만 조회하고 행 조건은 없다. 결과의 열 수는?

  1. ① 2개
  2. ② 10개
  3. ③ 항상 1개
  4. ④ 전체 테이블의 모든 열
정답과 해설 보기

정답 ①

SELECT에 이름과 지역 두 표현식을 적었으므로 결과 열은 두 개입니다.

기억할 핵심

SELECT 목록은 결과 열을, WHERE는 결과에 포함될 행을 정한다.

문제 13

관계형 DB와 SELECT·DISTINCT에서 논리적 처리 순서에 대한 설명으로 옳은 것은?

  1. ① WHERE는 그룹을 만들기 전에 개별 행을 필터링한다.
  2. ② ORDER BY는 WHERE보다 먼저 값을 지운다.
  3. ③ HAVING은 FROM보다 먼저 수행된다.
  4. ④ SQL의 물리 실행 순서는 항상 문장 작성 순서다.
정답과 해설 보기

정답 ①

기본 흐름은 FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY입니다. 실제 실행계획의 물리 연산 순서와 같은 말은 아닙니다. WHERE 단계에서는 SELECT에서 정한 별칭을 일반적으로 사용할 수 없지만 ORDER BY에서 쓸 수 있는 이유가 이 흐름으로 설명됩니다. 별칭 지원 범위는 DBMS에 따라 다를 수 있으므로 표준적인 문법과 제품별 확장 문법을 구분하세요. 시험 문제에서 DBMS를 명시하면 해당 문법을 따릅니다.

기억할 핵심

WHERE는 그룹을 만들기 전에 개별 행을 필터링한다.

문제 14

SELECT amount*2 AS doubled FROM t ORDER BY doubled에서 별칭 사용은?

  1. ① 별칭은 항상 WHERE에만 쓴다.
  2. ② 반드시 테이블에 doubled 열이 있어야 한다.
  3. ③ ORDER BY에서 SELECT 별칭을 사용할 수 있다.
  4. ④ 별칭은 결과 값을 바꾼다.
정답과 해설 보기

정답 ③

ORDER BY는 결과 표현식의 별칭을 참조할 수 있습니다. 이름을 바꾸는 것과 계산하는 것은 별개입니다.

기억할 핵심

WHERE는 그룹을 만들기 전에 개별 행을 필터링한다.

문제 15

관계형 DB와 SELECT·DISTINCT에서 DISTINCT의 적용 단위에 대한 설명으로 옳은 것은?

  1. ① DISTINCT는 첫 컬럼만 비교한다.
  2. ② DISTINCT는 숫자에는 사용할 수 없다.
  3. ③ DISTINCT는 항상 원본 테이블에서 행을 삭제한다.
  4. ④ DISTINCT 지역,등급은 두 값의 조합을 기준으로 중복을 제거한다.
정답과 해설 보기

정답 ④

DISTINCT는 SELECT한 모든 표현식의 조합을 기준으로 중복을 제거합니다. 지역만 조회하면 서울이 하나로 줄지만 지역,등급을 함께 조회하면 서울·A와 서울·B는 다른 행입니다. 개별 열마다 따로 중복을 제거하는 기능이 아닙니다. 조인 오류로 행 수가 늘었을 때 DISTINCT를 먼저 붙이면 원인을 가릴 수 있습니다. 우선 조인 관계와 결과의 한 행이 무엇을 뜻하는지 확인한 뒤 필요한 중복 제거인지 판단하세요.

기억할 핵심

DISTINCT 지역,등급은 두 값의 조합을 기준으로 중복을 제거한다.

문제 16

(서울,A),(서울,A),(서울,B)를 SELECT DISTINCT 지역,등급으로 조회하면?

  1. ① 1행
  2. ② 3행
  3. ③ 0행
  4. ④ 2행
정답과 해설 보기

정답 ④

서울·A가 한 행으로 합쳐지고 서울·B는 별도 조합이므로 총 두 행입니다.

기억할 핵심

DISTINCT 지역,등급은 두 값의 조합을 기준으로 중복을 제거한다.

문제 17

관계형 DB와 SELECT·DISTINCT에서 표현식과 별칭에 대한 설명으로 옳은 것은?

  1. ① AS를 쓰면 원본 컬럼명이 영구 변경된다.
  2. ② SELECT에는 컬럼만 적을 수 있다.
  3. ③ NULL*10은 항상 0이다.
  4. ④ SELECT의 별칭은 조회 결과의 이름이며 원본 스키마를 바꾸지 않는다.
정답과 해설 보기

정답 ④

SELECT 목록에는 컬럼뿐 아니라 상수·연산식·함수가 올 수 있습니다. AS 별칭은 결과의 이름을 지정하며 원본 컬럼명을 변경하지 않습니다. 수량×단가 AS 금액은 결과 값을 계산하고 그 결과 열의 제목을 금액으로 붙입니다. 연산 우선순위는 괄호를 먼저 보고 곱셈·나눗셈과 덧셈·뺄셈을 구별합니다. NULL이 참여하는 산술식도 확인해야 합니다. 수량이 NULL이면 단가가 있어도 곱의 결과는 일반적으로 NULL입니다.

기억할 핵심

SELECT의 별칭은 조회 결과의 이름이며 원본 스키마를 바꾸지 않는다.

문제 18

수량 3, 단가 2,000에서 수량*단가 AS 금액의 결과는?

  1. ① 원본 단가 컬럼명이 금액으로 변경
  2. ② 금액이라는 결과 열에 6,000
  3. ③ 수량이 2,000으로 변경
  4. ④ 금액 5,000
정답과 해설 보기

정답 ②

곱셈으로 6,000을 계산하고 결과 별칭만 금액으로 표시합니다.

기억할 핵심

SELECT의 별칭은 조회 결과의 이름이며 원본 스키마를 바꾸지 않는다.

문제 19

관계형 DB와 SELECT·DISTINCT에서 테이블 별칭과 한정 이름에 대한 설명으로 옳은 것은?

  1. ① 별칭은 원본 테이블을 복제한다.
  2. ② 테이블 별칭은 같은 이름의 컬럼 출처를 구별하는 데 유용하다.
  3. ③ 두 테이블의 id는 이름이 같으면 항상 같은 값이다.
  4. ④ 별칭을 쓰면 조인 조건이 필요 없다.
정답과 해설 보기

정답 ②

여러 테이블에 같은 컬럼명이 있으면 테이블별칭.컬럼명으로 명확히 구별합니다. 고객 c와 주문 o를 조인할 때 c.id와 o.id는 서로 다른 값입니다. 별칭을 쓴 문장에서 원래 테이블명 혼용이 허용되는지 제품별 규칙도 살펴야 합니다. 별칭은 가독성을 위해 쓰되 의미 없는 이름을 과도하게 늘리지 않습니다. 행을 바꾸거나 데이터를 복사하는 기능은 아닙니다. 같은 테이블을 두 번 참조하는 셀프 조인에서도 각 역할을 구분하는 데 필요합니다.

기억할 핵심

테이블 별칭은 같은 이름의 컬럼 출처를 구별하는 데 유용하다.

문제 20

고객 c와 주문 o 모두 id가 있다. 고객 id만 선택하려면?

  1. ① SELECT id만 쓰면 항상 고객 id
  2. ② SELECT c로 모든 조건 생략
  3. ③ SELECT o.id가 고객 id와 항상 동일
  4. ④ SELECT c.id
정답과 해설 보기

정답 ④

출처를 c.id로 한정해야 모호함을 피하고 고객 식별자를 정확히 조회합니다.

기억할 핵심

테이블 별칭은 같은 이름의 컬럼 출처를 구별하는 데 유용하다.

문제 21

문자·숫자 함수와 CASE에서 문자열 길이와 부분 문자열에 대한 설명으로 옳은 것은?

  1. ① SUBSTR은 원본 값을 영구 삭제한다.
  2. ② 문자 함수는 NULL을 자동으로 숫자 0으로 바꾼다.
  3. ③ Oracle SUBSTR(문자열,시작위치,길이)는 지정한 부분 문자열을 반환한다.
  4. ④ 문자 수와 바이트 수는 모든 문자셋에서 항상 같다.
정답과 해설 보기

정답 ③

LENGTH는 문자 수를 구할 때 쓰며 바이트 길이 함수와 구별합니다. Oracle의 SUBSTR은 위치와 길이로 부분 문자열을 자릅니다. SQL Server는 SUBSTRING을 사용합니다. 제품별 함수명과 시작 위치 규칙을 섞지 마세요. 한글의 문자 수와 저장 바이트 수는 같지 않을 수 있습니다. 전화번호의 일부를 자르거나 코드 접두사를 추출할 때는 공백과 NULL 처리도 확인합니다. 예제에서 사용하는 DBMS를 명시하면 함수를 잘못 외우는 일을 줄일 수 있습니다.

기억할 핵심

Oracle SUBSTR(문자열,시작위치,길이)는 지정한 부분 문자열을 반환한다.

문제 22

Oracle에서 SUBSTR('ABCDE',2,3)의 결과는?

  1. ① BCDE
  2. ② ABC
  3. ③ BCD
  4. ④ CDE
정답과 해설 보기

정답 ③

두 번째 문자 B부터 세 글자이므로 BCD입니다.

기억할 핵심

Oracle SUBSTR(문자열,시작위치,길이)는 지정한 부분 문자열을 반환한다.

문제 23

문자·숫자 함수와 CASE에서 ROUND와 TRUNC에 대한 설명으로 옳은 것은?

  1. ① ROUND는 반올림하고 TRUNC는 지정 자리 아래를 버린다.
  2. ② TRUNC(-1.8)은 언제나 FLOOR와 같다.
  3. ③ 음수 자릿수는 무조건 오류다.
  4. ④ ROUND와 TRUNC는 모든 값에서 같다.
정답과 해설 보기

정답 ①

ROUND는 지정 자리에서 반올림하고 TRUNC는 해당 자리 아래를 잘라냅니다. ROUND(123.456,2)=123.46, TRUNC(123.456,2)=123.45입니다. 음수 자릿수는 소수점 왼쪽 자리입니다. 원본 값이 바뀌는 계산 함수와 화면에 보이는 자릿수만 바꾸는 표시 형식을 구분하세요. DBMS별 지원 함수명이 다르며 음수 값의 절사와 내림도 같지 않을 수 있습니다. TRUNC(-1.8)= -1인 경우 FLOOR(-1.8)= -2와 구분됩니다.

기억할 핵심

ROUND는 반올림하고 TRUNC는 지정 자리 아래를 버린다.

문제 24

Oracle에서 ROUND(1234.56,-2)의 결과는?

  1. ① 1234.6
  2. ② 1300
  3. ③ 1234
  4. ④ 1200
정답과 해설 보기

정답 ④

백의 자리로 반올림하므로 십의 자리 3을 보고 1200이 됩니다.

기억할 핵심

ROUND는 반올림하고 TRUNC는 지정 자리 아래를 버린다.

문제 25

문자·숫자 함수와 CASE에서 CASE의 평가 순서에 대한 설명으로 옳은 것은?

  1. ① CASE는 마지막으로 참인 WHEN만 선택한다.
  2. ② ELSE가 없으면 항상 0이다.
  3. ③ CASE는 WHERE에서만 사용 가능하다.
  4. ④ CASE는 처음으로 TRUE가 되는 WHEN의 결과를 반환한다.
정답과 해설 보기

정답 ④

검색 CASE는 위에서부터 처음 TRUE인 WHEN의 결과를 반환합니다. 점수>=90을 먼저 확인한 뒤 >=80을 확인해야 등급이 자연스럽습니다. >=80을 먼저 쓰면 95도 그 조건에서 결정되어 A 분기에 도달하지 못합니다. ELSE가 없고 어떤 조건도 맞지 않으면 NULL입니다. CASE는 조건에 따라 값을 만드는 표현식이므로 SELECT뿐 아니라 ORDER BY나 집계 표현식 안에서도 사용할 수 있습니다. 결과 분기의 자료형도 일관되게 맞추세요.

기억할 핵심

CASE는 처음으로 TRUE가 되는 WHEN의 결과를 반환한다.

문제 26

점수 95에 WHEN 점수>=80 THEN B, WHEN 점수>=90 THEN A를 적용하면?

  1. ① B
  2. ② 오류가 항상 발생
  3. ③ NULL
  4. ④ A
정답과 해설 보기

정답 ①

첫 조건 >=80이 이미 참이므로 B가 반환됩니다. 높은 기준을 먼저 검사해야 합니다.

기억할 핵심

CASE는 처음으로 TRUE가 되는 WHEN의 결과를 반환한다.

문제 27

문자·숫자 함수와 CASE에서 치환 함수와 자료형에 대한 설명으로 옳은 것은?

  1. ① COALESCE는 가장 큰 숫자를 반환한다.
  2. ② NULL과 0은 항상 같은 값이다.
  3. ③ 모든 NULL 치환 함수는 자료형 규칙까지 동일하다.
  4. ④ COALESCE는 처음으로 NULL이 아닌 인수를 반환한다.
정답과 해설 보기

정답 ④

COALESCE는 왼쪽부터 처음 NULL이 아닌 값을 반환합니다. Oracle NVL은 대체 값을 제공하며 SQL Server ISNULL과 지원 방식이 다릅니다. 반환 자료형과 암시적 변환 규칙이 다를 수 있으므로 함수 이름만 바꿔도 모든 경우가 같다고 보지 마세요. 숫자 금액의 대체 값으로 문자열 미입력을 섞으면 변환 오류가 날 수 있습니다. 집계 전에 0으로 치환하는지 집계 결과가 NULL일 때 0으로 치환하는지도 결과 의미가 다릅니다.

기억할 핵심

COALESCE는 처음으로 NULL이 아닌 인수를 반환한다.

문제 28

COALESCE(NULL,NULL,0,10)의 결과는?

  1. ① 10
  2. ② NULL
  3. ③ 문자열 NULL
  4. ④ 0
정답과 해설 보기

정답 ④

0은 NULL이 아니므로 세 번째 인수에서 반환이 결정됩니다.

기억할 핵심

COALESCE는 처음으로 NULL이 아닌 인수를 반환한다.

문제 29

문자·숫자 함수와 CASE에서 명시적 형 변환에 대한 설명으로 옳은 것은?

  1. ① 날짜 문자열은 어떤 환경에서나 자동으로 같은 뜻이다.
  2. ② 날짜 문자열 변환은 형식을 명시하면 환경 의존성을 줄일 수 있다.
  3. ③ 문자열로 보이는 날짜는 시간값을 가질 수 없다.
  4. ④ 암시적 변환은 오류가 날 수 없다.
정답과 해설 보기

정답 ②

명시적 변환은 날짜·숫자·문자 간 변환 의도를 함수로 드러내는 방법입니다. Oracle TO_DATE에는 입력 문자열과 형식 모델을 함께 적습니다. 세션의 기본 날짜 형식에 의존하면 다른 환경에서 오류나 오해가 생길 수 있습니다. 숫자 컬럼을 문자열과 비교할 때 DBMS가 자동 변환해 줄 수 있어도 잘못된 데이터나 실행계획 문제를 만들 수 있습니다. 표시를 위해 날짜를 문자열로 바꾸는 것과 날짜 자체로 범위 비교하는 일을 분리하세요.

기억할 핵심

날짜 문자열 변환은 형식을 명시하면 환경 의존성을 줄일 수 있다.

문제 30

Oracle에서 2026-11-07을 날짜로 해석하는 명확한 표현은?

  1. ① TO_NUMBER('2026-11-07')
  2. ② LENGTH('2026-11-07')
  3. ③ TO_DATE('2026-11-07','YYYY-MM-DD')
  4. ④ ROUND('2026-11-07')
정답과 해설 보기

정답 ③

문자열 형식 YYYY-MM-DD를 지정해 날짜로 변환합니다.

기억할 핵심

날짜 문자열 변환은 형식을 명시하면 환경 의존성을 줄일 수 있다.

문제 31

WHERE·날짜 범위·연산자 우선순위에서 AND와 OR에 대한 설명으로 옳은 것은?

  1. ① 괄호는 SQL에서 사용할 수 없다.
  2. ② OR는 언제나 AND보다 우선한다.
  3. ③ AND가 OR보다 우선하므로 필요한 논리 묶음은 괄호로 표시한다.
  4. ④ WHERE는 FALSE인 행도 모두 반환한다.
정답과 해설 보기

정답 ③

일반적인 우선순위에서 AND는 OR보다 먼저 결합합니다. A OR B AND C는 A OR (B AND C)입니다. 서울 또는 부산이면서 활성 회원을 찾으려면 (지역=서울 OR 지역=부산) AND 활성=1처럼 묶어야 합니다. 괄호는 사람의 의도를 드러내는 수단입니다. 조건이 길면 각 비교 결과를 적고, 괄호·NOT·AND·OR 순서로 평가해 보세요. NULL이 있다면 TRUE/FALSE 외에 UNKNOWN도 함께 고려합니다.

기억할 핵심

AND가 OR보다 우선하므로 필요한 논리 묶음은 괄호로 표시한다.

문제 32

지역이 서울이고 활성=0인 행에 지역=서울 OR 지역=부산 AND 활성=1을 적용하면?

  1. ① 선택된다.
  2. ② 선택되지 않는다.
  3. ③ 항상 UNKNOWN이다.
  4. ④ 문법 오류다.
정답과 해설 보기

정답 ①

서울 조건이 TRUE이므로 OR 전체가 TRUE입니다. 활성 조건을 두 지역에 모두 적용하려면 괄호가 필요합니다.

기억할 핵심

AND가 OR보다 우선하므로 필요한 논리 묶음은 괄호로 표시한다.

문제 33

WHERE·날짜 범위·연산자 우선순위에서 BETWEEN의 양끝 포함에 대한 설명으로 옳은 것은?

  1. ① BETWEEN은 시작 값과 종료 값을 모두 포함한다.
  2. ② BETWEEN은 양끝을 모두 제외한다.
  3. ③ BETWEEN 20 AND 10은 자동으로 10~20으로 바뀐다.
  4. ④ 날짜의 시간은 비교에 영향을 주지 않는다.
정답과 해설 보기

정답 ①

BETWEEN a AND b는 a 이상 b 이하입니다. 수량 BETWEEN 10 AND 20이면 10과 20을 모두 포함합니다. 두 경계가 거꾸로 주어지면 자동으로 정렬해 주는 것이 일반적인 규칙은 아닙니다. 날짜 컬럼에 시간이 있으면 종료일 자정까지 비교하는 조건은 그날 오후를 놓칩니다. 월별 조회는 시작일 이상·다음 달 시작일 미만의 반열린 구간으로 작성하면 시간 정밀도에 덜 의존합니다.

기억할 핵심

BETWEEN은 시작 값과 종료 값을 모두 포함한다.

문제 34

금액 BETWEEN 100 AND 200에서 포함되는 값은?

  1. ① 200만
  2. ② 100만
  3. ③ 100과 200 모두
  4. ④ 둘 다 제외
정답과 해설 보기

정답 ③

BETWEEN은 >=100 AND <=200과 같은 경계 포함 의미입니다.

기억할 핵심

BETWEEN은 시작 값과 종료 값을 모두 포함한다.

문제 35

WHERE·날짜 범위·연산자 우선순위에서 월별 날짜 조회에 대한 설명으로 옳은 것은?

  1. ① 월 전체의 일시는 다음 달 첫날 미만으로 조회할 수 있다.
  2. ② 모든 DBMS의 시간 정밀도는 초 단위다.
  3. ③ 일시는 문자열과 항상 같은 정렬 규칙이다.
  4. ④ 11월 30일 자정 이하는 11월 전체다.
정답과 해설 보기

정답 ①

11월 전체를 조회할 때 일시 >= 11월 1일 AND 일시 < 12월 1일로 표현하면 11월 30일의 모든 시간을 포함합니다. 11월 30일 00:00:00을 상한으로 둔 BETWEEN은 그 이후 시간을 놓칩니다. 끝을 23:59:59로 고정하는 방식은 소수 초 정밀도에서 누락이 생길 수 있습니다. 비교할 경계는 컬럼과 호환되는 날짜형 리터럴이나 명시적 변환으로 만들고 문자 정렬에 기대지 않는 편이 명확합니다.

기억할 핵심

월 전체의 일시는 다음 달 첫날 미만으로 조회할 수 있다.

문제 36

11월 30일 18:00을 포함하는 안전한 11월 조회 상한은?

  1. ① 12월 1일 00:00 미만
  2. ② 11월 30일 날짜 문자열과 같음
  3. ③ 11월 1일 00:00 미만
  4. ④ 11월 30일 00:00 이하
정답과 해설 보기

정답 ①

다음 달 시작 미만이면 말일 오후와 소수 초가 있는 값도 포함할 수 있습니다.

기억할 핵심

월 전체의 일시는 다음 달 첫날 미만으로 조회할 수 있다.

문제 37

WHERE·날짜 범위·연산자 우선순위에서 LIKE와 와일드카드에 대한 설명으로 옳은 것은?

  1. ① %는 반드시 한 문자다.
  2. ② _는 항상 숫자만 뜻한다.
  3. ③ LIKE는 정규표현식과 모든 문법이 같다.
  4. ④ LIKE의 _는 한 문자에 대응한다.
정답과 해설 보기

정답 ④

%는 0개 이상 문자, _는 한 문자에 대응합니다. LIKE A%는 A로 시작하는 문자열을 찾고 LIKE A_는 A 뒤에 정확히 한 문자가 오는 값을 찾습니다. 실제 밑줄이나 퍼센트를 검색하려면 ESCAPE 등 제품 문법을 확인합니다. 패턴 비교와 정규표현식은 다른 기능입니다. 대소문자 구별은 문자 비교 설정에 따라 달라질 수 있습니다. 공백도 문자이므로 앞뒤 공백이 남아 있을 때의 결과를 살펴야 합니다.

기억할 핵심

LIKE의 _는 한 문자에 대응한다.

문제 38

LIKE 'A_'에 맞는 문자열은?

  1. ① AB
  2. ② ABC
  3. ③ BA
  4. ④ A
정답과 해설 보기

정답 ①

A 뒤에 정확히 한 글자가 있으므로 AB가 일치합니다.

기억할 핵심

LIKE의 _는 한 문자에 대응한다.

문제 39

WHERE·날짜 범위·연산자 우선순위에서 IN과 조건 집합에 대한 설명으로 옳은 것은?

  1. ① IN은 숫자만 비교한다.
  2. ② IN에는 서브쿼리를 사용할 수 없다.
  3. ③ IN 목록에 같은 값이 두 번 있으면 원본 행이 두 번 나온다.
  4. ④ IN 목록의 값이 중복되어도 같은 원본 행이 자동으로 복제되지 않는다.
정답과 해설 보기

정답 ④

IN은 목록 중 일치하는 값이 있는지 검사합니다. 지역 IN (서울,부산)은 두 동등 비교를 OR로 묶은 것과 연결됩니다. 목록에 같은 값이 반복되어도 원본 행이 그 횟수만큼 복제되지는 않습니다. 서브쿼리의 결과를 목록으로 사용할 수도 있습니다. 다만 NOT IN과 NULL의 조합은 3값 논리를 다시 점검해야 합니다. 연산자 이름이 비슷하다고 IN을 조인과 동일한 행 생성 방식으로 이해하면 안 됩니다.

기억할 핵심

IN 목록의 값이 중복되어도 같은 원본 행이 자동으로 복제되지 않는다.

문제 40

id=1인 한 행에 WHERE id IN (1,1,2)를 적용하면?

  1. ① 한 번 선택된다.
  2. ② 세 번 선택된다.
  3. ③ 두 번 선택된다.
  4. ④ 반드시 제외된다.
정답과 해설 보기

정답 ①

IN은 조건 판정이며 목록의 중복을 기준으로 결과 행을 증식시키지 않습니다.

기억할 핵심

IN 목록의 값이 중복되어도 같은 원본 행이 자동으로 복제되지 않는다.

문제 41

집계·GROUP BY·HAVING·ORDER BY에서 GROUP BY의 결과 단위에 대한 설명으로 옳은 것은?

  1. ① GROUP BY의 컬럼 조합이 집계 결과 한 행의 단위를 정한다.
  2. ② 집계에 없는 모든 컬럼을 아무 기준 없이 SELECT할 수 있다.
  3. ③ GROUP BY는 항상 원본과 같은 행 수다.
  4. ④ 그룹 컬럼을 추가해도 결과 단위는 변하지 않는다.
정답과 해설 보기

정답 ①

GROUP BY 부서는 같은 부서 값을 묶어 그룹마다 집계합니다. SELECT에서 집계하지 않은 컬럼은 일반적으로 GROUP BY에 포함해야 합니다. 부서별 합계 옆에 임의의 직원명을 그대로 선택하면 어느 직원을 표시해야 할지 불명확합니다. GROUP BY에 지역과 상품을 함께 쓰면 지역별이 아니라 지역·상품 조합별 결과가 됩니다. 그룹 컬럼을 하나 추가하면 결과 행 수가 늘 수 있으므로 문제의 요구 단위와 비교하세요.

기억할 핵심

GROUP BY의 컬럼 조합이 집계 결과 한 행의 단위를 정한다.

문제 42

서울 A 10, 서울 A 20, 서울 B 5를 지역·상품별 합계로 묶으면?

  1. ① 원본 세 행 유지
  2. ② A 10 한 행만
  3. ③ 서울 A 30, 서울 B 5
  4. ④ 서울 35 한 행
정답과 해설 보기

정답 ③

지역과 상품의 조합이 기준이므로 서울·A 두 행은 30으로 합쳐지고 서울·B는 5입니다.

기억할 핵심

GROUP BY의 컬럼 조합이 집계 결과 한 행의 단위를 정한다.

문제 43

집계·GROUP BY·HAVING·ORDER BY에서 WHERE와 HAVING에 대한 설명으로 옳은 것은?

  1. ① HAVING SUM(amount)>=100은 그룹 합계가 100 이상인 그룹을 남긴다.
  2. ② WHERE와 HAVING은 언제나 같은 결과다.
  3. ③ HAVING은 원본 테이블을 삭제한다.
  4. ④ WHERE SUM(amount)>=100은 모든 DBMS에서 기본 문법이다.
정답과 해설 보기

정답 ①

WHERE는 집계 전 행, HAVING은 집계 후 그룹을 거릅니다. 매출 100 이상 거래만 합산하는 것과 전체 거래를 합산한 뒤 합계 100 이상 부서만 남기는 것은 다른 결과입니다. 집계 함수 조건은 HAVING에 두는 것이 기본입니다. 행 조건을 불필요하게 집계 후로 미루면 의미가 달라질 수 있습니다. 어떤 자료가 분모·합계의 입력에 포함되는지 먼저 결정하고 조건 위치를 고르세요.

기억할 핵심

HAVING SUM(amount)>=100은 그룹 합계가 100 이상인 그룹을 남긴다.

문제 44

A부서 매출이 60과 60이다. WHERE 매출>=100과 HAVING SUM(매출)>=100의 차이는?

  1. ① 둘 다 120을 남긴다.
  2. ② 둘 다 매출 60 두 행을 반환한다.
  3. ③ 전자는 행이 없고 후자는 A부서 합계 120을 남긴다.
  4. ④ 전자는 120이고 후자는 없다.
정답과 해설 보기

정답 ③

행마다 100 미만이므로 WHERE에서 모두 제거됩니다. 전체를 묶으면 합계 120이라 HAVING을 통과합니다.

기억할 핵심

HAVING SUM(amount)>=100은 그룹 합계가 100 이상인 그룹을 남긴다.

문제 45

집계·GROUP BY·HAVING·ORDER BY에서 조건부 집계에 대한 설명으로 옳은 것은?

  1. ① COUNT(CASE WHEN 조건 THEN 1 ELSE 0 END)는 0을 제외한다.
  2. ② CASE를 집계 안에 사용할 수 없다.
  3. ③ SUM은 문자열 여부와 관계없이 건수만 센다.
  4. ④ COUNT(CASE WHEN 조건 THEN 1 END)는 조건을 만족한 행을 셀 수 있다.
정답과 해설 보기

정답 ④

SUM(CASE WHEN 조건 THEN 값 ELSE 0 END)은 조건을 만족하는 값만 합산합니다. COUNT(CASE WHEN 조건 THEN 1 END)는 ELSE가 NULL인 행을 제외해 조건부 건수를 셀 수 있습니다. ELSE 0을 넣은 COUNT는 0도 세므로 의도가 달라집니다. 조건부 집계는 같은 원본에서 여러 지표를 나란히 만들 때 유용합니다. 다만 할인 건수와 할인 금액을 혼동하지 않도록 CASE가 반환하는 값과 집계 함수의 의미를 함께 확인하세요.

기억할 핵심

COUNT(CASE WHEN 조건 THEN 1 END)는 조건을 만족한 행을 셀 수 있다.

문제 46

세 행 중 조건을 만족하는 행이 두 개다. COUNT(CASE WHEN 조건 THEN 1 ELSE 0 END)는?

  1. ① 1
  2. ② 2
  3. ③ 3
  4. ④ 0
정답과 해설 보기

정답 ③

ELSE 0도 NULL이 아니므로 COUNT가 세 행을 모두 셉니다. 조건부 건수는 ELSE를 생략하거나 SUM을 사용합니다.

기억할 핵심

COUNT(CASE WHEN 조건 THEN 1 END)는 조건을 만족한 행을 셀 수 있다.

문제 47

집계·GROUP BY·HAVING·ORDER BY에서 정렬 방향과 다중 기준에 대한 설명으로 옳은 것은?

  1. ① 다중 정렬은 앞의 키가 동률일 때 다음 키를 적용한다.
  2. ② NULL의 기본 정렬 위치는 모든 DBMS에서 같다.
  3. ③ ORDER BY가 없으면 PK 순서가 보장된다.
  4. ④ DESC는 언제나 모든 컬럼에 한꺼번에 적용된다.
정답과 해설 보기

정답 ①

ORDER BY는 최종 결과의 순서를 정합니다. 기본 방향은 보통 ASC이며, 여러 키는 왼쪽부터 우선합니다. ORDER BY amount DESC,id ASC라면 금액이 같은 행끼리 id가 작은 순으로 정렬됩니다. 동률의 순서를 정하지 않으면 실행마다 같은 순서라고 보장하기 어렵습니다. 페이징이나 TOP N에서는 고유한 보조 키를 포함하는 것이 재현성을 높입니다. NULL의 기본 정렬 위치는 DBMS별로 다를 수 있습니다.

기억할 핵심

다중 정렬은 앞의 키가 동률일 때 다음 키를 적용한다.

문제 48

(id,금액)이 (2,100),(1,100),(3,90)일 때 금액 DESC,id ASC 순서는?

  1. ① 2→1→3
  2. ② 3→2→1
  3. ③ 1→2→3
  4. ④ 3→1→2
정답과 해설 보기

정답 ③

금액 100이 먼저이고 같은 금액에서는 id 1이 2보다 앞입니다.

기억할 핵심

다중 정렬은 앞의 키가 동률일 때 다음 키를 적용한다.

문제 49

집계·GROUP BY·HAVING·ORDER BY에서 빈 집합과 집계 결과에 대한 설명으로 옳은 것은?

  1. ① 빈 집합의 SUM은 항상 0이다.
  2. ② COUNT(*)는 빈 집합에서 오류다.
  3. ③ 전체 집계와 GROUP BY 집계는 빈 입력에서 결과 행 수가 항상 같다.
  4. ④ 입력 행이 없는 전체 집계에서 COUNT(*)는 0이다.
정답과 해설 보기

정답 ④

그룹 없이 전체를 집계하면 입력 행이 없어도 COUNT(*)는 0을 반환하고 SUM 등은 일반적으로 NULL을 반환합니다. GROUP BY가 있으면 만들 그룹 자체가 없어 결과 행이 0개일 수 있습니다. 0과 NULL, 결과 행 없음은 다른 상태입니다. 화면에서 합계를 0으로 표시하려면 COALESCE(SUM(amount),0)을 검토할 수 있지만 데이터가 실제 없다는 의미를 숨기지 않도록 요구사항을 확인합니다.

기억할 핵심

입력 행이 없는 전체 집계에서 COUNT(*)는 0이다.

문제 50

그룹 없이 SELECT COUNT(*),SUM(amount)를 빈 테이블에 실행하면?

  1. ① 결과 행 없음
  2. ② 항상 오류
  3. ③ 0, NULL인 한 행
  4. ④ NULL,0인 한 행
정답과 해설 보기

정답 ③

전체 집계는 한 행을 반환하며 COUNT는 0, SUM은 NULL입니다.

기억할 핵심

입력 행이 없는 전체 집계에서 COUNT(*)는 0이다.

채점과 복습

틀린 문항은 선택지 표현보다 판단 기준을 다시 확인합니다. 이 모의고사는 앞 단원의 핵심 문항을 종합 복습하도록 구성했습니다. 정답을 기억했더라도 다른 선택지가 왜 틀렸는지 설명해 보세요.

범위 확인

2026년 학습 범위를 기준으로 구성했습니다. 시험 시행기관의 자격 안내·출제 기준에서 과목과 변경 공지를 확인할 수 있습니다.

다음 · 필기 종합 모의고사 2회

SQLD 전체 목차

과목별 이론

단원별 객관식

실습

필기 모의고사

예상 모의문제입니다.

스터디클럽의 다른 강의 보기