| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- 악성코드
- 코드업
- 랜섬웨어
- 정보처리기사
- Volatility
- 보안
- defcon.mem
- 리버싱
- Code Up
- 오늘의 영어
- 리버싱 핵심원리
- C
- C language
- 정처기 실기
- 필기
- codeup
- c언어
- 멀웨어
- SQLD
- 보안동향
- 해킹
- 코딩
- sql
- 정처기 필기
- ctf
- Defcon DFIR CTF 2019
- Memory Forensics
- 오늘의 보안
- 정보보안기사
- 정처기
- Today
- Total
오브의 빛나는 별
[SQL] SQLD를 위한 기초 문제1 본문
[1과목]
1번
다음 중 데이터 모델링의 특징으로 가장 적절하지 않은 것은?
- 단순화는 복잡한 현실을 핵심 중심으로 표현하는 것이다.
- 추상화는 공통된 형식으로 업무를 표현하는 것이다.
- 명확화는 누구나 이해할 수 있도록 의미를 분명히 하는 것이다.
- 구체화는 모든 업무 세부사항을 빠짐없이 저장하는 것을 의미한다.
정답: 4
2번
다음 중 논리적 데이터 모델링에 해당하는 설명은?
- 데이터 저장 장치와 인덱스 구조를 설계하는 단계
- 업무 핵심 엔터티를 도출하고 개념 수준에서 표현하는 단계
- 정규화를 수행하고 식별자와 관계를 정의하는 단계
- 실제 테이블 생성 스크립트를 작성하는 단계
정답: 2
데이터 저장 장치와 인덱스 구조를 설계하는 단계 → 물리적 모델링
업무 핵심 엔터티를 도출하고 개념 수준에서 표현하는 단계 → 개념적 모델링
실제 테이블 생성 스크립트를 작성하는 단계 → 물리적 구현
개념적 모델링 : 큰 개념 파악
논리적 모델링 : 구조 설계 - 엔터티 확정, 속성/관계/식별자 정의, 정규화 수행
물리적 모델링 : 실제 DB 반영
3번
다음 중 물리적 데이터 모델링의 설명으로 가장 적절한 것은?
- 업무 프로세스 분석 결과를 개념적으로 표현하는 단계
- 사용자 관점의 화면 설계를 수행하는 단계
- DBMS 특성을 고려하여 테이블, 컬럼, 인덱스를 정의하는 단계
- 엔터티 간의 업무 관계만을 정의하는 단계
정답: 3
업무 프로세스 분석 결과를 개념적으로 표현하는 단계 → 개념적 모델링
사용자 관점의 화면 설계를 수행하는 단계 → 데이터 모델링 설명이 아님
엔터티 간의 업무 관계만을 정의하는 단계 → 논리적 모델링
물리적 모델링: 테이블명/컬럼명/데이터 타입/인덱스 정의, 저장 구조 고려
4번
다음 중 물리적 독립성에 대한 설명으로 가장 적절한 것은?
- 외부 스키마 변경이 내부 스키마에 영향을 주지 않는 것
- 내부 스키마 변경이 개념 스키마에 영향을 최소화하는 것
- 개념 스키마 변경이 외부 스키마에 영향을 주지 않는 것
- 사용자 화면이 변경되어도 프로그램 수정이 필요 없는 것
정답: 2
물리적 독립성: 저장 위치/인덱스/파일 구조 변경이 있어도 사용자나 논리 모델은 영향X
개념 스키마 변경이 외부 스키마에 영향을 주지 않는 것 → 논리적 독립성
5번
다음 중 엔터티의 일반적인 특징으로 가장 적절하지 않은 것은?
- 엔터티는 반드시 하나 이상의 속성을 가져야 한다.
- 엔터티는 업무상 관리할 필요가 있는 대상이어야 한다.
- 엔터티는 다른 엔터티와 관계가 없어도 반드시 독립적으로 존재해야 한다.
- 엔터티는 식별 가능해야 한다.
정답: 3
엔터티 특질: 업무상 필요, 식별 가능, 속성O, 다른 엔터티와 관계 가지는 것
6번
다음 중 사건 엔터티의 예로 가장 적절한 것은?
- 고객
- 상품
- 주문
- 부서
정답: 3
사건 엔터티: 업무 수행 과정에서 발생하는 행위/이벤트 중심 엔터티
고객 → 기본 엔터티
상품 → 기본 엔터티
부서 → 기본 엔터티
7번
다음 중 엔터티 명명 원칙으로 가장 적절한 것은?
- 가능한 한 줄임말을 사용해 명칭을 짧게 만든다.
- 동일 모델 내에서 중복된 이름도 의미만 다르면 허용된다.
- 현업에서 사용하는 용어를 바탕으로 단수형 명사를 사용한다.
- 물리 테이블명을 그대로 논리 엔터티명으로 사용한다.
정답: 3
가능한 한 줄임말을 사용해 명칭을 짧게 만든다. → 줄임말 남용X
동일 모델 내에서 중복된 이름도 의미만 다르면 허용된다. → 중복X
물리 테이블명을 그대로 논리 엔터티명으로 사용한다. → 같을 필요X
엔터티 명명 원칙: 현업에서 사용하는 용어 사용, 의미 명확, 단수명사 사용, 중복X, 약어 사용 지양
8번
다음 중 파생 속성에 해당하는 것은?
- 고객명
- 주문일자
- 총주문금액
- 상품코드
정답: 3
고객명 → 기본 속성
주문일자 → 기본 속성
상품코드 → 설계 속성
파생 속성: 다른 속성으로부터 계산되거나 유도되는 속성
9번
다음 중 복합 속성의 예로 가장 적절한 것은?
- 생년월일
- 주소
- 고객번호
- 주문수량
정답: 2
복합 속성: 하나의 속성이지만 내부적으로 여러 의미 단위로 나눌 수 있는 속성
ex) 보통 주소가 대표적 예시
10번
다음 중 다중값 속성에 대한 설명으로 가장 적절한 것은?
- 하나의 속성이 항상 하나의 값만 가져야 하므로 존재할 수 없다.
- 여러 값을 가질 수 있으며 필요 시 별도의 엔터티로 분리할 수 있다.
- 기본키의 역할을 수행하는 속성이다.
- 설계 속성의 다른 이름이다.
정답: 2
다중값 속성: 하나의 엔터티 인스턴스가 하나의 속성에 대해 여러 값을 가질 수 있는 경우
ex) 취미
11번
다음 중 함수적 종속성에 대한 설명으로 가장 적절한 것은?
- 기본키는 어떤 속성에도 종속될 수 없다.
- 어떤 속성 A의 값이 정해지면 속성 B의 값도 유일하게 정해질 때 A→B로 표현한다.
- 함수적 종속성은 물리 모델링에서만 사용되는 개념이다.
- 외래키는 항상 모든 일반 속성에 함수적으로 종속된다.
정답: 2
어떤 속성 A의 값이 정해지면 속성 B의 값이 유일하게 정해지는 관계. A→B
ex) 학번→학생명, 고객번호→고객명
12번
고객 엔터티와 주문 엔터티의 관계가 다음과 같을 때 가장 적절한 차수는?
- 한 명의 고객은 여러 건의 주문을 할 수 있다.
- 하나의 주문은 반드시 한 명의 고객에 의해 발생한다.
- 1:1
- 1:N
- N:M
- M:1과 1:N을 동시에 표현할 수 없다
정답: 2
한 명의 고객은 여러 건의 주문을 할 수 있다 → 고객 1명 : 주문 여러 건
하나의 주문은 반드시 한 명의 고객에 의해 발생한다 → 주문 1건 : 고객 1명
즉, 고객 기준으로 보면 1:N 관계
13번
다음 중 N:M 관계에 대한 설명으로 가장 적절한 것은?
- 두 엔터티 사이에 직접 외래키만 두면 항상 해결된다.
- 조인 성능과 무관하므로 별도 조치가 필요 없다.
- 보통 연결 엔터티를 추가해 1:N 관계로 해소한다.
- 오직 개념 모델에서만 허용되고 논리 모델에서는 사용되지 않는다.
정답: 3
학생←→과목, 주문←→상품 ⇒ 연결 엔터티 추가
수강(학생번호, 과목번호), 주문상세(주문번호, 상품번호)
N:M 관계 ⇒ 두 개의 1:N의로 분해
14번
다음 중 주식별자의 조건에 해당하지 않는 것은?
- 유일성
- 최소성
- 가변성 → 불변성
- 존재성
정답: 3
주식별자 조건 = 유일성 + 최소성 + 불변성 + 존재성
15번
다음 중 외부식별자에 대한 설명으로 가장 적절한 것은?
- 엔터티 내부에서 자체 생성된 식별자
- 다른 엔터티와의 관계에 의해 가져온 식별자
- 반드시 인조식별자여야 하는 식별자
- 대표성을 가지지 않는 보조식별자
정답:2
엔터티 내부에서 자체 생성된 식별자 → 내부식별자
16번
다음 중 본질식별자와 인조식별자에 대한 설명으로 가장 적절한 것은?
- 본질식별자는 항상 단일 속성이어야 한다.
- 인조식별자는 업무 의미를 반드시 포함해야 한다.
- 본질식별자는 업무적으로 의미가 있는 식별자이고, 인조식별자는 인위적으로 만든 식별자이다.
- 인조식별자는 SQL 조인에 사용할 수 없다.
정답: 3
본질식별자는 항상 단일 속성이어야 한다. → 복합 식별자일 수도 있다.
인조식별자는 업무 의미를 반드시 포함해야 한다. → 오히려 업무 의미가 없고 인위적으로 만든 경우가 많다.
인조식별자는 SQL 조인에 사용할 수 없다. → 기본키/외래키로 충분히 조인에 사용할 수 있다.
17번
다음 중 식별관계에 대한 설명으로 가장 적절한 것은?
- 부모 엔터티의 주식별자가 자식 엔터티의 일반 속성으로만 존재하는 관계
- 부모 엔터티의 주식별자가 자식 엔터티의 주식별자에 포함되는 관계
- 부모 엔터티와 자식 엔터티가 서로 독립적으로 생성되는 관계
- 자식 엔터티가 부모 엔터티 없이 먼저 생성되는 관계
정답: 2
주문(주문번호), 주문상세(주문번호, 상품번호)
18번
다음 테이블은 어느 정규형 위반과 가장 관련이 깊은가?
- 수강(학생번호, 과목번호, 학생명, 과목명, 담당교수
- 기본키: (학생번호, 과목번호) → 복합키
- 학생명은 학생번호에만 종속
- 과목명, 담당교수는 과목번호에만 종속
- 제1정규형 위반
- 제2정규형 위반
- 제3정규형 위반
- 보이스-코드 정규형 위반
정답: 2
제1정규형 위반 → 원자성
제2정규형 위반 → 부분 함수 종속
제3정규형 위반 → 이행 함수 종속
19번
다음 중 제3정규형에 대한 설명으로 가장 적절한 것은?
- 반복 속성을 제거하여 원자성을 확보한 상태
- 부분 함수 종속을 제거한 상태
- 이행 함수 종속을 제거한 상태
- 모든 다대다 관계를 제거한 상태
정답: 3
반복 속성을 제거하여 원자성을 확보한 상태 → 1NF
부분 함수 종속을 제거한 상태 → 2NF
제1정규형 위반 → 원자성
제2정규형 위반 → 부분 함수 종속
제3정규형 위반 → 이행 함수 종속
20번
다음 중 NULL 속성에 대한 설명으로 가장 적절한 것은?
- NULL은 공백 문자와 같은 의미이다.
- NULL은 숫자 0과 같은 의미이다.
- NULL은 값이 없거나 아직 정해지지 않았음을 의미할 수 있다.
- 주식별자에는 NULL이 허용되어야 한다.
정답: 3
[2과목]
1번
다음 SQL의 실행 순서로 가장 적절한 것은?
SELECT deptno, AVG(sal)
FROM emp
WHERE sal >= 1000
GROUP BY deptno
HAVING AVG(sal) >= 2000
ORDER BY deptno;
- SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY
- FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
- FROM → GROUP BY → WHERE → HAVING → SELECT → ORDER BY
- 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에 대한 설명으로 가장 적절한 것은?
- 결과를 오름차순으로 정렬한다.
- 중복된 행을 제거한다.
- NULL 값을 제거한다.
- 그룹별 집계를 수행한다.
정답: 2
결과를 오름차순으로 정렬한다. → ORDER BY
그룹별 집계를 수행한다. → GROUP BY
3번
다음 SQL 실행 결과에 대한 설명으로 가장 적절한 것은?
SELECT COUNT(*), COUNT(comm)
FROM emp;
- 두 결과는 항상 같다.
- COUNT(comm)은 NULL을 포함하여 센다.
- COUNT(*)는 전체 행 수를 센다.
- COUNT(*)는 NULL이 있는 행을 제외한다.
정답: 3
두 결과는 항상 같다. → 같지 않음
COUNT(comm)은 NULL을 포함하여 센다. → NULL 제외
COUNT(*)는 NULL이 있는 행을 제외한다. → 전체 행 수
COUNT(comm) : comm 컬럼이 NULL이 아닌 행만 셈
4번
다음 중 WHERE절에서 사용할 수 없는 조건으로 가장 적절한 것은?
- sal >= 3000
- ename LIKE 'S%'
- deptno IN (10, 20, 30)
- AVG(sal) > 2000
정답: 4
행 단위 조건. 집계함수 결과에 조건을 거는 곳은 HAVING임
sal >= 3000 → 일반 비교 조건
ename LIKE 'S%' → 문자열 패턴 조건
deptno IN (10, 20, 30) → 여러 값 비교 조건
5번
다음 중 NULL 비교에 대한 설명으로 가장 적절한 것은?
- comm = NULL로 비교한다.
- comm <> NULL로 비교한다.
- comm IS NULL로 비교한다.
- comm IN NULL로 비교한다.
정답: 3
NULL은 일반 값이 아니므로 = 또는 <>로 비교 불가
6번
다음 SQL과 같은 의미를 가지는 설명으로 가장 적절한 것은?
SELECT ename
FROM emp
WHERE ename LIKE '_A%';
- 이름이 A로 시작하는 사원을 조회한다.
- 이름의 두 번째 글자가 A인 사원을 조회한다.
- 이름이 A로 끝나는 사원을 조회한다.
- 이름에 A가 포함된 모든 사원을 조회한다.
정답: 2
A%: 첫번째 글자는 아무 문자 1개, 두번째 글자는 A, 세번째 글자 이후는 아무 문자열 가능
<LIKE 와일드카드 의미>
%: 0개 이상 문자열
_: 정확히 1개 문자
7번
다음 중 GROUP BY에 대한 설명으로 가장 적절한 것은?
- 그룹 함수는 GROUP BY 없이 사용할 수 없다. 사용 가능
- GROUP BY에 사용되지 않은 일반 컬럼은 SELECT절에 사용할 수 없다.
- GROUP BY는 정렬 기능만 수행한다.
- 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;
- WHERE
- ORDER BY
- HAVING
- DISTINCT
정답: 3
AVG(sal)은 집계 결과이므로 그룹화 후 조건 가능 → HAVING
9번
다음 중 ORDER BY절에 대한 설명으로 가장 적절한 것은?
- WHERE절보다 먼저 수행된다.
- GROUP BY절보다 먼저 수행된다.
- SELECT 결과를 정렬한다.
- 반드시 컬럼명만 사용할 수 있다.
정답: 3
FWGHSO 순으로 ORDER BY는 가장 마지막 (포워드가 해써요)
반드시 컬럼명만 사용할 수 있다. → 컬럼명, 별칭, 순번 사용 가능
10번
다음 SQL의 결과로 가장 적절한 설명은?
SELECT e.ename, d.dname
FROM emp e
JOIN dept d
ON e.deptno = d.deptno;
- 두 테이블의 모든 행 조합이 출력된다.
- 조인 조건을 만족하는 행만 출력된다.
- emp 테이블의 모든 행이 반드시 출력된다.
- 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;
- 조인 조건이 맞는 행만 출력된다.
- 오른쪽 테이블의 모든 행이 유지된다.
- 왼쪽 테이블의 모든 행이 유지된다.
- 두 테이블의 교집합만 출력된다.
정답: 3
LEFT OUTER JOIN: 왼쪽 테이블의 모든 행 유지. 오른쪽 테이블은 매칭되는 경우에만 값 출력. 매칭 안되면 오른쪽 컬럼은 NULL
12번
다음 중 CROSS JOIN에 대한 설명으로 가장 적절한 것은?
- 두 테이블에서 조인 조건이 일치하는 행만 반환한다.
- 두 테이블의 가능한 모든 조합을 반환한다.
- 자기 자신과 조인하는 방식이다.
- 외부 조인의 한 종류이다.
정답: 2
CROSS JOIN = 카테시안 곱 : 두 테이블의 가능한 모든 조합 반환
두 테이블에서 조인 조건이 일치하는 행만 반환한다. → INNER JOIN
자기 자신과 조인하는 방식이다. → SELF JOIN
외부 조인의 한 종류이다. → OUTER JOIN
13번
다음 SQL은 어떤 유형의 서브쿼리인가?
SELECT ename
FROM emp
WHERE sal > (
SELECT AVG(sal)
FROM emp
);
- 다중행 서브쿼리
- 단일행 서브쿼리
- 상관 서브쿼리
- 인라인 뷰
정답: 2
해당 서브쿼리는 평균값 1개만 나옴. 즉 결과가 1행 1컬럼인 서브쿼리이므로 단일행 서브쿼리임
다중행 서브쿼리 → 여러 행 반환
상관 서브쿼리 → 바깥 쿼리의 값을 참조
인라인 뷰 → FROM절 안에 있는 서브쿼리
14번
다음 중 다중행 서브쿼리와 함께 사용하는 연산자로 가장 적절한 것은?
- =
- IN
- LIKE
- IS NULL
정답: 2
다중행 서브쿼리 연산자 : IN, ANY, ALL, EXISTS
15번
다음 중 UNION과 UNION ALL의 차이로 가장 적절한 것은?
- UNION은 정렬하고 UNION ALL은 정렬하지 않는다.
- UNION은 중복을 제거하고 UNION ALL은 중복을 허용한다.
- UNION ALL은 교집합을 구한다.
- UNION은 컬럼 수가 달라도 사용할 수 있다.
정딥: 2
16번
다음 중 윈도우 함수에 대한 설명으로 가장 적절한 것은?
- GROUP BY처럼 행 수를 줄여서 반환한다.
- 항상 단일 결과 행만 반환한다.
- 행은 유지하면서 순위나 집계값을 구할 수 있다.
- WHERE절에서만 사용할 수 있다.
정답: 3
윈도우 함수: 행을 유지하면서 순위나 누적합, 평균 등을 구하는 함수
17번
다음 중 RANK, DENSE_RANK, ROW_NUMBER에 대한 설명으로 가장 적절한 것은?
- 세 함수는 동점 처리 방식이 모두 동일하다.
- ROW_NUMBER는 동점이어도 서로 다른 순번을 부여한다.
- RANK는 동점 발생 시 다음 순위를 건너뛰지 않는다.
- DENSE_RANK는 반드시 1부터 시작하지 않는다.
정답: 2
ROW_NUMBER(): 무조건 각 행에 서로 다른 번호 부여. 동점이어도 다른 번호
RANK(): 동점이면 같은 순위, 다음 순위 건너뜀
DENSE_RANK(): 동점이면 같은 순위, 다음 순위 안 건너뜀
18번
다음 중 PIVOT과 UNPIVOT에 대한 설명으로 가장 적절한 것은?
- PIVOT은 열을 행으로, UNPIVOT은 행을 열로 변환한다.
- PIVOT은 행을 열로, UNPIVOT은 열을 행으로 변환한다.
- 둘 다 정렬 전용 기능이다.
- 둘 다 조인 전용 기능이다.
정답:2
19번
다음 중 DDL에 해당하는 명령어만 올바르게 묶인 것은?
- INSERT, UPDATE, DELETE
- COMMIT, ROLLBACK, SAVEPOINT
- CREATE, ALTER, DROP
- 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에 대한 설명으로 가장 적절한 것은?
- DELETE는 테이블 구조까지 제거한다.
- TRUNCATE는 특정 조건의 행만 삭제할 수 있다.
- DROP은 객체 자체를 제거한다.
- DELETE와 DROP은 완전히 동일한 기능이다.
정답: 3
DELETE: 행 삭제. WHERE 사용 가능. 테이블 구조는 남음
TRUNCATE: 테이블의 모든 행 제거. 구조는 남음. 보통 조건 지정 없이 전체 삭제
DROP: 객체 자체 제거. 테이블 구조 자체가 사라짐
'SQL' 카테고리의 다른 글
| [SQL] SQLD 21회 기출문제 (0) | 2023.11.15 |
|---|---|
| [SQL] 과목Ⅱ. SQL 기본 및 활용(3) (0) | 2023.11.15 |
| [SQL] Oracle SQL Developer 실행 방법 (0) | 2023.11.13 |
| [SQL] Oracle SQL Developer 다운로드 및 설치 (1) | 2023.11.13 |
| [SQL] 과목Ⅱ. SQL 기본 및 활용(2) (1) | 2023.11.13 |