오브의 빛나는 별

[SQL] SQLD를 위한 기초 문제1 본문

SQL

[SQL] SQLD를 위한 기초 문제1

오브의 별 2026. 8. 25. 18:10
반응형

[1과목]

1번

다음 중 데이터 모델링의 특징으로 가장 적절하지 않은 것은?

  1. 단순화는 복잡한 현실을 핵심 중심으로 표현하는 것이다.
  2. 추상화는 공통된 형식으로 업무를 표현하는 것이다.
  3. 명확화는 누구나 이해할 수 있도록 의미를 분명히 하는 것이다.
  4. 구체화는 모든 업무 세부사항을 빠짐없이 저장하는 것을 의미한다.
더보기

정답: 4

 

2번

다음 중 논리적 데이터 모델링에 해당하는 설명은?

  1. 데이터 저장 장치와 인덱스 구조를 설계하는 단계
  2. 업무 핵심 엔터티를 도출하고 개념 수준에서 표현하는 단계
  3. 정규화를 수행하고 식별자와 관계를 정의하는 단계
  4. 실제 테이블 생성 스크립트를 작성하는 단계
더보기

정답: 2

데이터 저장 장치와 인덱스 구조를 설계하는 단계 → 물리적 모델링
업무 핵심 엔터티를 도출하고 개념 수준에서 표현하는 단계 → 개념적 모델링
실제 테이블 생성 스크립트를 작성하는 단계 → 물리적 구현

개념적 모델링 : 큰 개념 파악
논리적 모델링 : 구조 설계 - 엔터티 확정, 속성/관계/식별자 정의, 정규화 수행
물리적 모델링 : 실제 DB 반영

 

3번

다음 중 물리적 데이터 모델링의 설명으로 가장 적절한 것은?

  1. 업무 프로세스 분석 결과를 개념적으로 표현하는 단계
  2. 사용자 관점의 화면 설계를 수행하는 단계
  3. DBMS 특성을 고려하여 테이블, 컬럼, 인덱스를 정의하는 단계
  4. 엔터티 간의 업무 관계만을 정의하는 단계
더보기

정답: 3
업무 프로세스 분석 결과를 개념적으로 표현하는 단계 → 개념적 모델링
사용자 관점의 화면 설계를 수행하는 단계 → 데이터 모델링 설명이 아님
엔터티 간의 업무 관계만을 정의하는 단계 → 논리적 모델링

물리적 모델링: 테이블명/컬럼명/데이터 타입/인덱스 정의, 저장 구조 고려

 

4번

다음 중 물리적 독립성에 대한 설명으로 가장 적절한 것은?

  1. 외부 스키마 변경이 내부 스키마에 영향을 주지 않는 것
  2. 내부 스키마 변경이 개념 스키마에 영향을 최소화하는 것
  3. 개념 스키마 변경이 외부 스키마에 영향을 주지 않는 것
  4. 사용자 화면이 변경되어도 프로그램 수정이 필요 없는 것
더보기

정답: 2

물리적 독립성: 저장 위치/인덱스/파일 구조 변경이 있어도 사용자나 논리 모델은 영향X

개념 스키마 변경이 외부 스키마에 영향을 주지 않는 것 → 논리적 독립성

 

5번

다음 중 엔터티의 일반적인 특징으로 가장 적절하지 않은 것은?

  1. 엔터티는 반드시 하나 이상의 속성을 가져야 한다.
  2. 엔터티는 업무상 관리할 필요가 있는 대상이어야 한다.
  3. 엔터티는 다른 엔터티와 관계가 없어도 반드시 독립적으로 존재해야 한다.
  4. 엔터티는 식별 가능해야 한다.
더보기

정답: 3

엔터티 특질: 업무상 필요, 식별 가능, 속성O, 다른 엔터티와 관계 가지는 것

 

6번

다음 중 사건 엔터티의 예로 가장 적절한 것은?

  1. 고객
  2. 상품
  3. 주문
  4. 부서
더보기

정답: 3

사건 엔터티: 업무 수행 과정에서 발생하는 행위/이벤트 중심 엔터티

고객 → 기본 엔터티
상품 → 기본 엔터티
부서 → 기본 엔터티

 

7번

다음 중 엔터티 명명 원칙으로 가장 적절한 것은?

  1. 가능한 한 줄임말을 사용해 명칭을 짧게 만든다.
  2. 동일 모델 내에서 중복된 이름도 의미만 다르면 허용된다.
  3. 현업에서 사용하는 용어를 바탕으로 단수형 명사를 사용한다.
  4. 물리 테이블명을 그대로 논리 엔터티명으로 사용한다.
더보기

정답: 3

가능한 한 줄임말을 사용해 명칭을 짧게 만든다. → 줄임말 남용X
동일 모델 내에서 중복된 이름도 의미만 다르면 허용된다. → 중복X
물리 테이블명을 그대로 논리 엔터티명으로 사용한다. → 같을 필요X

엔터티 명명 원칙: 현업에서 사용하는 용어 사용, 의미 명확, 단수명사 사용, 중복X, 약어 사용 지양

 

8번

다음 중 파생 속성에 해당하는 것은?

  1. 고객명
  2. 주문일자
  3. 총주문금액
  4. 상품코드
더보기

정답: 3

고객명 → 기본 속성
주문일자 → 기본 속성
상품코드 → 설계 속성

파생 속성: 다른 속성으로부터 계산되거나 유도되는 속성

 

9번

다음 중 복합 속성의 예로 가장 적절한 것은?

  1. 생년월일
  2. 주소
  3. 고객번호
  4. 주문수량
더보기

정답: 2

복합 속성: 하나의 속성이지만 내부적으로 여러 의미 단위로 나눌 수 있는 속성
ex) 보통 주소가 대표적 예시

 

10번

다음 중 다중값 속성에 대한 설명으로 가장 적절한 것은?

  1. 하나의 속성이 항상 하나의 값만 가져야 하므로 존재할 수 없다.
  2. 여러 값을 가질 수 있으며 필요 시 별도의 엔터티로 분리할 수 있다.
  3. 기본키의 역할을 수행하는 속성이다.
  4. 설계 속성의 다른 이름이다.
더보기

정답: 2

다중값 속성: 하나의 엔터티 인스턴스가 하나의 속성에 대해 여러 값을 가질 수 있는 경우
ex) 취미

 

11번

다음 중 함수적 종속성에 대한 설명으로 가장 적절한 것은?

  1. 기본키는 어떤 속성에도 종속될 수 없다.
  2. 어떤 속성 A의 값이 정해지면 속성 B의 값도 유일하게 정해질 때 A→B로 표현한다.
  3. 함수적 종속성은 물리 모델링에서만 사용되는 개념이다.
  4. 외래키는 항상 모든 일반 속성에 함수적으로 종속된다.
더보기

정답: 2

어떤 속성 A의 값이 정해지면 속성 B의 값이 유일하게 정해지는 관계. A→B
ex) 학번→학생명, 고객번호→고객명

 

12번

고객 엔터티와 주문 엔터티의 관계가 다음과 같을 때 가장 적절한 차수는?

- 한 명의 고객은 여러 건의 주문을 할 수 있다.
- 하나의 주문은 반드시 한 명의 고객에 의해 발생한다.

  1. 1:1
  2. 1:N
  3. N:M
  4. M:1과 1:N을 동시에 표현할 수 없다
더보기

정답: 2
한 명의 고객은 여러 건의 주문을 할 수 있다 → 고객 1명 : 주문 여러 건
하나의 주문은 반드시 한 명의 고객에 의해 발생한다 → 주문 1건 : 고객 1명
즉, 고객 기준으로 보면 1:N 관계

 

13번

다음 중 N:M 관계에 대한 설명으로 가장 적절한 것은?

  1. 두 엔터티 사이에 직접 외래키만 두면 항상 해결된다.
  2. 조인 성능과 무관하므로 별도 조치가 필요 없다.
  3. 보통 연결 엔터티를 추가해 1:N 관계로 해소한다.
  4. 오직 개념 모델에서만 허용되고 논리 모델에서는 사용되지 않는다.
더보기

정답: 3

학생←→과목, 주문←→상품 ⇒ 연결 엔터티 추가
수강(학생번호, 과목번호), 주문상세(주문번호, 상품번호)
N:M 관계 ⇒ 두 개의 1:N의로 분해

 

14번

다음 중 주식별자의 조건에 해당하지 않는 것은?

  1. 유일성
  2. 최소성
  3. 가변성 → 불변성
  4. 존재성
더보기

정답: 3
주식별자 조건 = 유일성 + 최소성 + 불변성 + 존재성

 

15번

다음 중 외부식별자에 대한 설명으로 가장 적절한 것은?

  1. 엔터티 내부에서 자체 생성된 식별자
  2. 다른 엔터티와의 관계에 의해 가져온 식별자
  3. 반드시 인조식별자여야 하는 식별자
  4. 대표성을 가지지 않는 보조식별자
더보기

정답:2
엔터티 내부에서 자체 생성된 식별자 → 내부식별자

 

16번

다음 중 본질식별자와 인조식별자에 대한 설명으로 가장 적절한 것은?

  1. 본질식별자는 항상 단일 속성이어야 한다.
  2. 인조식별자는 업무 의미를 반드시 포함해야 한다.
  3. 본질식별자는 업무적으로 의미가 있는 식별자이고, 인조식별자는 인위적으로 만든 식별자이다.
  4. 인조식별자는 SQL 조인에 사용할 수 없다.
더보기

정답: 3
본질식별자는 항상 단일 속성이어야 한다. → 복합 식별자일 수도 있다.
인조식별자는 업무 의미를 반드시 포함해야 한다. → 오히려 업무 의미가 없고 인위적으로 만든 경우가 많다.
인조식별자는 SQL 조인에 사용할 수 없다. → 기본키/외래키로 충분히 조인에 사용할 수 있다.

 

17번

다음 중 식별관계에 대한 설명으로 가장 적절한 것은?

  1. 부모 엔터티의 주식별자가 자식 엔터티의 일반 속성으로만 존재하는 관계
  2. 부모 엔터티의 주식별자가 자식 엔터티의 주식별자에 포함되는 관계
  3. 부모 엔터티와 자식 엔터티가 서로 독립적으로 생성되는 관계
  4. 자식 엔터티가 부모 엔터티 없이 먼저 생성되는 관계
더보기

정답: 2
주문(주문번호), 주문상세(주문번호, 상품번호)

 

18번

다음 테이블은 어느 정규형 위반과 가장 관련이 깊은가?

- 수강(학생번호, 과목번호, 학생명, 과목명, 담당교수
-  기본키: (학생번호, 과목번호) → 복합키
-  학생명은 학생번호에만 종속
-  과목명, 담당교수는 과목번호에만 종속

  1. 제1정규형 위반
  2. 제2정규형 위반
  3. 제3정규형 위반
  4. 보이스-코드 정규형 위반
더보기

정답: 2
제1정규형 위반 → 원자성
제2정규형 위반 → 부분 함수 종속
제3정규형 위반 → 이행 함수 종속

 

19번

다음 중 제3정규형에 대한 설명으로 가장 적절한 것은?

  1. 반복 속성을 제거하여 원자성을 확보한 상태
  2. 부분 함수 종속을 제거한 상태
  3. 이행 함수 종속을 제거한 상태
  4. 모든 다대다 관계를 제거한 상태
더보기

정답: 3
반복 속성을 제거하여 원자성을 확보한 상태 → 1NF
부분 함수 종속을 제거한 상태 → 2NF

제1정규형 위반 → 원자성
제2정규형 위반 → 부분 함수 종속
제3정규형 위반 → 이행 함수 종속

 

20번

다음 중 NULL 속성에 대한 설명으로 가장 적절한 것은?

  1. NULL은 공백 문자와 같은 의미이다.
  2. NULL은 숫자 0과 같은 의미이다.
  3. NULL은 값이 없거나 아직 정해지지 않았음을 의미할 수 있다.
  4. 주식별자에는 NULL이 허용되어야 한다.
더보기

정답: 3

 

[2과목]

1번

다음 SQL의 실행 순서로 가장 적절한 것은?

SELECT deptno, AVG(sal)
FROM emp
WHERE sal >= 1000
GROUP BY deptno
HAVING AVG(sal) >= 2000
ORDER BY deptno;

  1. SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY
  2. FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
  3. FROM → GROUP BY → WHERE → HAVING → SELECT → ORDER BY
  4. WHERE → FROM → GROUP BY → HAVING → SELECT → ORDER BY
더보기

정답: 2
SELECT deptno, AVG(sal) → 최종 출력 컬럼 선택
FROM emp → emp 테이블에서 데이터 가져옴
WHERE sal >= 1000 → sal>=1000 조건으로 행 필터링
GROUP BY deptno → deptno 기준으로 그룹화
HAVING AVG(sal) >= 2000 → 그룹 결과 중 AVG(sal)>=2000 조건 적용
ORDER BY deptno; → deptno 기준으로 정렬(오름차순)

외우기 팁: 포워드가 와써요 (전 이게 한번 주입되니까 잊혀지지 않네요)
                 FW    G  WSO

 

2번

다음 중 SELECT DISTINCT에 대한 설명으로 가장 적절한 것은?

  1. 결과를 오름차순으로 정렬한다.
  2. 중복된 행을 제거한다.
  3. NULL 값을 제거한다.
  4. 그룹별 집계를 수행한다.
더보기

정답: 2
결과를 오름차순으로 정렬한다. → ORDER BY
그룹별 집계를 수행한다. → GROUP BY

 

3번

다음 SQL 실행 결과에 대한 설명으로 가장 적절한 것은?

SELECT COUNT(*), COUNT(comm)
FROM emp;

  1. 두 결과는 항상 같다.
  2. COUNT(comm)은 NULL을 포함하여 센다.
  3. COUNT(*)는 전체 행 수를 센다.
  4. COUNT(*)는 NULL이 있는 행을 제외한다.
더보기

정답: 3

두 결과는 항상 같다. → 같지 않음
COUNT(comm)은 NULL을 포함하여 센다. → NULL 제외
COUNT(*)는 NULL이 있는 행을 제외한다. → 전체 행 수

COUNT(comm) : comm 컬럼이 NULL이 아닌 행만 셈

 

4번

다음 중 WHERE절에서 사용할 수 없는 조건으로 가장 적절한 것은?

  1. sal >= 3000
  2. ename LIKE 'S%' 
  3. deptno IN (10, 20, 30)
  4. AVG(sal) > 2000
더보기

정답: 4
행 단위 조건. 집계함수 결과에 조건을 거는 곳은 HAVING임
sal >= 3000 → 일반 비교 조건
ename LIKE 'S%' → 문자열 패턴 조건
deptno IN (10, 20, 30) → 여러 값 비교 조건

 

5번

다음 중 NULL 비교에 대한 설명으로 가장 적절한 것은?

  1. comm = NULL로 비교한다.
  2. comm <> NULL로 비교한다.
  3. comm IS NULL로 비교한다.
  4. comm IN NULL로 비교한다.
더보기

정답: 3
NULL은 일반 값이 아니므로 = 또는 <>로 비교 불가

 

6번

다음 SQL과 같은 의미를 가지는 설명으로 가장 적절한 것은?

SELECT ename
FROM emp
WHERE ename LIKE '_A%';

  1. 이름이 A로 시작하는 사원을 조회한다.
  2. 이름의 두 번째 글자가 A인 사원을 조회한다.
  3. 이름이 A로 끝나는 사원을 조회한다.
  4. 이름에 A가 포함된 모든 사원을 조회한다.
더보기

정답: 2
A%: 첫번째 글자는 아무 문자 1개, 두번째 글자는 A, 세번째 글자 이후는 아무 문자열 가능

<LIKE 와일드카드 의미>
%: 0개 이상 문자열
_: 정확히 1개 문자

 

7번

다음 중 GROUP BY에 대한 설명으로 가장 적절한 것은?

  1. 그룹 함수는 GROUP BY 없이 사용할 수 없다. 사용 가능
  2. GROUP BY에 사용되지 않은 일반 컬럼은 SELECT절에 사용할 수 없다.
  3. GROUP BY는 정렬 기능만 수행한다.
  4. GROUP BY는 NULL 값을 자동 제거한다.
더보기

정답: 2

GROUP BY를 사용할 때는 SELECT 절에 오는 일반 컬럼이 반드시 GROUP BY 기준에 포함되어야 함

GROUP BY는 정렬 기능만 수행한다. → 정렬은 ORDER BY
GROUP BY는 NULL 값을 자동 제거한다. → NULL 자동 제거X

 

8번

다음 SQL에서 빈칸에 들어갈 가장 적절한 구문은?

SELECT deptno, AVG(sal)
FROM emp
GROUP BY deptno
(   ) AVG(sal) >= 2500;

  1. WHERE
  2. ORDER BY
  3. HAVING
  4. DISTINCT
더보기

정답: 3
AVG(sal)은 집계 결과이므로 그룹화 후 조건 가능 → HAVING

 

9번

다음 중 ORDER BY절에 대한 설명으로 가장 적절한 것은?

  1. WHERE절보다 먼저 수행된다.
  2. GROUP BY절보다 먼저 수행된다.
  3. SELECT 결과를 정렬한다.
  4. 반드시 컬럼명만 사용할 수 있다.
더보기

정답: 3
FWGHSO 순으로 ORDER BY는 가장 마지막 (포워 해써요)

반드시 컬럼명만 사용할 수 있다. → 컬럼명, 별칭, 순번 사용 가능

 

10번

다음 SQL의 결과로 가장 적절한 설명은?

SELECT e.ename, d.dname
FROM emp e
JOIN dept d
ON e.deptno = d.deptno;

  1. 두 테이블의 모든 행 조합이 출력된다.
  2. 조인 조건을 만족하는 행만 출력된다.
  3. emp 테이블의 모든 행이 반드시 출력된다.
  4. dept 테이블의 모든 행이 반드시 출력된다.
더보기

정답: 2
JOIN에 ON만 있고 LEFT/RIGHT/FULL가 없으면 기본적으로 INNER JOIN임
INNER JOIN : 조인 조건을 만족하는 행만 반환

 

11번

다음 SQL에 대한 설명으로 가장 적절한 것은?

SELECT e.ename, d.dname
FROM emp e
LEFT OUTER JOIN dept d
ON e.deptno = d.deptno;

  1. 조인 조건이 맞는 행만 출력된다.
  2. 오른쪽 테이블의 모든 행이 유지된다.
  3. 왼쪽 테이블의 모든 행이 유지된다.
  4. 두 테이블의 교집합만 출력된다.
더보기

정답: 3
LEFT OUTER JOIN: 왼쪽 테이블의 모든 행 유지. 오른쪽 테이블은 매칭되는 경우에만 값 출력. 매칭 안되면 오른쪽 컬럼은 NULL

 

12번

다음 중 CROSS JOIN에 대한 설명으로 가장 적절한 것은?

  1. 두 테이블에서 조인 조건이 일치하는 행만 반환한다.
  2. 두 테이블의 가능한 모든 조합을 반환한다.
  3. 자기 자신과 조인하는 방식이다.
  4. 외부 조인의 한 종류이다.
더보기

정답: 2
CROSS JOIN = 카테시안 곱 : 두 테이블의 가능한 모든 조합 반환

두 테이블에서 조인 조건이 일치하는 행만 반환한다. → INNER JOIN
자기 자신과 조인하는 방식이다. → SELF JOIN
외부 조인의 한 종류이다. → OUTER JOIN

 

13번

다음 SQL은 어떤 유형의 서브쿼리인가?

SELECT ename
FROM emp
WHERE sal > (
SELECT AVG(sal)
FROM emp
);

  1. 다중행 서브쿼리
  2. 단일행 서브쿼리
  3. 상관 서브쿼리
  4. 인라인 뷰
더보기

정답: 2
해당 서브쿼리는 평균값 1개만 나옴. 즉 결과가 1행 1컬럼인 서브쿼리이므로 단일행 서브쿼리임

다중행 서브쿼리 → 여러 행 반환
상관 서브쿼리 → 바깥 쿼리의 값을 참조
인라인 뷰 → FROM절 안에 있는 서브쿼리

 

14번

다음 중 다중행 서브쿼리와 함께 사용하는 연산자로 가장 적절한 것은?

  1. =
  2. IN
  3. LIKE
  4. IS NULL
더보기

정답: 2
다중행 서브쿼리 연산자 : IN, ANY, ALL, EXISTS

 

15번

다음 중 UNION과 UNION ALL의 차이로 가장 적절한 것은?

  1. UNION은 정렬하고 UNION ALL은 정렬하지 않는다.
  2. UNION은 중복을 제거하고 UNION ALL은 중복을 허용한다.
  3. UNION ALL은 교집합을 구한다.
  4. UNION은 컬럼 수가 달라도 사용할 수 있다.
더보기

정딥: 2

 

16번

다음 중 윈도우 함수에 대한 설명으로 가장 적절한 것은?

  1. GROUP BY처럼 행 수를 줄여서 반환한다.
  2. 항상 단일 결과 행만 반환한다.
  3. 행은 유지하면서 순위나 집계값을 구할 수 있다.
  4. WHERE절에서만 사용할 수 있다.
더보기

정답: 3
윈도우 함수: 행을 유지하면서 순위나 누적합, 평균 등을 구하는 함수

 

17번

다음 중 RANK, DENSE_RANK, ROW_NUMBER에 대한 설명으로 가장 적절한 것은?

  1. 세 함수는 동점 처리 방식이 모두 동일하다.
  2. ROW_NUMBER는 동점이어도 서로 다른 순번을 부여한다.
  3. RANK는 동점 발생 시 다음 순위를 건너뛰지 않는다.
  4. DENSE_RANK는 반드시 1부터 시작하지 않는다.
더보기

정답: 2
ROW_NUMBER(): 무조건 각 행에 서로 다른 번호 부여. 동점이어도 다른 번호
RANK(): 동점이면 같은 순위, 다음 순위 건너뜀
DENSE_RANK(): 동점이면 같은 순위, 다음 순위 안 건너뜀

 

18번

다음 중 PIVOT과 UNPIVOT에 대한 설명으로 가장 적절한 것은?

  1. PIVOT은 열을 행으로, UNPIVOT은 행을 열로 변환한다.
  2. PIVOT은 행을 열로, UNPIVOT은 열을 행으로 변환한다.
  3. 둘 다 정렬 전용 기능이다.
  4. 둘 다 조인 전용 기능이다.
더보기

정답:2

 

19번

다음 중 DDL에 해당하는 명령어만 올바르게 묶인 것은?

  1. INSERT, UPDATE, DELETE
  2. COMMIT, ROLLBACK, SAVEPOINT
  3. CREATE, ALTER, DROP
  4. GRANT, REVOKE, COMMIT
더보기

정답: 3
DDL(구조 정의): CREATE,ALTER,DROP,TRUNCATE,RENAME
DML(데이터 조작): INSERT,UPDATE,DELETE,MERGE
TCL(트랜잭션 제어): COMMIT,ROLLBACK,SAVEPOINT
DCL(권한 제어): GRANT,REVOKE

 

20번

다음 중 DELETE, TRUNCATE, DROP에 대한 설명으로 가장 적절한 것은?

  1. DELETE는 테이블 구조까지 제거한다.
  2. TRUNCATE는 특정 조건의 행만 삭제할 수 있다.
  3. DROP은 객체 자체를 제거한다.
  4. DELETE와 DROP은 완전히 동일한 기능이다.
더보기

정답: 3
DELETE: 행 삭제. WHERE 사용 가능. 테이블 구조는 남음
TRUNCATE: 테이블의 모든 행 제거. 구조는 남음. 보통 조건 지정 없이 전체 삭제
DROP: 객체 자체 제거. 테이블 구조 자체가 사라짐

 

반응형