SQL 개발자 자격증 2025년 56회차 기출 복원입니다. 각 문제 아래의 「정답·해설 보기」를 펼치면 정답과 해설이 나타나요. 실제 시험 환경(타이머·자동 채점·오답 누적)에서 풀어보고 싶다면 글 맨 아래 「직접 풀러가기」를 눌러주세요.
문제 1
4지선다스키마의 종류로 옳지 않은 것은?
- 1.응용 스키마
- 2.외부 스키마
- 3.개념 스키마
- 4.내부 스키마
정답·해설 보기▾
정답
1번. 응용 스키마
해설
정답: 1. 데이터베이스의 3단계 스키마는 외부 스키마, 개념 스키마, 내부 스키마이다.
오답 풀이
- 1번: 응용 스키마는 3단계 스키마의 표준 분류에 해당하지 않는다.
- 2번: 외부 스키마는 사용자 관점의 데이터베이스 구조이다.
- 3번: 개념 스키마는 조직 전체 관점의 논리적 구조이다.
- 4번: 내부 스키마는 물리적 저장 구조와 관련된다.
보충 개념 3단계 스키마 구조는 데이터 독립성을 확보하기 위한 구조이다. 외부 단계는 사용자별 뷰, 개념 단계는 전체 논리 구조, 내부 단계는 저장 구조를 의미한다.
문제 2
4지선다데이터 모델링에 대한 설명으로 옳지 않은 것은?
- 1.업무에서 사용되는 모든 데이터를 포함해야 한다.
- 2.업무 규칙은 데이터 모델에 반영되어야 한다.
- 3.데이터 모델링은 업무 정보를 구조화하는 과정이다.
- 4.업무 규칙이 모델에 포함되지 않아도 된다.
정답·해설 보기▾
정답
4번. 업무 규칙이 모델에 포함되지 않아도 된다.
해설
정답: 4. 데이터 모델링은 업무에서 사용하는 데이터와 업무 규칙을 데이터 구조로 표현하는 과정이므로 업무 규칙은 모델에 반영되어야 한다.
오답 풀이
- 1번: 업무에서 필요한 데이터는 모델링 대상에 포함되어야 한다.
- 2번: 업무 규칙은 엔터티, 속성, 관계, 제약조건 등에 반영된다.
- 3번: 데이터 모델링은 현실 업무를 데이터 관점에서 추상화하고 구조화하는 작업이다.
- 4번: 업무 규칙이 모델에 포함되지 않아도 된다는 설명은 부적절하다.
보충 개념 데이터 모델링은 단순히 테이블을 만드는 작업이 아니라 업무의 데이터 구조와 규칙을 명확히 표현하는 작업이다. 업무 규칙이 누락되면 데이터 정합성과 시스템 품질이 저하될 수 있다.
문제 3
4지선다발생 시점에 따라 구분할 수 있는 엔터티의 유형으로 적절하지 않은 것은?
- 1.관계 엔터티
- 2.행위 엔터티
- 3.중심 엔터티
- 4.기본 엔터티
정답·해설 보기▾
정답
1번. 관계 엔터티
해설
정답: 1. 발생 시점에 따른 엔터티 유형은 기본 엔터티, 중심 엔터티, 행위 엔터티로 구분한다.
오답 풀이
- 1번: 관계 엔터티는 발생 시점에 따른 표준 분류가 아니다.
- 2번: 행위 엔터티는 업무 행위나 사건에 의해 발생하는 엔터티이다.
- 3번: 중심 엔터티는 기본 엔터티로부터 발생하고 업무의 중심이 되는 엔터티이다.
- 4번: 기본 엔터티는 독립적으로 생성되는 엔터티이다.
보충 개념 엔터티는 발생 시점에 따라 기본, 중심, 행위 엔터티로 분류할 수 있다. 예를 들어 고객과 상품은 기본 엔터티, 주문은 행위 엔터티로 볼 수 있다.
문제 4
4지선다다음 설명 중 옳지 않은 것은?

- 1.고객과 상품은 기본 엔터티다.
- 2.주문은 사건 엔터티다.
- 3.주문 상품 엔터티는 주문과 상품의 관계에 의해 생성된다.
- 4.주문 상품 엔터티는 독립적으로 발생하는 기본 엔터티다.
정답·해설 보기▾
정답
4번. 주문 상품 엔터티는 독립적으로 발생하는 기본 엔터티다.
해설
정답: 4. 주문상품 엔터티는 주문과 상품의 관계에서 발생하는 행위 또는 관계 성격의 엔터티로 보는 것이 적절하다.
오답 풀이
- 1번: 고객과 상품은 업무의 기반이 되는 기본 엔터티로 볼 수 있다.
- 2번: 주문은 고객의 구매 행위에 의해 발생하는 사건 또는 행위 엔터티이다.
- 3번: 주문상품은 주문과 상품의 다대다 관계를 해소하기 위해 생성되는 엔터티로 볼 수 있다.
- 4번: 주문상품은 독립적으로 발생하는 기본 엔터티가 아니라 주문과 상품의 관계에서 발생한다.
보충 개념 다대다 관계는 실제 테이블 설계에서 중간 엔터티로 해소하는 경우가 많다. 주문과 상품 사이의 주문상품 엔터티는 주문별 상품 내역을 표현한다.
문제 5
4지선다다른 속성을 이용하여 결과를 도출하는 속성은?
- 1.설계 속성
- 2.기본 속성
- 3.파생 속성
- 4.관계 속성
정답·해설 보기▾
정답
3번. 파생 속성
해설
정답: 3. 파생 속성은 다른 속성의 값으로부터 계산되거나 도출되는 속성이다.
오답 풀이
- 1번: 설계 속성은 업무상 원래 존재하지 않지만 설계를 위해 도입하는 속성이다.
- 2번: 기본 속성은 업무로부터 직접 도출되는 속성이다.
- 3번: 파생 속성은 합계, 나이, 금액 등 다른 속성으로부터 계산되는 속성이다.
- 4번: 관계 속성은 표준 속성 분류로 보기 어렵다.
보충 개념 속성은 기본 속성, 설계 속성, 파생 속성 등으로 구분할 수 있다. 파생 속성은 편의를 위해 저장할 수 있지만 데이터 중복과 정합성 문제를 고려해야 한다.
문제 6
4지선다다음 설명 중 옳은 것을 모두 고르시오.
<보기> 가. 주소는 시, 군, 구 등으로 나눠지므로 복합 속성이다. 나. 나이는 단순 속성이다. 다. 주민번호는 단일 값 속성이다. 라. 연락처는 휴대폰번호, 집 전화번호가 될 수 있기 때문에 다중 값 속성이다.
- 1.가, 라
- 2.가, 나, 다
- 3.나, 다, 라
- 4.가, 나, 다, 라
정답·해설 보기▾
정답
4번. 가, 나, 다, 라
해설
정답: 4. 보기의 설명은 모두 속성의 분류 관점에서 옳다.
오답 풀이
- 1번: 나, 다가 누락되어 있다.
- 2번: 라가 누락되어 있다.
- 3번: 가가 누락되어 있다.
- 4번: 가, 나, 다, 라가 모두 옳다.
보충 개념 복합 속성은 더 작은 의미 단위로 분해 가능한 속성이다. 단일 값 속성은 한 엔터티 인스턴스에 하나의 값만 갖는 속성이고, 다중 값 속성은 여러 값을 가질 수 있는 속성이다.
문제 7
4지선다주어진 ERD에 대한 설명으로 옳지 않은 것은?

- 1.ㄷ은 ㄱ과 ㄴ을 합한 것과 의미가 같다.
- 2.의사가 없는 병원이 있을 수 있다.
- 3.수술이 없는 의사가 있을 수 있다.
- 4.의사가 집도하지 않는 수술이 있을 수 있다.
정답·해설 보기▾
정답
1번. ㄷ은 ㄱ과 ㄴ을 합한 것과 의미가 같다.
해설
정답: 1. ㄷ은 병원과 수술을 직접 연결하는 관계로, ㄱ(병원-의사)과 ㄴ(의사-수술)을 거쳐 도출되는 의미와 반드시 같다고 볼 수 없다. 병원이 직접 주관하는 수술과 의사를 경유해 집도되는 수술은 서로 다른 업무 규칙을 표현할 수 있다.
오답 풀이
- 1번: ㄷ 관계는 ㄱ+ㄴ 조합과 의미가 반드시 같지는 않으므로 옳지 않다. (정답)
- 2번: 병원-의사(ㄱ) 관계에서 의사 쪽이 선택 참여이므로, 소속 의사가 아직 없는 병원이 존재할 수 있다.
- 3번: 의사-수술(ㄴ) 관계에서 수술 쪽이 선택 참여이므로, 수술을 집도하지 않은 의사가 존재할 수 있다.
- 4번: 의사-수술(ㄴ) 관계에서 의사 쪽이 선택 참여이므로, 의사가 집도하지 않는 수술이 존재할 수 있다.
보충 개념 중복 관계 여부를 판단할 때는 두 경로가 의미상 같은 사실을 표현하는지, 다른 업무 규칙을 표현하는지 확인해야 한다. 구조가 비슷해 보여도 맥락이 다르면 다른 관계로 남겨두는 것이 타당하다.
문제 8
4지선다업무에 의해 만들어진 식별자로 옳은 것은?
- 1.외부식별자
- 2.내부식별자
- 3.본질식별자
- 4.인조식별자
정답·해설 보기▾
정답
3번. 본질식별자
해설
정답: 3. 본질식별자는 업무적으로 의미를 가지고 원래 존재하는 식별자이다.
오답 풀이
- 1번: 외부식별자는 다른 엔터티와의 관계로부터 가져온 식별자이다.
- 2번: 내부식별자는 엔터티 내부에서 스스로 생성되는 식별자이다.
- 3번: 본질식별자는 업무에 의해 자연스럽게 식별 가능한 속성이다.
- 4번: 인조식별자는 업무적 의미보다는 식별을 위해 인위적으로 만든 식별자이다.
보충 개념 식별자는 생성 방식, 대체 여부, 업무 의미 여부에 따라 여러 기준으로 분류된다. 본질식별자는 주민등록번호, 사번처럼 업무적으로 의미 있는 식별자에 해당한다.
문제 9
4지선다모든 일반 속성이 주식별자에 종속되어 있는 정규형은?
- 1.제1 정규형
- 2.제2 정규형
- 3.제3 정규형
- 4.보이스-코드정규형
정답·해설 보기▾
정답
2번. 제2 정규형
해설
정답: 2. 제2정규형은 제1정규형을 만족하면서 모든 일반 속성이 주식별자 전체에 완전 함수 종속되도록 부분 함수 종속을 제거한 정규형이다.
오답 풀이
- 1번: 제1정규형은 속성의 원자성을 만족하는 단계이다.
- 2번: 제2정규형은 일반 속성이 주식별자 전체에 종속되도록 하는 정규형이다.
- 3번: 제3정규형은 일반 속성 간의 이행 함수 종속을 제거한다.
- 4번: 보이스-코드정규형은 모든 결정자가 후보키가 되도록 하는 더 강한 정규형이다.
보충 개념 제2정규형은 복합키를 가진 릴레이션에서 특히 중요하다. 키의 일부에만 종속되는 속성이 있으면 별도 릴레이션으로 분리해야 한다.
문제 10
4지선다정규화에 대한 설명으로 옳지 않은 것은?
- 1.정규화 시 유연성이 떨어진다.
- 2.일반 속성 간 종속을 제거하는 것은 제3 정규형이다.
- 3.반정규화는 데이터 중복으로 독립성이 떨어진다.
- 4.정규화를 많이 할수록 성능이 저하된다.
정답·해설 보기▾
정답
1번. 정규화 시 유연성이 떨어진다.
해설
정답: 1. 정규화는 데이터 중복을 줄이고 구조의 유연성과 데이터 독립성을 높이는 방향의 설계 기법이다.
오답 풀이
- 1번: 정규화로 유연성이 떨어진다는 설명은 일반적으로 옳지 않다.
- 2번: 제3정규형은 일반 속성 간 이행 함수 종속을 제거한다.
- 3번: 반정규화는 중복을 허용하므로 데이터 독립성과 정합성 측면의 부담이 생길 수 있다.
- 4번: 정규화가 과도하면 조인이 많아져 조회 성능이 저하될 수 있다.
보충 개념 정규화는 이상 현상을 줄이고 데이터 정합성을 높인다. 다만 성능 요구가 강한 경우에는 통제된 반정규화를 검토할 수 있다.
문제 11
4지선다우선순위가 가장 높은 연산자는?
- 1.비교
- 2.괄호
- 3.AND
- 4.OR
정답·해설 보기▾
정답
2번. 괄호
해설
정답: 2. SQL 연산에서 괄호는 가장 먼저 평가되어 연산 우선순위를 명시적으로 바꿀 수 있다.
오답 풀이
- 1번: 비교 연산자는 괄호보다 우선하지 않는다.
- 2번: 괄호 안의 조건은 가장 먼저 평가된다.
- 3번: AND는 OR보다 우선순위가 높지만 괄호보다 높지는 않다.
- 4번: OR는 AND보다도 우선순위가 낮다.
보충 개념 조건식이 복잡할 때는 괄호를 사용해 의도를 명확히 표현해야 한다. 일반적으로 NOT, AND, OR 순으로 논리 연산 우선순위가 적용된다.
문제 12
4지선다다음 쿼리의 결과로 옳은 것은?
COL1 COL2 1 A 2 B 3 C 4 D 1 A 2 B 3 A SQLSELECT COUNT(ALL COL1) FROM TAB1 WHERE COL2='A'; SELECT COUNT(DISTINCT COL1) FROM TAB1;- 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
4지선다다음 중 주어진 결과와 다른 것은?
⚠️ 안내: 원문 결과 테이블이 소실되어 표기할 수 없습니다. 복원본 기준으로 INNER JOIN / LEFT OUTER JOIN / RIGHT OUTER JOIN 은 결과 건수가 같고, FULL OUTER JOIN 만 결과 건수가 다른 문제였습니다.
- 1.INNER JOIN
- 2.LEFT OUTER JOIN
- 3.RIGHT OUTER JOIN
- 4.FULL OUTER JOIN
정답·해설 보기▾
정답
4번. FULL OUTER JOIN
해설
정답: 4. 복원 메모상 FULL OUTER JOIN만 결과 건수가 달랐으므로 정답은 FULL OUTER JOIN이다.
오답 풀이
- 1번: INNER JOIN은 주어진 결과와 같은 것으로 복원되어 있다.
- 2번: LEFT OUTER JOIN은 주어진 결과와 같은 것으로 복원되어 있다.
- 3번: RIGHT OUTER JOIN은 주어진 결과와 같은 것으로 복원되어 있다.
- 4번: FULL OUTER JOIN은 양쪽 테이블의 불일치 행을 모두 포함하므로 결과가 달라질 수 있다.
보충 개념 INNER JOIN은 양쪽에 매칭되는 행만 반환한다. FULL OUTER JOIN은 왼쪽과 오른쪽의 미매칭 행까지 모두 포함하므로 결과 건수가 달라질 수 있다.
문제 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
4지선다다음 중 결과로 옳은 것은?
COL1 COL2 1 10 1 20 2 30 3 40 3 50 SQLSELECT MAX(COL2) KEEP(DENSE_RANK FIRST ORDER BY COL1) FROM TAB1;- 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
4지선다다음 쿼리 문의 실행 결과로 옳은 것은?
SQLSELECT COALESCE(NULL, NULL, 'S', NULL, 'QL') FROM DUAL;- 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
4지선다함수의 실행 결과로 옳은 것은?
SQLCEIL(9.36) ROUND(9.48) FLOOR(9.72)- 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
4지선다업체 테이블에 p, q, r 데이터가 있고 물품은 각 30, 40, 50개가 있다. 쿼리문 수행 결과로 옳은 것은?
SQLSELECT COUNT(DISTINCT 물품) FROM 업체; SELECT COUNT(*) FROM 업체 WHERE 물품 IN ('p', NULL);- 1.3, 0
- 2.3, 30
- 3.3, 오류가 발생한다.
- 4.3, NULL
정답·해설 보기▾
정답
2번. 3, 30
해설
정답: 2. DISTINCT 물품은 p, q, r의 3개이고, 물품 IN ('p', NULL)은 물품이 p인 행만 TRUE가 되어 30건이 조회된다.
오답 풀이
- 1번: IN 목록에 NULL이 있어도 p와 일치하는 행은 조회된다.
- 2번: 서로 다른 물품 수 3개, p인 행 30건으로 옳다.
- 3번: IN 목록에 NULL이 포함되어도 문법 오류는 아니다.
- 4번: COUNT(*)는 조건을 만족하는 행 수를 반환하며 NULL을 반환하지 않는다.
보충 개념 IN ('p', NULL)은 값이 'p'이면 TRUE이고, 다른 값은 NULL 비교 때문에 UNKNOWN이 될 수 있다. WHERE 절에서는 TRUE인 행만 반환된다.
문제 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
4지선다TRUNCATE에 관한 설명으로 옳은 것은?
- 1.데이터 구조와 데이터를 모두 삭제한다.
- 2.조건을 지정하여 일부 행만 삭제할 수 있다.
- 3.특정 행만 삭제하는 것은 불가능하다.
- 4.모든 행을 제거할 경우 DELETE보다 성능이 떨어진다.
정답·해설 보기▾
정답
3번. 특정 행만 삭제하는 것은 불가능하다.
해설
정답: 3. TRUNCATE는 테이블의 전체 데이터를 제거하는 명령으로 특정 행만 조건 지정하여 삭제할 수 없다.
오답 풀이
- 1번: 데이터 구조까지 삭제하는 것은 DROP에 가깝다. TRUNCATE는 테이블 구조를 유지한다.
- 2번: TRUNCATE는 WHERE 조건을 사용할 수 없다.
- 3번: 특정 행만 삭제할 수 없으므로 옳다.
- 4번: 전체 행 제거 시 일반적으로 DELETE보다 빠르다.
보충 개념 DELETE는 조건을 사용해 일부 행을 삭제할 수 있고 DML에 해당한다. TRUNCATE는 전체 데이터를 빠르게 제거하며 테이블 구조는 남긴다.
문제 21
4지선다주어진 결과를 보고 빈칸에 들어갈 쿼리로 알맞은 것은?
COL1 COL2 1 Smith 2 Charlie 3 Alice 4 NULL SQLSELECT COUNT(*) _______________;<결과>
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번: LIKE '%*%'에서 *는 임의의 한 문자를 의미하므로 NULL 행은 제외된다.
- 2번: COUNT(*)는 전체 행 수 4를 반환한다.
- 3번: LIKE '%*'도 NULL 행은 제외되므로 4가 되지 않는다.
- 4번: LIKE '_%'도 NULL 행은 제외되므로 4가 되지 않는다.
보충 개념 COUNT(*)는 NULL 여부와 관계없이 행 수를 센다. 반면 WHERE 조건에서 LIKE 비교는 대상 값이 NULL이면 UNKNOWN이 되어 결과에서 제외된다.
문제 22
4지선다다음 중 결과가 다른 것은?
- 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.NVL(칼럼, -1)
정답·해설 보기▾
정답
1번. CASE 칼럼 WHEN NULL THEN -1 ELSE 0 END
해설
정답: 1. CASE 칼럼 WHEN NULL은 = NULL 비교와 유사하게 동작하므로 NULL을 정상적으로 판별하지 못한다.
오답 풀이
- 1번: NULL 비교를 WHEN NULL 형태로 처리하면 원하는 NULL 판별이 되지 않아 결과가 다르다.
- 2번: IS NULL을 사용하므로 NULL이면 -1을 반환한다.
- 3번: Oracle의 DECODE는 NULL 비교를 같은 값으로 처리할 수 있어 NULL이면 -1을 반환한다.
- 4번: NVL(칼럼, -1)은 칼럼이 NULL이면 -1을 반환한다.
보충 개념 SQL에서 NULL은 = 연산자로 비교할 수 없고 IS NULL을 사용해야 한다. Oracle DECODE는 일반 비교와 달리 NULL을 같은 값으로 취급하는 특성이 있다.
문제 23
4지선다셀프조인을 수행할 수 있는 경우로 설명으로 옳은 것은?
- 1.두 테이블 내에 칼럼이 연관관계가 있는 경우
- 2.두 테이블 내에 연관관계는 없지만 Join이 필요할 때
- 3.한 테이블 내에 칼럼이 연관관계가 있는 경우
- 4.한 테이블 내에 연관관계는 없지만 Join이 필요할 때
정답·해설 보기▾
정답
3번. 한 테이블 내에 칼럼이 연관관계가 있는 경우
해설
정답: 3. 셀프조인은 하나의 테이블을 서로 다른 별칭으로 두 번 참조하여 같은 테이블 내부의 연관관계를 조인하는 방식이다.
오답 풀이
- 1번: 두 테이블 간 조인은 일반 조인이다.
- 2번: 두 테이블 간 관계가 없으면 조인 조건이 부적절할 수 있다.
- 3번: 한 테이블 내부의 계층, 관리자-사원 관계 등에서 셀프조인을 수행한다.
- 4번: 연관관계가 없는 칼럼을 조인하는 것은 셀프조인의 본질적 목적이 아니다.
보충 개념 셀프조인은 사원 테이블의 사원번호와 관리자번호처럼 같은 테이블 내 컬럼 간 관계가 있을 때 사용한다. 반드시 테이블 별칭을 다르게 부여해야 한다.
문제 24
4지선다TAB1의 쿼리문 수행 결과로 옳은 것은?
COL1 a b c SQLSELECT COL1 FROM TAB1 WHERE COL1 = 'z'; SELECT MAX(COL1) FROM TAB1 WHERE COL1 = 'z';- 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
4지선다함수의 실행 결과로 옳은 것은?
SQLSELECT REGEXP_SUBSTR('aaaaabbbb', 'a{2,4}') FROM DUAL;- 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
4지선다집합 연산자 관련 문제
⚠️ 안내: 원문 지문과 일부 보기(3, 4번) 가 소실된 문항입니다. 풀이에 참고만 해주세요.
- 1.UNION
- 2.UNION ALL
- 3.INTERSECT
- 4.MINUS
정답·해설 보기▾
정답
1번. UNION
해설
⚠️ 정답 재확인 필요 — 원문 지문이 누락되어 어떤 집합 연산자를 묻는지 확정할 수 없다.
오답 풀이
- 1번: UNION은 중복을 제거한 합집합이다.
- 2번: UNION ALL은 중복을 포함한 합집합이다.
- 3번: INTERSECT는 교집합이다.
- 4번: MINUS는 차집합이다.
보충 개념 집합 연산자 문제는 중복 포함 여부와 교집합/차집합 여부를 확인해야 한다. 지문이나 결과 테이블이 있어야 정답을 확정할 수 있다.
문제 27
4지선다급여가 2000 이상인 사원 중 부서별 급여의 합계 금액이 높은 순으로 정렬하려고 할 때 아래 쿼리에서 고쳐야 할 부분은?
EMP_ID DEPT_NAME SALARY 101 HR 2500 102 IT 3000 103 IT 2200 104 Sales 1800 105 Sales 2200 106 HR 2000 <결과>
DEPT_NAME SUM(SALARY) IT 5200 HR 4500 Sales 4000 SQLSELECT DEPT_NAME, SUM(SALARY) -- (가) FROM EMP WHERE SALARY >= 2000 -- (나) GROUP BY DEPT_NAME -- (다) ORDER BY SUM(SALARY) -- (라)- 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
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
4지선다SQL문의 논리적 연산 순서로 옳은 것은?
- 1.SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY
- 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
4지선다다음 빈칸에 들어갈 함수로 옳은 것은?
NAME SALARY Alice 5000 Bob 7000 Charlie 3000 David 6000 Smith 7000 SQLSELECT NAME, SALARY, ________ OVER (ORDER BY SALARY DESC) AS RANKING FROM TAB1;<결과>
NAME SALARY RANKING Bob 7000 1 Smith 7000 1 David 6000 2 Alice 5000 3 Charlie 3000 4 - 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
4지선다트랜잭션의 모든 작업이 성공적으로 완료되거나 전혀 수행되지 않아야 하는 특징은?
- 1.원자성
- 2.고립성
- 3.일관성
- 4.지속성
정답·해설 보기▾
정답
1번. 원자성
해설
정답: 1. 원자성은 트랜잭션의 작업이 모두 수행되거나 모두 수행되지 않아야 한다는 특성이다.
오답 풀이
- 1번: All or Nothing을 의미하므로 옳다.
- 2번: 고립성은 동시에 실행되는 트랜잭션들이 서로 간섭하지 않아야 한다는 특성이다.
- 3번: 일관성은 트랜잭션 수행 전후 데이터베이스가 일관된 상태여야 한다는 특성이다.
- 4번: 지속성은 커밋된 결과가 영구적으로 보존되어야 한다는 특성이다.
보충 개념 트랜잭션의 ACID 특성은 원자성, 일관성, 고립성, 지속성이다. 데이터베이스의 신뢰성을 보장하는 핵심 개념이다.
문제 32
4지선다두 테이블의 데이터가 아래와 같을 때 결과 값으로 옳은 것은?
COL1 COL2 A 10 B 20 C 30 COL1 COL2 A 20 B 20 C NULL SQLSELECT * FROM TAB1 WHERE (COL1, COL2) NOT IN (SELECT COL1, COL2 FROM TAB2);- 1.0
- 2.10
- 3.20
- 4.40
정답·해설 보기▾
정답
1번. 0
해설
정답: 1. 다중 컬럼 NOT IN의 하위 질의 결과에 NULL이 포함되면 비교 결과가 UNKNOWN이 되어 결과가 반환되지 않을 수 있다.
오답 풀이
- 1번: NULL이 포함된 NOT IN 조건으로 인해 조회 결과가 0건이므로 옳다.
- 2번: 10은 특정 컬럼 값일 뿐 결과 건수로 볼 수 없다.
- 3번: 20은 특정 컬럼 값일 뿐 결과 건수로 볼 수 없다.
- 4번: 40은 주어진 데이터에서 도출되지 않는다.
보충 개념 NOT IN은 하위 질의 결과에 NULL이 포함될 때 주의해야 한다. NULL과의 비교는 TRUE/FALSE가 아니라 UNKNOWN이 되므로 의도와 다른 결과가 나올 수 있다.
문제 33
4지선다주어진 쿼리문과 결과가 동일한 것은?
SQLUPDATE TAB1 T1 SET COL1 = (SELECT MAX(NULL) FROM TAB2 T2 WHERE T1.COL1 = T2.COL2 AND T1.COL1 >= 200);- 1.UPDATE TAB1 SET COL1 = (SELECT MAX(COL2) FROM TAB2 T2 WHERE T1.COL1 = T2.COL2 AND T1.COL1 >= 200);
- 2.UPDATE TAB1 SET COL1 = (SELECT COALESCE(MAX(NULL), 0) FROM TAB2 T2 WHERE T1.COL1 = T2.COL2);
- 3.UPDATE TAB1 SET COL1 = (SELECT MAX(0) FROM TAB2 T2 WHERE T1.COL1 = T2.COL2 AND T1.COL1 >= 200);
- 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
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
4지선다테이블 데이터가 각각 10개 있을 때 수행 결과는?
SQLSELECT COUNT(*) FROM TAB1, TAB2;- 1.10
- 2.20
- 3.100
- 4.오류가 발생한다.
정답·해설 보기▾
정답
3번. 100
해설
정답: 3. 조인 조건 없이 두 테이블을 FROM 절에 나열하면 Cartesian Product가 발생하여 10 × 10 = 100건이 된다.
오답 풀이
- 1번: 한 테이블의 행 수만 계산한 오류이다.
- 2번: 두 테이블 행 수를 단순히 더한 오류이다.
- 3번: 조인 조건이 없으므로 모든 조합의 수 100이 맞다.
- 4번: 문법적으로 오류가 발생하지 않는다.
보충 개념 Cartesian Product는 두 테이블의 모든 행 조합을 생성한다. 실무에서는 의도하지 않은 대량 결과를 막기 위해 조인 조건을 명확히 작성해야 한다.
문제 36
4지선다주어진 테이블에 대해 쿼리를 수행한 결과로 옳은 것은?
ID CUSTOMER 1 A 2 B 3 C C_ID PHONE A 111-1111 A 222-2222 B 333-3333 C 444-4444 D 555-5555 SQLSELECT * FROM TAB1 NATURAL JOIN TAB2;- 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
4지선다주어진 결과를 출력하는 쿼리로 옳은 것은?
COL1 COL2 A 10 A 20 B 20 C 30 <결과>
COUNT() 2 - 1.SELECT COUNT(DISTINCT COL1) FROM TAB1 WHERE COL2 <= 20
- 2.SELECT COUNT(COL1) FROM TAB1 WHERE COL2 <= 20
- 3.SELECT COUNT(COL1) FROM TAB1 WHERE COL2 <= 20 GROUP BY COL1
- 4.SELECT COUNT(COL1) FROM TAB1 WHERE COL2 < 30 GROUP BY COL1
정답·해설 보기▾
정답
1번. SELECT COUNT(DISTINCT COL1) FROM TAB1 WHERE COL2 <= 20
해설
정답: 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
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
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
4지선다PARK, KIM, LEE 문제
⚠️ 안내: 원문 테이블과 쿼리 조건이 소실된 문항입니다. 제시된 보기만으로 정답을 특정하기 어렵습니다.
- 1.PARK
- 2.PARK, KIM
- 3.PARK, LEE
- 4.PARK, KIM, LEE
정답·해설 보기▾
정답
1번. PARK
해설
⚠️ 정답 재확인 필요 — 원문 테이블과 쿼리 조건이 누락되어 결과를 확정할 수 없다.
오답 풀이
- 1번: PARK만 출력되는 조건인지 확인할 수 없다.
- 2번: PARK, KIM이 출력되는 조건인지 확인할 수 없다.
- 3번: PARK, LEE가 출력되는 조건인지 확인할 수 없다.
- 4번: 세 값이 모두 출력되는 조건인지 확인할 수 없다.
보충 개념 SQL 결과 문제는 입력 데이터, WHERE 조건, 정렬, NULL 처리 여부에 따라 결과가 달라진다. 원문 쿼리와 테이블이 필요하다.
문제 41
4지선다AVG(), MIN() 구하는 문제
⚠️ 안내: 원문 테이블과 정확한 쿼리 본문이 소실된 문항입니다. 복원된 보기 기준으로만 참고해주세요.
- 1.1000, 2000
- 2.1000, 3000
- 3.1000, 2500
- 4.NULL, 2500
정답·해설 보기▾
정답
3번. 1000, 2500
해설
⚠️ 정답 재확인 필요 — 복원 메모상 3번 보기가 정답 후보로 기록되어 있으며, 원문 데이터가 없어 추가 검증은 어렵다.
오답 풀이
- 1번: 원문 데이터가 없어 AVG와 MIN 결과를 검증할 수 없다.
- 2번: 원문 데이터가 없어 AVG와 MIN 결과를 검증할 수 없다.
- 3번: 복원 메모에 남아 있는 보기 기준으로 가장 유력하다.
- 4번: 원문 데이터가 없어 NULL 여부를 검증할 수 없다.
보충 개념 AVG는 NULL을 제외하고 평균을 계산하며, MIN도 NULL을 제외하고 최솟값을 구한다. 단, 전체 대상이 NULL이거나 행이 없으면 결과가 NULL일 수 있다.
문제 42
4지선다다음 쿼리에 대한 설명 중 옳은 것은?
⚠️ 안내: 원문 쿼리가 일부 소실되었습니다. 조인 조건은
부서.부서ID = 사원.부서ID AND 등급 >= 2였다고 기록되어 있습니다.- 1.2등급 이상의 사원을 모두 출력한다.
- 2.부서에 소속되지 않은 사원은 제외한다.
- 3.모든 부서와 모든 사원을 조건 없이 출력한다.
- 4.등급 조건은 조인 결과에 영향을 주지 않는다.
정답·해설 보기▾
정답
2번. 부서에 소속되지 않은 사원은 제외한다.
해설
정답: 2. 부서ID를 기준으로 조인하는 조건이 있으면 부서에 소속되지 않아 매칭되지 않는 사원은 일반적으로 제외된다.
오답 풀이
- 1번: 조인 조건 때문에 2등급 이상 사원 전체가 반드시 모두 출력된다고 볼 수 없다.
- 2번: 부서와 매칭되지 않는 사원은 INNER JOIN 조건에서 제외되므로 옳다.
- 3번: 조인 조건이 있으므로 모든 조합을 출력하지 않는다.
- 4번: 등급 >= 2 조건은 결과 행 필터링에 영향을 준다.
보충 개념 INNER JOIN은 조인 조건을 만족하는 행만 반환한다. 조건이 ON절 또는 WHERE절에 있더라도 논리적으로 결과 제한에 영향을 줄 수 있다.
문제 43
4지선다키가 180 이상인 농구선수를 구하는 문제
- 1.키 조건 없이 모든 농구선수를 조회하는 쿼리
- 2.WHERE 키 < 180 조건을 사용하는 쿼리
- 3.WHERE 키 > 180 조건을 사용하는 쿼리
- 4.GROUP BY 키 조건만 사용하는 쿼리
정답·해설 보기▾
정답
3번. WHERE 키 > 180 조건을 사용하는 쿼리
해설
정답: 3. 복원 메모상 WHERE 키 > 180 조건이 있는 3번이 정답으로 기록되어 있다. 다만 지문이 '180 이상'이라면 >= 180이 되어야 하므로 원문 조건 확인이 필요하다. ⚠️ 정답 재확인 필요
오답 풀이
- 1번: 키 조건이 없으면 원하는 대상만 필터링할 수 없다.
- 2번: 180보다 작은 선수를 조회하므로 반대 조건이다.
- 3번: 복원 메모상 정답으로 기록되어 있다.
- 4번: GROUP BY만으로 키 조건 필터링을 수행할 수 없다.
보충 개념 WHERE 절은 행 단위 조건 필터링에 사용된다. '이상'은 일반적으로 >=, '초과'는 >로 표현하므로 지문 표현과 SQL 조건을 일치시켜야 한다.
문제 44
4지선다주어진 쿼리의 결과와 동일한 것은?
⚠️ 안내: 원문 쿼리가 소실되었습니다. 복원본 기준으로 "팀별 최단신의 팀명·키를 출력하되 조건 불일치 시 NULL 로 업데이트" 하는 쿼리였다고 기록되어 있습니다.
- 1.조건에 맞는 행만 유지하고 나머지는 기존 값을 유지하는 쿼리
- 2.팀별 최장신의 팀명과 키를 출력하는 쿼리
- 3.전체 선수 중 최단신 한 명만 출력하는 쿼리
- 4.조건에 맞지 않는 경우 NULL로 처리하는 쿼리
정답·해설 보기▾
정답
4번. 조건에 맞지 않는 경우 NULL로 처리하는 쿼리
해설
정답: 4. 복원 메모상 조건에 맞지 않으면 모두 NULL로 업데이트해야 하며 4번이 정답으로 기록되어 있다.
오답 풀이
- 1번: 조건에 맞지 않는 행을 기존 값으로 유지하면 원문과 다르다.
- 2번: 최단신이 아니라 최장신을 구하면 결과가 다르다.
- 3번: 팀별 결과가 아니라 전체 최단신만 구하면 결과가 다르다.
- 4번: 복원 메모상 원문 결과와 동일한 처리로 기록되어 있다.
보충 개념 상관 서브쿼리나 집계 결과와 비교하는 문제는 조건에 맞지 않는 행의 처리 방식이 중요하다. 특히 UPDATE 문에서는 서브쿼리 결과가 없을 때 NULL이 설정될 수 있다.
문제 45
4지선다결과 값으로 옳은 것은?
⚠️ 안내: 원문 쿼리와 테이블이 소실된 문항입니다. 결과 값을 확정할 수 없습니다.
- 1.800
- 2.1600
- 3.2975
- 4.오류가 발생한다.
정답·해설 보기▾
정답
1번. 800
해설
⚠️ 정답 재확인 필요 — 원문 쿼리와 입력 데이터가 누락되어 결과 값을 계산할 수 없다.
오답 풀이
- 1번: 계산 근거가 부족하다.
- 2번: 계산 근거가 부족하다.
- 3번: 계산 근거가 부족하다.
- 4번: 문법 오류 여부를 판단할 원문 쿼리가 없다.
보충 개념 SQL 결과 문제는 테이블 데이터, 함수, 조건, NULL 처리 규칙을 모두 확인해야 한다. 보기만으로는 정답을 확정할 수 없다.
문제 46
4지선다원문 복원 불가 문제
⚠️ 안내: 지문과 보기가 모두 소실된 문항입니다. 원문 재확보 후 재등록 예정입니다.
- 1.원문 보기 1 누락
- 2.원문 보기 2 누락
- 3.원문 보기 3 누락
- 4.원문 보기 4 누락
정답·해설 보기▾
정답
1번. 원문 보기 1 누락
해설
⚠️ 정답 재확인 필요 — 지문과 보기가 모두 누락되어 정답을 판단할 수 없다.
오답 풀이
- 1번: 원문 정보가 없어 판단할 수 없다.
- 2번: 원문 정보가 없어 판단할 수 없다.
- 3번: 원문 정보가 없어 판단할 수 없다.
- 4번: 원문 정보가 없어 판단할 수 없다.
보충 개념 문항 복원 시 지문, 보기, 정답 근거 중 하나라도 핵심 정보가 빠지면 검수 가능한 문제로 보기 어렵다. 원문 재확인이 필요하다.
문제 47
4지선다매출액이 높은 순서대로 직원 구하는 문제
- 1.SELECT 절을 수정해야 한다.
- 2.FROM 절을 수정해야 한다.
- 3.WHERE 절을 수정해야 한다.
- 4.ORDER BY 절에 DESC를 추가해야 한다.
정답·해설 보기▾
정답
4번. ORDER BY 절에 DESC를 추가해야 한다.
해설
정답: 4. 매출액이 높은 순서대로 정렬하려면 ORDER BY 매출액 DESC처럼 내림차순 정렬을 명시해야 한다.
오답 풀이
- 1번: 정렬 방향 문제이므로 SELECT 절 수정이 핵심이 아니다.
- 2번: 테이블 지정 문제가 아니라 정렬 방향 문제이다.
- 3번: 필터링 조건 문제가 아니라 정렬 조건 문제이다.
- 4번: 높은 순서는 내림차순이므로 DESC 추가가 필요하다.
보충 개념 ORDER BY의 기본값은 ASC이다. 큰 값부터 정렬하려면 DESC를 사용한다.
문제 48
4지선다GROUPING 관련 문제 중 첫 번째
- 1.CUBE()
- 2.ROLLUP()
- 3.GROUPING SETS()
- 4.GROUPING()
정답·해설 보기▾
정답
2번. ROLLUP()
해설
정답: 2. 복원 메모상 ROLLUP()이 정답으로 기록되어 있다.
오답 풀이
- 1번: CUBE는 가능한 모든 조합의 소계를 생성한다.
- 2번: ROLLUP은 계층적 소계와 총계를 생성하므로 복원 메모상 정답이다.
- 3번: GROUPING SETS는 사용자가 지정한 그룹 조합별 집계를 생성한다.
- 4번: GROUPING은 집계 행 여부를 판별하는 함수이다.
보충 개념 ROLLUP은 지정한 컬럼 순서에 따라 계층적 집계 결과를 만든다. 예를 들어 ROLLUP(A, B)는 (A, B), (A), 전체 합계를 생성한다.
문제 49
4지선다GROUPING 관련 문제 중 두 번째
- 1.ROLLUP()
- 2.GROUPING()
- 3.GROUPING SETS()
- 4.CUBE()
정답·해설 보기▾
정답
1번. ROLLUP()
해설
⚠️ 정답 재확인 필요 — 원문 지문이 누락되어 GROUPING SETS와 CUBE 중 어떤 함수가 정답인지 확정할 수 없다.
오답 풀이
- 1번: 계층적 소계를 묻는다면 ROLLUP이 정답일 수 있다.
- 2번: 집계 행 여부를 판별하는 함수라면 GROUPING이 정답일 수 있다.
- 3번: 특정 그룹 조합만 지정하는 문제라면 GROUPING SETS가 정답일 수 있다.
- 4번: 모든 조합의 소계를 생성하는 문제라면 CUBE가 정답일 수 있다.
보충 개념 ROLLUP, CUBE, GROUPING SETS는 모두 그룹 집계 확장 기능이다. 결과 표에 어떤 소계 조합이 필요한지에 따라 정답이 달라진다.
문제 50
4지선다결과 값으로 옳은 것은?
SQLCREATE TABLE TAB1 (COL1 NUMBER, COL2 NUMBER); INSERT INTO TAB1 VALUES (1, 2); INSERT INTO TAB1 VALUES (2, 1); INSERT INTO TAB1 VALUES (3, 4); SAVEPOINT 1; UPDATE TAB1 SET COL1=4 WHERE COL2<=2; SAVEPOINT 2; DELETE FROM TAB1 WHERE COL2=2; ROLLBACK SAVEPOINT 2; INSERT INTO TAB1 VALUES (4, 1); COMMIT; SELECT COUNT(*) FROM TAB1 WHERE COL1=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는 유지된다.