합격 후기 작성하고 2,000원 쿠폰 받아가세요! (게시글 탭 → 합격후기)

SQLD시험일 2025년 3월 8일· 50문항· 조회 45전문가 검수

[SQLD] 2025년 56회 기출 복원

SQLD(SQL 개발자) 2025년 56회 기출 복원 50문항을 정답·해설과 함께 정리했습니다. 검색해서 들어오신 분들도 바로 풀어보고 채점까지 가능합니다.

안녕하세요. 문어입니다 🐙


📋 회차 정보

이번 글은 SQLD(SQL 개발자) 2025년 56회 기출 복원입니다. 아래는 시험 응시 정보 요약이에요.

자격증SQLD(SQL 개발자)
연도2025
회차56
시험일2025년 3월 8일
문항 수50문항

📊 출제 영역 한눈에

이번 회차의 과목별 문항 분포입니다. 비중이 큰 영역부터 우선 풀이하면 효율적이에요.

과목문항 수비중
1과목: 데이터 모델링의 이해10문항20%
2과목: SQL 기본 및 활용40문항80%

💡 학습 팁

SQLD 는 1과목 데이터 모델링 과락(8점 미만)만 피하면 2과목 SQL 활용에서 합격선(60점) 도달이 어렵지 않습니다. 회차별 기출 복원을 시간 재서 풀어보고, 윈도우 함수·계층형 쿼리·NULL 함정만 따로 정리해두세요.

📝 기출문제 전체 보기

SQL 개발자 자격증 2025년 56회차 기출 복원입니다. 각 문제 아래의 「정답·해설 보기」를 펼치면 정답과 해설이 나타나요. 실전 시험 환경(타이머·자동 채점·오답 누적)에서 풀어보고 싶다면 글 맨 아래 「직접 풀러가기」를 눌러주세요.

  1. 문제 1

    4지선다

    스키마의 종류로 옳지 않은 것은?

    • 1.

      응용 스키마

    • 2.

      외부 스키마

    • 3.

      개념 스키마

    • 4.

      내부 스키마

    정답·해설 보기

    정답

    1

    응용 스키마

    해설

    정답: 1. 데이터베이스의 3단계 스키마는 외부 스키마, 개념 스키마, 내부 스키마이다.

    오답 풀이

    • 1번: 응용 스키마는 3단계 스키마의 표준 분류에 해당하지 않는다.
    • 2번: 외부 스키마는 사용자 관점의 데이터베이스 구조이다.
    • 3번: 개념 스키마는 조직 전체 관점의 논리적 구조이다.
    • 4번: 내부 스키마는 물리적 저장 구조와 관련된다.

    보충 개념 3단계 스키마 구조는 데이터 독립성을 확보하기 위한 구조이다. 외부 단계는 사용자별 뷰, 개념 단계는 전체 논리 구조, 내부 단계는 저장 구조를 의미한다.

  2. 문제 2

    4지선다

    데이터 모델링에 대한 설명으로 옳지 않은 것은?

    • 1.

      업무에서 사용되는 모든 데이터를 포함해야 한다.

    • 2.

      업무 규칙은 데이터 모델에 반영되어야 한다.

    • 3.

      데이터 모델링은 업무 정보를 구조화하는 과정이다.

    • 4.

      업무 규칙이 모델에 포함되지 않아도 된다.

    정답·해설 보기

    정답

    4

    업무 규칙이 모델에 포함되지 않아도 된다.

    해설

    정답: 4. 데이터 모델링은 업무에서 사용하는 데이터와 업무 규칙을 데이터 구조로 표현하는 과정이므로 업무 규칙은 모델에 반영되어야 한다.

    오답 풀이

    • 1번: 업무에서 필요한 데이터는 모델링 대상에 포함되어야 한다.
    • 2번: 업무 규칙은 엔터티, 속성, 관계, 제약조건 등에 반영된다.
    • 3번: 데이터 모델링은 현실 업무를 데이터 관점에서 추상화하고 구조화하는 작업이다.
    • 4번: 업무 규칙이 모델에 포함되지 않아도 된다는 설명은 부적절하다.

    보충 개념 데이터 모델링은 단순히 테이블을 만드는 작업이 아니라 업무의 데이터 구조와 규칙을 명확히 표현하는 작업이다. 업무 규칙이 누락되면 데이터 정합성과 시스템 품질이 저하될 수 있다.

  3. 문제 3

    4지선다

    발생 시점에 따라 구분할 수 있는 엔터티의 유형으로 적절하지 않은 것은?

    • 1.

      관계 엔터티

    • 2.

      행위 엔터티

    • 3.

      중심 엔터티

    • 4.

      기본 엔터티

    정답·해설 보기

    정답

    1

    관계 엔터티

    해설

    정답: 1. 발생 시점에 따른 엔터티 유형은 기본 엔터티, 중심 엔터티, 행위 엔터티로 구분한다.

    오답 풀이

    • 1번: 관계 엔터티는 발생 시점에 따른 표준 분류가 아니다.
    • 2번: 행위 엔터티는 업무 행위나 사건에 의해 발생하는 엔터티이다.
    • 3번: 중심 엔터티는 기본 엔터티로부터 발생하고 업무의 중심이 되는 엔터티이다.
    • 4번: 기본 엔터티는 독립적으로 생성되는 엔터티이다.

    보충 개념 엔터티는 발생 시점에 따라 기본, 중심, 행위 엔터티로 분류할 수 있다. 예를 들어 고객과 상품은 기본 엔터티, 주문은 행위 엔터티로 볼 수 있다.

  4. 문제 4

    4지선다

    다음 설명 중 옳지 않은 것은?

    • 1.

      고객과 상품은 기본 엔터티다.

    • 2.

      주문은 사건 엔터티다.

    • 3.

      주문 상품 엔터티는 주문과 상품의 관계에 의해 생성된다.

    • 4.

      주문 상품 엔터티는 독립적으로 발생하는 기본 엔터티다.

    정답·해설 보기

    정답

    4

    주문 상품 엔터티는 독립적으로 발생하는 기본 엔터티다.

    해설

    정답: 4. 주문상품 엔터티는 주문과 상품의 관계에서 발생하는 행위 또는 관계 성격의 엔터티로 보는 것이 적절하다.

    오답 풀이

    • 1번: 고객과 상품은 업무의 기반이 되는 기본 엔터티로 볼 수 있다.
    • 2번: 주문은 고객의 구매 행위에 의해 발생하는 사건 또는 행위 엔터티이다.
    • 3번: 주문상품은 주문과 상품의 다대다 관계를 해소하기 위해 생성되는 엔터티로 볼 수 있다.
    • 4번: 주문상품은 독립적으로 발생하는 기본 엔터티가 아니라 주문과 상품의 관계에서 발생한다.

    보충 개념 다대다 관계는 실제 테이블 설계에서 중간 엔터티로 해소하는 경우가 많다. 주문과 상품 사이의 주문상품 엔터티는 주문별 상품 내역을 표현한다.

  5. 문제 5

    4지선다

    다른 속성을 이용하여 결과를 도출하는 속성은?

    • 1.

      설계 속성

    • 2.

      기본 속성

    • 3.

      파생 속성

    • 4.

      관계 속성

    정답·해설 보기

    정답

    3

    파생 속성

    해설

    정답: 3. 파생 속성은 다른 속성의 값으로부터 계산되거나 도출되는 속성이다.

    오답 풀이

    • 1번: 설계 속성은 업무상 원래 존재하지 않지만 설계를 위해 도입하는 속성이다.
    • 2번: 기본 속성은 업무로부터 직접 도출되는 속성이다.
    • 3번: 파생 속성은 합계, 나이, 금액 등 다른 속성으로부터 계산되는 속성이다.
    • 4번: 관계 속성은 표준 속성 분류로 보기 어렵다.

    보충 개념 속성은 기본 속성, 설계 속성, 파생 속성 등으로 구분할 수 있다. 파생 속성은 편의를 위해 저장할 수 있지만 데이터 중복과 정합성 문제를 고려해야 한다.

  6. 문제 6

    4지선다

    다음 설명 중 옳은 것을 모두 고르시오.

    <보기> 가. 주소는 시, 군, 구 등으로 나눠지므로 복합 속성이다. 나. 나이는 단순 속성이다. 다. 주민번호는 단일 값 속성이다. 라. 연락처는 휴대폰번호, 집 전화번호가 될 수 있기 때문에 다중 값 속성이다.

    • 1.

      가, 라

    • 2.

      가, 나, 다

    • 3.

      나, 다, 라

    • 4.

      가, 나, 다, 라

    정답·해설 보기

    정답

    4

    가, 나, 다, 라

    해설

    정답: 4. 보기의 설명은 모두 속성의 분류 관점에서 옳다.

    오답 풀이

    • 1번: 나, 다가 누락되어 있다.
    • 2번: 라가 누락되어 있다.
    • 3번: 가가 누락되어 있다.
    • 4번: 가, 나, 다, 라가 모두 옳다.

    보충 개념 복합 속성은 더 작은 의미 단위로 분해 가능한 속성이다. 단일 값 속성은 한 엔터티 인스턴스에 하나의 값만 갖는 속성이고, 다중 값 속성은 여러 값을 가질 수 있는 속성이다.

  7. 문제 7

    4지선다

    다음 관계 조건을 보고 옳지 않은 것을 고르시오.

    <관계 조건>

    • 병원은 0명 이상의 의사를 둘 수 있다.
    • 의사는 반드시 1개의 병원에 소속된다.
    • 의사는 0건 이상의 수술을 집도할 수 있다.
    • 수술은 담당 의사 없이 등록될 수 있다.
    • ㄱ은 병원-의사 관계, ㄴ은 의사-수술 관계, ㄷ은 병원-수술을 직접 연결한 관계이다.
    • 1.

      ㄷ은 ㄱ과 ㄴ을 합한 것과 의미가 같다.

    • 2.

      의사가 없는 병원이 있을 수 있다.

    • 3.

      수술이 없는 의사가 있을 수 있다.

    • 4.

      의사가 집도하지 않는 수술이 있을 수 있다.

    정답·해설 보기

    정답

    1

    ㄷ은 ㄱ과 ㄴ을 합한 것과 의미가 같다.

    해설

    정답: 1. 병원-수술을 직접 연결한 관계(ㄷ)는 병원-의사, 의사-수술 두 관계를 단순히 합친 것과 같지 않다.

    오답 풀이

    • 1번: 직접 관계는 중간 엔터티인 의사 정보와 참여 조건을 생략하므로 ㄱ과 ㄴ의 합성과 동일하지 않다.
    • 2번: 병원이 0명 이상의 의사를 둘 수 있다고 했으므로 가능하다.
    • 3번: 의사는 0건 이상의 수술을 집도할 수 있다고 했으므로 가능하다.
    • 4번: 수술은 담당 의사 없이 등록될 수 있다고 했으므로 가능하다.

    보충 개념 ERD 해석에서는 관계 수뿐 아니라 선택성, 필수 참여, 중간 엔터티 유무까지 함께 봐야 한다. 직접 관계와 경유 관계는 의미가 달라질 수 있다.

  8. 문제 8

    4지선다

    업무에 의해 만들어진 식별자로 옳은 것은?

    • 1.

      외부식별자

    • 2.

      내부식별자

    • 3.

      본질식별자

    • 4.

      인조식별자

    정답·해설 보기

    정답

    3

    본질식별자

    해설

    정답: 3. 본질식별자는 업무적으로 의미를 가지고 원래 존재하는 식별자이다.

    오답 풀이

    • 1번: 외부식별자는 다른 엔터티와의 관계로부터 가져온 식별자이다.
    • 2번: 내부식별자는 엔터티 내부에서 스스로 생성되는 식별자이다.
    • 3번: 본질식별자는 업무에 의해 자연스럽게 식별 가능한 속성이다.
    • 4번: 인조식별자는 업무적 의미보다는 식별을 위해 인위적으로 만든 식별자이다.

    보충 개념 식별자는 생성 방식, 대체 여부, 업무 의미 여부에 따라 여러 기준으로 분류된다. 본질식별자는 주민등록번호, 사번처럼 업무적으로 의미 있는 식별자에 해당한다.

  9. 문제 9

    4지선다

    모든 일반 속성이 주식별자에 종속되어 있는 정규형은?

    • 1.

      제1 정규형

    • 2.

      제2 정규형

    • 3.

      제3 정규형

    • 4.

      보이스-코드정규형

    정답·해설 보기

    정답

    2

    제2 정규형

    해설

    정답: 2. 제2정규형은 제1정규형을 만족하면서 모든 일반 속성이 주식별자 전체에 완전 함수 종속되도록 부분 함수 종속을 제거한 정규형이다.

    오답 풀이

    • 1번: 제1정규형은 속성의 원자성을 만족하는 단계이다.
    • 2번: 제2정규형은 일반 속성이 주식별자 전체에 종속되도록 하는 정규형이다.
    • 3번: 제3정규형은 일반 속성 간의 이행 함수 종속을 제거한다.
    • 4번: 보이스-코드정규형은 모든 결정자가 후보키가 되도록 하는 더 강한 정규형이다.

    보충 개념 제2정규형은 복합키를 가진 릴레이션에서 특히 중요하다. 키의 일부에만 종속되는 속성이 있으면 별도 릴레이션으로 분리해야 한다.

  10. 문제 10

    4지선다

    정규화에 대한 설명으로 옳지 않은 것은?

    • 1.

      정규화 시 유연성이 떨어진다.

    • 2.

      일반 속성 간 종속을 제거하는 것은 제3 정규형이다.

    • 3.

      반정규화는 데이터 중복으로 독립성이 떨어진다.

    • 4.

      정규화를 많이 할수록 성능이 저하된다.

    정답·해설 보기

    정답

    1

    정규화 시 유연성이 떨어진다.

    해설

    정답: 1. 정규화는 데이터 중복을 줄이고 구조의 유연성과 데이터 독립성을 높이는 방향의 설계 기법이다.

    오답 풀이

    • 1번: 정규화로 유연성이 떨어진다는 설명은 일반적으로 옳지 않다.
    • 2번: 제3정규형은 일반 속성 간 이행 함수 종속을 제거한다.
    • 3번: 반정규화는 중복을 허용하므로 데이터 독립성과 정합성 측면의 부담이 생길 수 있다.
    • 4번: 정규화가 과도하면 조인이 많아져 조회 성능이 저하될 수 있다.

    보충 개념 정규화는 이상 현상을 줄이고 데이터 정합성을 높인다. 다만 성능 요구가 강한 경우에는 통제된 반정규화를 검토할 수 있다.

  11. 문제 11

    4지선다

    우선순위가 가장 높은 연산자는?

    • 1.

      비교

    • 2.

      괄호

    • 3.

      AND

    • 4.

      OR

    정답·해설 보기

    정답

    2

    괄호

    해설

    정답: 2. SQL 연산에서 괄호는 가장 먼저 평가되어 연산 우선순위를 명시적으로 바꿀 수 있다.

    오답 풀이

    • 1번: 비교 연산자는 괄호보다 우선하지 않는다.
    • 2번: 괄호 안의 조건은 가장 먼저 평가된다.
    • 3번: AND는 OR보다 우선순위가 높지만 괄호보다 높지는 않다.
    • 4번: OR는 AND보다도 우선순위가 낮다.

    보충 개념 조건식이 복잡할 때는 괄호를 사용해 의도를 명확히 표현해야 한다. 일반적으로 NOT, AND, OR 순으로 논리 연산 우선순위가 적용된다.

  12. 문제 12

    4지선다

    다음 쿼리의 결과로 옳은 것은?

    COL1COL2
    1A
    2B
    3C
    4D
    1A
    2B
    3A
    • 1.

      2, 3

    • 2.

      3, 3

    • 3.

      3, 4

    • 4.

      4, 4

    정답·해설 보기

    정답

    3

    3, 4

    해설

    정답: 3. COL2가 A인 행은 3건이고, COL1의 서로 다른 값은 1, 2, 3, 4로 4개이다.

    오답 풀이

    • 1번: 첫 번째 결과는 3이고 두 번째 결과는 4이므로 틀리다.
    • 2번: DISTINCT COL1의 개수를 3으로 계산한 오류이다.
    • 3번: COUNT(ALL COL1)=3, COUNT(DISTINCT COL1)=4로 옳다.
    • 4번: COL2='A'인 행을 4건으로 잘못 계산했다.

    보충 개념 COUNT(ALL 컬럼)은 NULL이 아닌 모든 값을 센다. COUNT(DISTINCT 컬럼)은 중복을 제거한 값의 개수를 센다.

  13. 문제 13

    4지선다

    다음 두 테이블에 대해 결과 건수가 가장 많은 조인을 고르시오.

    ID
    1
    2
    3

    ID
    2
    3
    4
    • 1.
    • 2.
    • 3.
    • 4.
    정답·해설 보기

    정답

    4

    해설

    정답: 4. A와 B에 각각만 존재하는 값 1, 4까지 모두 포함하는 FULL OUTER JOIN의 결과 건수가 가장 많다.

    오답 풀이

    • 1번: 공통값 2, 3만 반환하므로 2건이다.
    • 2번: A의 모든 행을 보존하므로 3건이다.
    • 3번: B의 모든 행을 보존하므로 3건이다.
    • 4번: 양쪽의 미매칭 행까지 포함하므로 4건이다.

    보충 개념 INNER JOIN은 교집합, LEFT/RIGHT OUTER JOIN은 한쪽 기준 보존, FULL OUTER JOIN은 양쪽 기준 보존이다.

  14. 문제 14

    4지선다

    다음 중 결과가 다른 것은?

    • 1.

      COL3 >= 200 AND COL4 <= 200

    • 2.

      NOT (200 < COL3 OR 200 > COL4)

    • 3.

      200 BETWEEN COL3 AND COL4

    • 4.

      COL3 <= 200 AND COL4 >= 200

    정답·해설 보기

    정답

    1

    COL3 >= 200 AND COL4 <= 200

    해설

    정답: 1. 3번과 4번은 200이 COL3 이상 COL4 이하 범위에 포함되는 조건이고, 2번도 드모르간 법칙을 적용하면 같은 의미가 된다. 1번은 COL3이 200 이상이고 COL4가 200 이하인 반대 방향 조건이다.

    오답 풀이

    • 1번: COL3 >= 200 AND COL4 <= 200은 다른 보기들과 범위 비교 방향이 반대이다.
    • 2번: NOT (200 < COL3 OR 200 > COL4)는 200 >= COL3 AND 200 <= COL4로 변환된다.
    • 3번: 200 BETWEEN COL3 AND COL4는 COL3 <= 200 AND 200 <= COL4와 같다.
    • 4번: COL3 <= 200 AND COL4 >= 200은 3번과 같은 의미이다.

    보충 개념 BETWEEN A AND B는 하한과 상한을 포함한다. NOT과 OR가 함께 사용된 조건은 드모르간 법칙으로 AND 조건으로 바꿔 해석할 수 있다.

  15. 문제 15

    4지선다

    다음 중 결과로 옳은 것은?

    COL1COL2
    110
    120
    230
    340
    350
    • 1.

      10

    • 2.

      20

    • 3.

      40

    • 4.

      60

    정답·해설 보기

    정답

    2

    20

    해설

    정답: 2. COL1 기준 DENSE_RANK FIRST는 COL1이 가장 작은 1인 행들을 선택하고, 그중 COL2의 최댓값은 20이다.

    오답 풀이

    • 1번: COL1=1인 행 중 최솟값 10을 선택한 오류이다.
    • 2번: COL1이 가장 작은 그룹의 COL2 최댓값이므로 옳다.
    • 3번: COL1=3 그룹의 값으로 FIRST 조건에 맞지 않는다.
    • 4번: 존재하지 않는 계산 결과이다.

    보충 개념 KEEP(DENSE_RANK FIRST ORDER BY 컬럼)은 정렬 기준으로 첫 번째 순위 그룹을 대상으로 집계한다. 이후 MAX, MIN 같은 집계 함수가 해당 그룹에 적용된다.

  16. 문제 16

    4지선다

    다음 쿼리 문의 실행 결과로 옳은 것은?

    • 1.

      S

    • 2.

      SQL

    • 3.

      NULL

    • 4.

      오류가 발생한다.

    정답·해설 보기

    정답

    1

    S

    해설

    정답: 1. COALESCE 함수는 인자 중 첫 번째로 NULL이 아닌 값을 반환하므로 'S'가 반환된다.

    오답 풀이

    • 1번: 첫 번째 NULL이 아닌 값이 'S'이므로 옳다.
    • 2번: COALESCE는 문자열을 이어 붙이는 함수가 아니다.
    • 3번: NULL이 아닌 값이 존재하므로 NULL이 반환되지 않는다.
    • 4번: 함수명이 COALESCE로 정상 작성되었다면 오류가 발생하지 않는다.

    보충 개념 COALESCE(expr1, expr2, ...)는 왼쪽부터 평가하여 첫 번째 NULL이 아닌 값을 반환한다. 모든 인자가 NULL이면 NULL을 반환한다.

  17. 문제 17

    4지선다

    함수의 실행 결과로 옳은 것은?

    • 1.

      9, 9, 9

    • 2.

      10, 9, 9

    • 3.

      9, 9, 10

    • 4.

      10, 10, 9

    정답·해설 보기

    정답

    2

    10, 9, 9

    해설

    정답: 2. CEIL(9.36)은 10, ROUND(9.48)은 9, FLOOR(9.72)는 9이다.

    오답 풀이

    • 1번: CEIL 결과를 9로 계산한 오류이다.
    • 2번: 올림, 반올림, 내림 결과가 모두 맞다.
    • 3번: CEIL과 FLOOR 결과가 잘못되었다.
    • 4번: ROUND(9.48)은 소수 첫째 자리 기준으로 9가 된다.

    보충 개념 CEIL은 주어진 수보다 크거나 같은 최소 정수를 반환한다. FLOOR는 작거나 같은 최대 정수를 반환하고, ROUND는 지정 자리 기준으로 반올림한다.

  18. 문제 18

    4지선다

    업체 테이블의 물품 컬럼에는 'p'가 30건, 'q'가 40건, 'r'이 50건 저장되어 있다(총 120건, NULL 없음). 다음 두 쿼리의 실행 결과로 옳은 것은?

    • 1.

      3, 0

    • 2.

      3, 30

    • 3.

      3, 오류가 발생한다.

    • 4.

      3, NULL

    정답·해설 보기

    정답

    2

    3, 30

    해설

    정답: 2. 물품의 서로 다른 값은 p, q, r 3개이므로 COUNT(DISTINCT 물품)=3이다. IN ('p', NULL)은 물품='p'인 행만 TRUE가 되고(NULL과의 비교는 UNKNOWN이라 무시됨), 'p'는 30건이므로 COUNT(*)=30이다.

    오답 풀이

    • 1번: 'p'에 일치하는 행이 30건 존재하므로 0이 아니다.
    • 2번: DISTINCT 물품 3개, 'p'인 행 30건으로 옳다.
    • 3번: IN 목록에 NULL이 있어도 문법 오류는 아니다.
    • 4번: COUNT(*)는 조건을 만족하는 행 수를 반환하며 NULL을 반환하지 않는다.
  19. 문제 19

    4지선다

    교집합으로 옳은 것은?

    • 1.

      UNION

    • 2.

      INTERSECT

    • 3.

      MINUS

    • 4.

      EXCEPT

    정답·해설 보기

    정답

    2

    INTERSECT

    해설

    정답: 2. INTERSECT는 두 SELECT 결과의 공통 부분, 즉 교집합을 반환한다.

    오답 풀이

    • 1번: UNION은 합집합을 반환한다.
    • 2번: INTERSECT는 교집합을 반환한다.
    • 3번: MINUS는 차집합을 반환한다.
    • 4번: EXCEPT는 일부 DBMS에서 차집합을 의미한다.

    보충 개념 집합 연산자는 SELECT 결과 집합 간의 연산을 수행한다. UNION은 중복 제거 합집합, UNION ALL은 중복 포함 합집합, INTERSECT는 교집합, MINUS/EXCEPT는 차집합이다.

  20. 문제 20

    4지선다

    TRUNCATE에 관한 설명으로 옳은 것은?

    • 1.

      데이터 구조와 데이터를 모두 삭제한다.

    • 2.

      조건을 지정하여 일부 행만 삭제할 수 있다.

    • 3.

      특정 행만 삭제하는 것은 불가능하다.

    • 4.

      모든 행을 제거할 경우 DELETE보다 성능이 떨어진다.

    정답·해설 보기

    정답

    3

    특정 행만 삭제하는 것은 불가능하다.

    해설

    정답: 3. TRUNCATE는 테이블의 전체 데이터를 제거하는 명령으로 특정 행만 조건 지정하여 삭제할 수 없다.

    오답 풀이

    • 1번: 데이터 구조까지 삭제하는 것은 DROP에 가깝다. TRUNCATE는 테이블 구조를 유지한다.
    • 2번: TRUNCATE는 WHERE 조건을 사용할 수 없다.
    • 3번: 특정 행만 삭제할 수 없으므로 옳다.
    • 4번: 전체 행 제거 시 일반적으로 DELETE보다 빠르다.

    보충 개념 DELETE는 조건을 사용해 일부 행을 삭제할 수 있고 DML에 해당한다. TRUNCATE는 전체 데이터를 빠르게 제거하며 테이블 구조는 남긴다.

  21. 문제 21

    4지선다

    주어진 결과를 보고 빈칸에 들어갈 쿼리로 알맞은 것은?

    COL1COL2
    1Smith
    2Charlie
    3Alice
    4NULL

    <결과>

    COUNT(*)
    4
    • 1.

      FROM EMP WHERE COL2 LIKE '%*%'

    • 2.

      FROM EMP

    • 3.

      FROM EMP WHERE COL2 LIKE '%*'

    • 4.

      FROM EMP WHERE COL2 LIKE '*%'

    정답·해설 보기

    정답

    2

    FROM EMP

    해설

    정답: 2. 전체 행 수는 NULL을 포함하여 4건이므로 WHERE 조건 없이 FROM EMP만 사용해야 COUNT(*) 결과가 4가 된다.

    오답 풀이

    • 1번: SQL의 LIKE에서 와일드카드는 '%'(임의 길이)와 '_'(한 문자)뿐이며 ''는 특별한 의미 없는 일반 문자다. LIKE '%%'는 값에 '*' 문자가 들어간 행만 찾는데 그런 행이 없어 0건이므로 4가 아니다.
    • 2번: WHERE 조건이 없어 COUNT(*)가 전체 4행을 센다.
    • 3번: LIKE '%'는 ''로 끝나는 값만 찾고 NULL 행도 제외되어 4가 아니다.
    • 4번: LIKE '%'는 ''로 시작하는 값만 찾고 NULL 행도 제외되어 4가 아니다.

    보충 개념 COUNT()는 NULL 여부와 무관하게 행을 센다. 반면 WHERE의 LIKE 비교는 대상 값이 NULL이면 UNKNOWN이 되어 결과에서 제외된다. SQL LIKE의 와일드카드는 '%'와 '_'뿐이며 ''는 일반 문자로 취급된다.

  22. 문제 22

    4지선다

    칼럼 값이 NULL일 때, 다음 중 반환 결과가 다른 것은?

    • 1.

      CASE 칼럼 WHEN NULL THEN -1 ELSE 0 END

    • 2.

      CASE WHEN 칼럼 IS NULL THEN -1 ELSE 0 END

    • 3.

      DECODE(칼럼, NULL, -1, 0)

    • 4.

      NVL2(칼럼,0,-1)

    정답·해설 보기

    정답

    1

    CASE 칼럼 WHEN NULL THEN -1 ELSE 0 END

    해설

    정답: ①

    해설: 칼럼 값이 NULL일 때 각 보기의 반환 결과는 다음과 같다.

    ① CASE 칼럼 WHEN NULL THEN -1 ELSE 0 END → 0 ② CASE WHEN 칼럼 IS NULL THEN -1 ELSE 0 END → -1 ③ DECODE(칼럼, NULL, -1, 0) → -1 ④ NVL2(칼럼, 0, -1) → -1

    ①은 단순 CASE문(Simple CASE)으로, CASE 칼럼 WHEN NULL은 내부적으로 칼럼 = NULL 비교처럼 동작한다. SQL에서 NULL = NULL은 TRUE가 아니라 UNKNOWN이므로 WHEN 절이 참이 되지 않아 THEN(-1)이 실행되지 않고 ELSE(0)이 반환된다. 따라서 칼럼 값이 NULL이어도 0을 반환한다.

    반면 ②~④는 모두 NULL일 때 -1을 반환한다. ② IS NULL은 NULL을 직접 판별하고, ③ Oracle DECODE는 일반 비교와 달리 NULL끼리를 같은 값으로 취급하며, ④ NVL2(칼럼, 0, -1)은 칼럼이 NULL이면 세 번째 인수인 -1을 반환한다.

    핵심은 일반적인 NULL 판별에는 = 비교가 아니라 IS NULL을 사용해야 한다는 점이다. ①처럼 단순 CASE에서 WHEN NULL로 비교하면 NULL을 판별하지 못한다. 따라서 칼럼 값이 NULL인 경우에도 THEN(-1)이 실행되지 않고 ELSE(0)이 반환되어, NULL일 때 -1을 반환하는 ②③④와 결과가 달라진다.

  23. 문제 23

    4지선다

    셀프조인을 수행할 수 있는 경우로 설명으로 옳은 것은?

    • 1.

      두 테이블 내에 칼럼이 연관관계가 있는 경우

    • 2.

      두 테이블 내에 연관관계는 없지만 Join이 필요할 때

    • 3.

      한 테이블 내에 칼럼이 연관관계가 있는 경우

    • 4.

      한 테이블 내에 연관관계는 없지만 Join이 필요할 때

    정답·해설 보기

    정답

    3

    한 테이블 내에 칼럼이 연관관계가 있는 경우

    해설

    정답: 3. 셀프조인은 하나의 테이블을 서로 다른 별칭으로 두 번 참조하여 같은 테이블 내부의 연관관계를 조인하는 방식이다.

    오답 풀이

    • 1번: 두 테이블 간 조인은 일반 조인이다.
    • 2번: 두 테이블 간 관계가 없으면 조인 조건이 부적절할 수 있다.
    • 3번: 한 테이블 내부의 계층, 관리자-사원 관계 등에서 셀프조인을 수행한다.
    • 4번: 연관관계가 없는 칼럼을 조인하는 것은 셀프조인의 본질적 목적이 아니다.

    보충 개념 셀프조인은 사원 테이블의 사원번호와 관리자번호처럼 같은 테이블 내 컬럼 간 관계가 있을 때 사용한다. 반드시 테이블 별칭을 다르게 부여해야 한다.

  24. 문제 24

    4지선다

    TAB1의 쿼리문 수행 결과로 옳은 것은?

    COL1
    a
    b
    c
    • 1.

      NULL, NULL

    • 2.

      NULL, 공집합

    • 3.

      공집합, NULL

    • 4.

      공집합, 공집합

    정답·해설 보기

    정답

    3

    공집합, NULL

    해설

    정답: 3. 일반 SELECT는 조건을 만족하는 행이 없으면 공집합을 반환하고, 집계 함수 MAX는 대상 행이 없어도 한 행의 NULL을 반환한다.

    오답 풀이

    • 1번: 첫 번째 SELECT는 NULL 한 행이 아니라 공집합이다.
    • 2번: 두 번째 MAX 결과가 공집합이 아니라 NULL이다.
    • 3번: 공집합, NULL이 옳다.
    • 4번: 집계 함수는 조건에 맞는 행이 없어도 결과 행을 반환한다.

    보충 개념 집계 함수는 GROUP BY가 없을 때 전체 결과 집합에 대해 하나의 결과를 반환한다. 대상 행이 없으면 COUNT는 0, MAX/MIN/SUM/AVG는 NULL을 반환한다.

  25. 문제 25

    4지선다

    함수의 실행 결과로 옳은 것은?

    • 1.

      aaa

    • 2.

      aaaa

    • 3.

      ab

    • 4.

      aab

    정답·해설 보기

    정답

    2

    aaaa

    해설

    정답: 2. 정규식 a{2,4}는 a가 2회 이상 4회 이하 반복되는 패턴을 의미하며, 기본적으로 가능한 가장 긴 매칭인 aaaa를 반환한다.

    오답 풀이

    • 1번: aaa도 패턴 범위에는 맞지만 기본 매칭 결과는 더 긴 aaaa이다.
    • 2번: a가 4개 반복된 문자열이 반환되므로 옳다.
    • 3번: b는 정규식 패턴에 포함되지 않는다.
    • 4번: b는 정규식 패턴에 포함되지 않는다.

    보충 개념 REGEXP_SUBSTR은 문자열에서 정규식과 일치하는 부분 문자열을 반환한다. {m,n}은 앞의 문자가 m회 이상 n회 이하 반복됨을 의미한다.

  26. 문제 26

    4지선다

    다음 중 중복을 제거한 합집합을 반환하는 집합 연산자는?

    • 1.

      UNION

    • 2.

      UNION ALL

    • 3.

      INTERSECT

    • 4.

      MINUS

    정답·해설 보기

    정답

    1

    UNION

    해설

    정답: 1. UNION은 두 SELECT 결과를 합치면서 중복 행을 제거한다.

    오답 풀이

    • 1번: 중복 제거한 합집합이다.
    • 2번: 중복을 제거하지 않는 합집합이다.
    • 3번: 교집합을 반환한다.
    • 4번: 차집합을 반환한다.

    보충 개념 집합 연산자는 컬럼 수와 대응 데이터 타입이 맞아야 사용할 수 있다. 중복 제거 여부는 UNION과 UNION ALL의 핵심 차이이다.

  27. 문제 27

    4지선다

    급여가 2000 이상인 사원 중 부서별 급여의 합계 금액이 높은 순으로 정렬하려고 할 때 아래 쿼리에서 고쳐야 할 부분은?

    EMP_IDDEPT_NAMESALARY
    101HR2500
    102IT3000
    103IT2200
    104Sales1800
    105Sales2200
    106HR2000

    <결과>

    DEPT_NAMESUM(SALARY)
    IT5200
    HR4500
    Sales4000
    • 1.

      (가)

    • 2.

      (나)

    • 3.

      (다)

    • 4.

      (라)

    정답·해설 보기

    정답

    4

    (라)

    해설

    정답: 4. 합계 금액이 높은 순으로 정렬하려면 ORDER BY SUM(SALARY) DESC로 작성해야 한다.

    오답 풀이

    • 1번: SELECT 절의 부서명과 급여 합계는 적절하다.
    • 2번: 급여 2000 이상 조건은 WHERE 절에 위치하는 것이 적절하다.
    • 3번: 부서별 합계를 구하려면 GROUP BY DEPT_NAME이 필요하다.
    • 4번: 높은 순 정렬이므로 DESC가 누락된 ORDER BY 부분을 고쳐야 한다.

    보충 개념 ORDER BY의 기본 정렬은 오름차순이다. 큰 값부터 정렬하려면 DESC를 명시해야 한다.

  28. 문제 28

    4지선다

    ROLLBACK에 관한 설명으로 옳지 않은 것은?

    • 1.

      ROLLBACK은 트랜잭션의 변경 내용을 취소할 수 있다.

    • 2.

      SAVEPOINT를 지정하면 특정 저장점까지 롤백할 수 있다.

    • 3.

      COMMIT 이전으로 롤백할 수 있다.

    • 4.

      COMMIT이 완료된 변경 사항도 일반적으로 ROLLBACK으로 취소할 수 있다.

    정답·해설 보기

    정답

    4

    COMMIT이 완료된 변경 사항도 일반적으로 ROLLBACK으로 취소할 수 있다.

    해설

    정답: 4. COMMIT이 완료된 변경 사항은 일반적인 ROLLBACK으로 되돌릴 수 없다.

    오답 풀이

    • 1번: ROLLBACK은 아직 커밋되지 않은 변경 내용을 취소한다.
    • 2번: SAVEPOINT를 사용하면 트랜잭션 일부만 되돌릴 수 있다.
    • 3번: COMMIT 전이라면 ROLLBACK으로 변경을 취소할 수 있다.
    • 4번: COMMIT 후에는 트랜잭션이 확정되므로 일반 ROLLBACK 대상이 아니다.

    보충 개념 COMMIT은 트랜잭션의 변경 사항을 영구 반영한다. ROLLBACK은 커밋 전 변경 사항을 취소하거나 SAVEPOINT 지점까지 되돌릴 때 사용한다.

  29. 문제 29

    4지선다

    SQL문의 논리적 연산 순서로 옳은 것은?

    • 1.
    • 2.

      WHERE - FROM - HAVING - GROUP BY - SELECT - ORDER BY

    • 3.

      FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY

    • 4.

      FROM - WHERE - HAVING - GROUP BY - SELECT - ORDER BY

    정답·해설 보기

    정답

    3

    FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY

    해설

    정답: 3. SQL의 논리적 처리 순서는 FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY 순서이다.

    오답 풀이

    • 1번: SELECT가 FROM보다 먼저 처리된다고 보아 틀렸다.
    • 2번: WHERE가 FROM보다 먼저 올 수 없고 GROUP BY와 HAVING 순서도 잘못되었다.
    • 3번: 논리적 처리 순서가 올바르다.
    • 4번: HAVING은 GROUP BY 이후 그룹에 대해 적용된다.

    보충 개념 SQL 작성 순서와 논리적 실행 순서는 다르다. SELECT 별칭을 WHERE에서 사용할 수 없는 이유도 WHERE가 SELECT보다 먼저 처리되기 때문이다.

  30. 문제 30

    4지선다

    다음 빈칸에 들어갈 함수로 옳은 것은?

    NAMESALARY
    Alice5000
    Bob7000
    Charlie3000
    David6000
    Smith7000

    <결과>

    NAMESALARYRANKING
    Bob70001
    Smith70001
    David60002
    Alice50003
    Charlie30004
    • 1.

      DENSE_RANK()

    • 2.

      RANK()

    • 3.

      PERCENT_RANK()

    • 4.

      ROW_NUMBER()

    정답·해설 보기

    정답

    1

    DENSE_RANK()

    해설

    정답: 1. 동점자에게 같은 순위를 부여하고 다음 순위를 건너뛰지 않으므로 DENSE_RANK()가 적절하다.

    오답 풀이

    • 1번: 1, 1, 2, 3, 4 형태로 순위가 부여되므로 옳다.
    • 2번: RANK()라면 1, 1 다음 순위가 3이 된다.
    • 3번: PERCENT_RANK()는 상대 순위를 0~1 사이 값으로 계산한다.
    • 4번: ROW_NUMBER()는 동점자에게도 서로 다른 번호를 부여한다.

    보충 개념 RANK는 동점 이후 순위를 건너뛰고, DENSE_RANK는 건너뛰지 않는다. ROW_NUMBER는 정렬 결과의 행 번호를 고유하게 부여한다.

  31. 문제 31

    4지선다

    트랜잭션의 모든 작업이 성공적으로 완료되거나 전혀 수행되지 않아야 하는 특징은?

    • 1.

      원자성

    • 2.

      고립성

    • 3.

      일관성

    • 4.

      지속성

    정답·해설 보기

    정답

    1

    원자성

    해설

    정답: 1. 원자성은 트랜잭션의 작업이 모두 수행되거나 모두 수행되지 않아야 한다는 특성이다.

    오답 풀이

    • 1번: All or Nothing을 의미하므로 옳다.
    • 2번: 고립성은 동시에 실행되는 트랜잭션들이 서로 간섭하지 않아야 한다는 특성이다.
    • 3번: 일관성은 트랜잭션 수행 전후 데이터베이스가 일관된 상태여야 한다는 특성이다.
    • 4번: 지속성은 커밋된 결과가 영구적으로 보존되어야 한다는 특성이다.

    보충 개념 트랜잭션의 ACID 특성은 원자성, 일관성, 고립성, 지속성이다. 데이터베이스의 신뢰성을 보장하는 핵심 개념이다.

  32. 문제 32

    4지선다

    두 테이블의 데이터가 아래와 같을 때 결과 값(반환된 행의 COL2 합)으로 옳은 것은?

    COL1COL2
    A10
    B20
    C30

    COL1COL2
    A20
    B20
    CNULL
    • 1.

      0

    • 2.

      10

    • 3.

      20

    • 4.

      40

    정답·해설 보기

    정답

    2

    10

    해설

    다중 컬럼 NOT IN은 후보 행과의 행 단위 동등 비교의 OR를 부정한 것으로, 단일 컬럼과 동작이 다르다.

    (A, 10): (C,NULL)과 비교 시 첫 컬럼 A=C가 FALSE이므로 'FALSE AND UNKNOWN = FALSE'로 확정 → 세 비교 모두 FALSE → NOT IN이 TRUE → 반환 (B, 20): (B,20)과 정확히 일치 → IN이 TRUE → 제외 (C, 30): (C,NULL)과 비교 시 C=C가 TRUE라서 'TRUE AND UNKNOWN = UNKNOWN' → NOT IN이 UNKNOWN → 제외

    따라서 결과는 (A, 10) 한 건뿐이고 COL2 합은 10이다. 'NULL이 있으면 NOT IN은 무조건 0건'이라는 함정은 첫 컬럼이 일치하는 행에만 적용된다. 오답 풀이

    ①: 0은 '단일 컬럼 NOT IN + NULL은 항상 0건'이라는 함정을 다중 컬럼에 잘못 적용한 오답. 첫 컬럼이 불일치하는 (A,10)은 정상 반환된다. ③: 20은 (B,20)이 반환된다는 잘못된 가정의 값. (B,20)은 일치하여 제외된다. ④: 40은 (A,10)+(C,30) 두 행이 모두 반환된다는 가정의 값이나, (C,30)은 UNKNOWN으로 제외된다.

  33. 문제 33

    4지선다

    주어진 쿼리문과 결과가 동일한 것은?

    • 1.
    • 2.
    • 3.
    • 4.

      UPDATE TAB1 SET COL1 = NULL;

    정답·해설 보기

    정답

    4

    UPDATE TAB1 SET COL1 = NULL;

    해설

    정답: 4. MAX(NULL)은 결과적으로 NULL을 반환하므로 각 행의 COL1은 NULL로 갱신된다.

    오답 풀이

    • 1번: MAX(COL2)는 실제 값의 최댓값을 반환할 수 있어 원문과 다르다.
    • 2번: COALESCE로 NULL을 0으로 바꾸므로 원문과 다르다.
    • 3번: MAX(0)은 조건에 맞는 행이 있으면 0을 반환하므로 원문과 다르다.
    • 4번: 원문은 결과적으로 COL1을 NULL로 갱신하므로 동일하다.

    보충 개념 집계 함수 MAX는 모든 입력이 NULL이면 NULL을 반환한다. 스칼라 서브쿼리 결과가 NULL이면 UPDATE 대상 컬럼도 NULL로 설정될 수 있다.

  34. 문제 34

    4지선다

    사원의 관리자와 차상위관리자를 함께 출력하는 쿼리문으로 옳은 것은?

    • 1.

      사원 A LEFT OUTER JOIN 관리자 B ON A.MGR_ID = B.EMP_ID LEFT OUTER JOIN 차상위관리자 C ON B.MGR_ID = C.EMP_ID

    • 2.

      사원 A LEFT OUTER JOIN 관리자 B ON A.EMP_ID = B.EMP_ID LEFT OUTER JOIN 차상위관리자 C ON A.MGR_ID = C.MGR_ID

    • 3.

      사원 A LEFT OUTER JOIN 관리자 B ON A.EMP_ID = B.MGR_ID LEFT OUTER JOIN 차상위관리자 C ON B.EMP_ID = C.MGR_ID

    • 4.

      사원 A LEFT OUTER JOIN 관리자 B ON A.EMP_ID = B.EMP_ID LEFT OUTER JOIN 차상위관리자 C ON B.EMP_ID = C.EMP_ID

    정답·해설 보기

    정답

    1

    사원 A LEFT OUTER JOIN 관리자 B ON A.MGR_ID = B.EMP_ID LEFT OUTER JOIN 차상위관리자 C ON B.MGR_ID = C.EMP_ID

    해설

    정답: 1. 사원의 관리자 정보를 찾으려면 A.MGR_ID = B.EMP_ID로 조인하고, 관리자의 상위 관리자는 B.MGR_ID = C.EMP_ID로 다시 조인해야 한다.

    오답 풀이

    • 1번: 사원→관리자→차상위관리자 관계를 올바르게 따라간다.
    • 2번: 사원번호와 관리자 사원번호를 같은 값으로 비교해 관리자 관계를 찾지 못한다.
    • 3번: A.EMP_ID = B.MGR_ID는 사원의 부하 직원을 찾는 방향이다.
    • 4번: 동일 사원번호끼리 조인하므로 관리자 계층을 표현하지 못한다.

    보충 개념 조직도처럼 한 테이블 안에서 계층 관계를 표현할 때 셀프조인을 사용한다. 사원번호와 관리자번호의 방향을 정확히 구분해야 한다.

  35. 문제 35

    4지선다

    테이블 데이터가 각각 10개 있을 때 수행 결과는?

    • 1.

      10

    • 2.

      20

    • 3.

      100

    • 4.

      오류가 발생한다.

    정답·해설 보기

    정답

    3

    100

    해설

    정답: 3. 조인 조건 없이 두 테이블을 FROM 절에 나열하면 Cartesian Product가 발생하여 10 × 10 = 100건이 된다.

    오답 풀이

    • 1번: 한 테이블의 행 수만 계산한 오류이다.
    • 2번: 두 테이블 행 수를 단순히 더한 오류이다.
    • 3번: 조인 조건이 없으므로 모든 조합의 수 100이 맞다.
    • 4번: 문법적으로 오류가 발생하지 않는다.

    보충 개념 Cartesian Product는 두 테이블의 모든 행 조합을 생성한다. 실무에서는 의도하지 않은 대량 결과를 막기 위해 조인 조건을 명확히 작성해야 한다.

  36. 문제 36

    4지선다

    주어진 테이블에 대해 쿼리를 수행한 결과의 행 수(건수)로 옳은 것은?

    IDCUSTOMER
    1A
    2B
    3C

    C_IDPHONE
    A111-1111
    A222-2222
    B333-3333
    C444-4444
    D555-5555
    • 1.

      0

    • 2.

      3

    • 3.

      5

    • 4.

      15

    정답·해설 보기

    정답

    4

    15

    해설

    정답: 4. NATURAL JOIN은 이름이 같은 컬럼을 기준으로 조인하는데, 두 테이블에는 이름이 같은 컬럼이 없으므로 Cartesian Product처럼 3×5=15건이 반환된다.

    오답 풀이

    • 1번: 공통 컬럼이 없다고 해서 항상 0건이 되는 것은 아니다.
    • 2번: CUSTOMER와 C_ID는 값은 대응되지만 컬럼명이 다르므로 NATURAL JOIN 기준이 아니다.
    • 3번: TAB2의 행 수만 반환되는 것이 아니다.
    • 4번: 공통 컬럼이 없어 모든 조합이 생성되므로 15건이다.

    보충 개념 NATURAL JOIN은 동일한 이름의 컬럼을 자동으로 조인 조건으로 사용한다. 컬럼명이 다르면 의미상 같은 값이어도 조인 조건으로 사용되지 않는다.

  37. 문제 37

    4지선다

    주어진 결과를 출력하는 쿼리로 옳은 것은?

    COL1COL2
    A10
    A20
    B20
    C30

    <결과>

    COUNT()
    2
    • 1.
    • 2.
    • 3.
    • 4.
    정답·해설 보기

    정답

    1

    해설

    정답: 1. COL2 <= 20인 행의 COL1은 A, A, B이고, DISTINCT COL1의 개수는 A와 B로 2개이다.

    오답 풀이

    • 1번: 중복을 제거한 COL1 개수가 2이므로 옳다.
    • 2번: 조건에 맞는 행 수는 3건이다.
    • 3번: GROUP BY COL1로 인해 A 그룹 2, B 그룹 1처럼 여러 행이 나올 수 있다.
    • 4번: GROUP BY COL1로 인해 단일 결과 2만 반환된다고 보기 어렵다.

    보충 개념 COUNT(DISTINCT 컬럼)은 중복을 제거한 값의 개수를 센다. GROUP BY를 사용하면 그룹별 결과가 반환되므로 단일 집계 결과와 다를 수 있다.

  38. 문제 38

    4지선다

    제약조건에 관한 설명으로 옳은 것은?

    • 1.

      기본키는 한 칼럼에 하나의 속성만 가질 수 있다.

    • 2.

      외래키는 한 칼럼에 여러 개의 속성을 가질 수 있다.

    • 3.

      UNIQUE는 NULL을 허용하지 않는다.

    • 4.

      기본키는 UNIQUE와 NOT NULL 조건을 모두 만족해야 한다.

    정답·해설 보기

    정답

    4

    기본키는 UNIQUE와 NOT NULL 조건을 모두 만족해야 한다.

    해설

    정답: 4. 기본키는 각 행을 유일하게 식별해야 하므로 중복될 수 없고 NULL도 허용하지 않는다.

    오답 풀이

    • 1번: 기본키는 단일 컬럼뿐 아니라 여러 컬럼으로 구성된 복합키도 가능하다.
    • 2번: 외래키는 참조 무결성을 위한 제약조건이며 '여러 개의 속성을 가진다'는 설명은 부정확하다.
    • 3번: UNIQUE 제약조건은 DBMS에 따라 NULL을 허용할 수 있으며, SQLD 관점에서는 기본키와 달리 NULL 허용 가능성을 구분한다.
    • 4번: 기본키는 UNIQUE와 NOT NULL 성격을 모두 가진다.

    보충 개념 기본키는 엔터티의 각 인스턴스를 식별하는 핵심 제약조건이다. UNIQUE는 중복 방지 제약이지만 기본키와 달리 NULL 처리에서 차이가 있다.

  39. 문제 39

    4지선다

    다음 중 주어진 문자열 내에서 특정 패턴이 시작되는 위치를 정수로 반환하는 함수는?

    • 1.

      REGEXP_COUNT

    • 2.

      REGEXP_LIKE

    • 3.

      REGEXP_REPLACE

    • 4.

      REGEXP_INSTR

    정답·해설 보기

    정답

    4

    REGEXP_INSTR

    해설

    정답: 4. REGEXP_INSTR은 정규식 패턴이 문자열에서 나타나는 시작 위치를 반환한다.

    오답 풀이

    • 1번: REGEXP_COUNT는 패턴의 출현 횟수를 반환한다.
    • 2번: REGEXP_LIKE는 패턴 일치 여부를 조건식으로 판단한다.
    • 3번: REGEXP_REPLACE는 패턴과 일치하는 부분을 치환한다.
    • 4번: REGEXP_INSTR은 패턴의 위치를 정수로 반환한다.

    보충 개념 Oracle 정규식 함수에는 REGEXP_LIKE, REGEXP_REPLACE, REGEXP_SUBSTR, REGEXP_INSTR, REGEXP_COUNT 등이 있다. 각각 일치 판단, 치환, 추출, 위치 반환, 개수 반환 역할을 한다.

  40. 문제 40

    4지선다

    다음 SQL의 실행 결과로 옳은 것은?

    NAMETEAMHEIGHT
    PARKTigers190
    KIMBears180
    LEETigersNULL
    • 1.

      PARK

    • 2.

      PARK, KIM

    • 3.

      PARK, LEE

    • 4.

      PARK, KIM, LEE

    정답·해설 보기

    정답

    1

    PARK

    해설

    정답: 1. TEAM이 Tigers이면서 HEIGHT가 185보다 큰 행은 PARK뿐이다.

    오답 풀이

    • 1번: 조건을 모두 만족하는 유일한 행이다.
    • 2번: KIM은 TEAM 조건을 만족하지 않는다.
    • 3번: LEE는 HEIGHT가 NULL이므로 > 185 조건을 만족하지 않는다.
    • 4번: KIM과 LEE 모두 제외된다.

    보충 개념 비교 연산에서 NULL은 TRUE가 아니라 UNKNOWN으로 처리되므로 WHERE 절에서 제외된다.

  41. 문제 41

    4지선다

    다음 SQL의 실행 결과로 옳은 것은?

    BONUSSALARY
    10003000
    10002500
    NULL4000
    • 1.

      1000, 2000

    • 2.

      1000, 3000

    • 3.

      1000, 2500

    • 4.

      NULL, 2500

    정답·해설 보기

    정답

    3

    1000, 2500

    해설

    정답: 3. AVG(BONUS)는 NULL을 제외하고 (1000 + 1000) / 2 = 1000이고, MIN(SALARY)는 2500이다.

    오답 풀이

    • 1번: SALARY 최솟값이 2000이 아니다.
    • 2번: MIN(SALARY)는 3000이 아니라 2500이다.
    • 3번: AVG와 MIN 계산이 모두 맞다.
    • 4번: AVG는 집계 대상에 NULL이 일부 포함되어도 전체 결과가 NULL이 되지 않는다.

    보충 개념 AVG, MIN, MAX, SUM 등 대부분의 집계 함수는 NULL을 제외하고 계산한다.

  42. 문제 42

    4지선다

    다음 쿼리에 대한 설명 중 옳은 것은?

    • 1.

      2등급 이상의 사원을 모두 출력한다.

    • 2.

      부서에 소속되지 않은 사원은 제외한다.

    • 3.

      모든 부서와 모든 사원을 조건 없이 출력한다.

    • 4.

      등급 조건은 조인 결과에 영향을 주지 않는다.

    정답·해설 보기

    정답

    2

    부서에 소속되지 않은 사원은 제외한다.

    해설

    정답: 2. INNER JOIN 조건을 만족하지 못하는 사원은 결과에서 제외되므로, 부서ID가 매칭되지 않는 사원은 출력되지 않는다.

    오답 풀이

    • 1번: 등급 조건을 만족해도 부서와 매칭되지 않으면 제외된다.
    • 2번: 조인 조건을 만족하지 못하면 출력되지 않는다.
    • 3번: 조인 조건이 있으므로 카테시안 곱이 아니다.
    • 4번: 사원.등급 >= 2 조건은 결과 행 수에 직접 영향을 준다.

    보충 개념 INNER JOIN의 ON 조건은 조인 대상 행을 제한한다. WHERE 절에 있든 ON 절에 있든 논리적으로 결과를 줄이는 조건이 될 수 있다.

  43. 문제 43

    4지선다

    키가 180 초과인 농구선수를 구하는 문제

    • 1.

      키 조건 없이 모든 농구선수를 조회하는 쿼리

    • 2.

      WHERE 키 < 180 조건을 사용하는 쿼리

    • 3.

      WHERE 키 > 180 조건을 사용하는 쿼리

    • 4.

      GROUP BY 키 조건만 사용하는 쿼리

    정답·해설 보기

    정답

    3

    WHERE 키 > 180 조건을 사용하는 쿼리

    해설

    정답: 3. '180 초과'는 > 180 조건으로 표현해야 한다.

    오답 풀이

    • 1번: 키 조건이 없으면 원하는 대상만 조회할 수 없다.
    • 2번: 180보다 작은 선수를 조회하므로 반대 조건이다.
    • 3번: 180 초과 조건을 정확히 표현한다.
    • 4번: GROUP BY는 집계용 절이며 행 필터링 조건을 대신할 수 없다.

    보충 개념 '이상'은 >=, '초과'는 >로 표현한다. 지문 표현과 SQL 비교 연산자를 일치시키는 것이 중요하다.

  44. 문제 44

    4지선다

    다음 UPDATE 쿼리의 동작에 대한 설명으로 옳은 것은?

    • 1.

      조건에 맞는 행의 기존 값을 그대로 유지한다.

    • 2.

      팀별 최장신 선수의 팀명과 키로 갱신한다.

    • 3.

      전체 선수 중 최단신 한 명의 값으로만 갱신한다.

    • 4.

      같은 팀에 포지션 'G' 인 선수가 없으면 해당 행의 팀명·키가 NULL 로 갱신된다.

    정답·해설 보기

    정답

    4

    같은 팀에 포지션 'G' 인 선수가 없으면 해당 행의 팀명·키가 NULL 로 갱신된다.

    해설

    정답: 4. 상관 서브쿼리 결과가 없는 행은 UPDATE 대상 컬럼이 NULL로 설정되므로, 조건에 맞는 가드가 없는 팀은 NULL 처리된다.

    오답 풀이

    • 1번: 서브쿼리 결과가 없을 때 기존 값을 유지하지 않는다.
    • 2번: MIN(키)를 사용하므로 최장신이 아니라 최단신 기준이다.
    • 3번: 팀별 상관 조건이 있으므로 전체 최단신 한 명만 구하는 것이 아니다.
    • 4번: 조건에 맞는 값이 없으면 NULL이 들어간다.

    보충 개념 UPDATE의 스칼라 서브쿼리는 행별로 평가된다. 일치하는 결과가 없으면 대상 컬럼이 NULL로 바뀔 수 있다는 점을 주의해야 한다.

  45. 문제 45

    4지선다

    결과 값으로 옳은 것은?

    <매출>

    금액
    300
    500
    NULL
    • 1.

      800

    • 2.

      1600

    • 3.

      2975

    • 4.

      오류가 발생한다.

    정답·해설 보기

    정답

    1

    800

    해설

    정답: 1. NULL을 0으로 바꾼 뒤 합계를 구하므로 300 + 500 + 0 = 800이다.

    오답 풀이

    • 1번: NVL 처리 후 합계가 맞다.
    • 2번: 존재하지 않는 추가 값이 포함된 계산이다.
    • 3번: 데이터와 맞지 않는 결과이다.
    • 4번: NVL과 SUM 조합은 정상적으로 실행 가능하다.

    보충 개념 SUM은 원래 NULL을 제외하지만, NVL을 함께 사용하면 NULL을 특정 값으로 바꿔 집계 기준을 명시할 수 있다.

  46. 문제 46

    4지선다

    다음 중 NULL 값을 찾는 조건으로 옳은 것은?

    • 1.

      COL1 IS NULL

    • 2.

      COL1 = NULL

    • 3.

      COL1 <> NULL

    • 4.

      COL1 IN (NULL)

    정답·해설 보기

    정답

    1

    COL1 IS NULL

    해설

    정답: 1. NULL 비교는 =가 아니라 IS NULL 또는 IS NOT NULL을 사용해야 한다.

    오답 풀이

    • 1번: NULL 판별에 맞는 문법이다.
    • 2번: = NULL은 TRUE가 되지 않는다.
    • 3번: <> NULL도 TRUE가 되지 않는다.
    • 4번: IN (NULL)로는 NULL 값을 찾을 수 없다.

    보충 개념 SQL의 NULL은 값이 아니라 미정 상태이므로 일반 비교 연산자로 판단하지 않는다.

  47. 문제 47

    4지선다

    매출액이 높은 순서대로 직원별 총 매출액을 출력하려고 한다. 아래 SQL 에서 고쳐야 할 부분은?

    EMP_IDAMOUNT
    1013000
    1025000
    1012500
    1034000
    1021500
    • 1.

      (가)

    • 2.

      (나)

    • 3.

      (다)

    • 4.

      (라)

    정답·해설 보기

    정답

    4

    (라)

    해설

    정답: 4. 매출액이 높은 순서대로 정렬하려면 ORDER BY SUM(AMOUNT) DESC 처럼 내림차순을 명시해야 한다. ORDER BY 의 기본 정렬 방향은 ASC(오름차순) 이므로 DESC 를 빼면 매출 합계가 작은 직원부터 출력된다.

    오답 풀이

    • 1번: (가) SELECT 절은 직원 ID 와 매출 합계를 정확히 조회하고 있어 수정할 필요가 없다.
    • 2번: (나) FROM 절의 테이블 지정은 문제 의도와 무관하다.
    • 3번: (다) WHERE 절은 행 필터링 조건이며 정렬 방향과 관련이 없다.
    • 4번: (라) ORDER BY 절에 DESC 가 누락되어 있으므로 ORDER BY SUM(AMOUNT) DESC 로 고쳐야 한다.

    보충 개념 ORDER BY 의 기본값은 ASC(오름차순) 이다. '높은 순서', '큰 값부터' 같은 요구사항은 DESC 를 반드시 명시해야 한다. SELECT 절에서 부여한 별칭을 ORDER BY 에서 그대로 사용할 수도 있다 (예: SELECT SUM(AMOUNT) AS TOTAL … ORDER BY TOTAL DESC).

  48. 문제 48

    4지선다

    아래와 같이 (A, B) 상세 집계, (A) 상위 단계 소계, 전체 합계 () 의 세 그룹 집합만 생성하는 GROUP BY 확장 기능으로 가장 적절한 것은?

    <생성되는 그룹 집합>

    • (A, B) — 상세 집계
    • (A) — 상위 단계 소계
    • () — 전체 합계
    • 1.

      CUBE(A, B)

    • 2.

      ROLLUP(A, B)

    • 3.

      GROUPING SETS((A, B), (B), ())

    • 4.

      GROUPING(A, B)

    정답·해설 보기

    정답

    2

    ROLLUP(A, B)

    해설

    정답: 2. ROLLUP(A, B) 는 지정한 컬럼 순서에 따라 (A, B), (A), () 의 계층적 그룹 집합을 차례로 생성한다.

    오답 풀이

    • 1번: CUBE(A, B) 는 가능한 모든 조합인 (A, B), (A), (B), () 네 그룹을 생성하므로 (B) 가 추가로 포함된다.
    • 2번: ROLLUP(A, B) 의 결과 그룹 집합이 문제의 요구와 정확히 일치한다.
    • 3번: GROUPING SETS((A, B), (B), ()) 는 (A) 가 빠지고 대신 (B) 가 포함되어 요구와 다르다.
    • 4번: GROUPING(A, B) 는 집계 행 여부를 1/0 으로 판별하는 함수이며 그룹 집합을 생성하는 절이 아니다.

    보충 개념 ROLLUP 은 가장 왼쪽 컬럼부터 차례로 묶음을 줄여나가는 계층 집계이므로 (부서, 직무) 별 상세 → (부서) 별 소계 → 전체 합계처럼 상위 단계로 올라가는 리포트에 적합하다. CUBE 는 가능한 모든 조합, GROUPING SETS 는 임의 조합을 직접 명시할 때 사용한다.

  49. 문제 49

    4지선다

    다음 중 (부서, 직무)별 상세 집계와 부서별 소계, 전체 합계를 계층적으로 함께 출력하기에 가장 적절한 것은?

    • 1.

      ROLLUP()

    • 2.

      GROUPING()

    • 3.

      GROUPING SETS()

    • 4.

      CUBE()

    정답·해설 보기

    정답

    1

    ROLLUP()

    해설

    정답: 1. 계층적인 소계와 총계를 순서대로 만들 때는 ROLLUP이 가장 적절하다.

    오답 풀이

    • 1번: (부서, 직무), (부서), () 형태의 계층적 집계를 만들 수 있다.
    • 2번: GROUPING은 집계 행 여부를 판별하는 함수이다.
    • 3번: GROUPING SETS는 원하는 조합을 직접 나열할 때 주로 사용한다.
    • 4번: CUBE는 가능한 모든 조합의 소계를 생성한다.

    보충 개념 ROLLUP(A, B)은 상세 (A, B)와 상위 단계 (A), 전체 합계 ()를 순서대로 생성한다.

  50. 문제 50

    4지선다

    결과 값으로 옳은 것은?

    • 1.

      1

    • 2.

      2

    • 3.

      3

    • 4.

      4

    정답·해설 보기

    정답

    3

    3

    해설

    정답: 3. UPDATE 후 COL2가 1 또는 2인 기존 두 행의 COL1이 4가 되고, DELETE는 SAVEPOINT 2로 롤백되어 취소된다. 이후 (4,1)이 추가되므로 COL1=4인 행은 총 3개이다.

    오답 풀이

    • 1번: UPDATE로 변경된 행과 INSERT 행을 모두 반영하지 않은 결과이다.
    • 2번: UPDATE된 (4,1) 행을 누락한 결과이다.
    • 3번: UPDATE된 2행과 INSERT된 1행을 합쳐 3개이므로 옳다.
    • 4번: COL1=4인 행은 4개가 아니다.

    보충 개념 SAVEPOINT 이후 ROLLBACK TO SAVEPOINT를 수행하면 해당 저장점 이후의 변경만 취소된다. SAVEPOINT 2 이후의 DELETE는 취소되지만, SAVEPOINT 2 이전의 UPDATE는 유지된다.

이번엔 직접 풀어보세요

타이머와 자동 채점이 켜진 실제 시험 환경으로 응시할 수 있습니다.

SQLD 다른 회차 기출 복원

함께 읽으면 좋은 글