---------------------------------------------------------------------------------------------------------------------------------------------
- 데이터 유형에 대한 설명 중 틀린 것?
1. VARCHAR 유형은 가변 길이 숫자형
2. CHAR 유형은 고정 길이 문자형
3. NUMERIC 유형은 숫자형 데이터 표현
4. DATE 유형은 날짜 데이터를 다룰 때 사용
답 : 1번
VARCHAR 유형은 가변 길이 문자형
---------------------------------------------------------------------------------------------------------------------------------------------
- 테이블 명으로 가능한 것?
답 : EMP100
테이블명과 칼럼명은 반드시 문자로 시작해야함
---------------------------------------------------------------------------------------------------------------------------------------------
- Commit과 Rollback의 장점으로 적합하지 않은 것?
1. 데이터 무결성 보장
2. 영구적인 변경을 할 수 없게함
3. 영구적인 변경을 하기 전에 데이터의 변경 사항 확인이 가능함
4. 논리적으로 연관된 작업을 그룹핑하여 처리 가능
답 : 2번
Commit : 트랜젝션 처리 과정을 db에 반영하기 위해 변경된 내용을 모두 영구 저장
Rollback : 트랜젝션으로 인한 하나의 묶음 처리가 시작되기 이전의 상태(이전 Commit한 곳)로 되돌림
---------------------------------------------------------------------------------------------------------------------------------------------
- 어떠한 데이터 타입도 사용이 가능한 집계 함수는?
1. AVG
2. SUM
3. COUNT
4. STDDEV
답 : 3번
MAX, MIN, COUNT 함수는 숫자 유형만 아니라 문자, 날짜에도 적용 가능
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 SQL 문장에서 틀린 부분?
1. SELECT PLAYER.PLAYER_NAME 선수명, TEAM.TEAM_NAME 팀명
2. FROM PLAYER P , TEAM T
3. WHERE P.TEAM_ID=T.TEAM_ID
4. ORDER BY 선수명 ;
답 : 1번
ALIAS(별칭)이 FROM절에 사용되었을 때는 SELECT 문장에서 테이블 이름 대신 ALIAS를 사용함
따라서 P.PLAYER_NAME, T.TEAM_NAME이 되어야함
---------------------------------------------------------------------------------------------------------------------------------------------
★★ - JOIN의 종류에 대한 설명으로 틀린 것?
1. NON-EQUI JOIN은 등가 조건이 성립되지 않은 테이블에 JOIN을 걸어주는 방법
2. EQUI JOIN은 반드시 기본키, 외래키 관계에 의해서만 성립됨
3. OUTER JOIN은 JOIN 조건을 만족하지 않는 데이터도 볼 수 있는 JOIN 방법
4. SELF JOIN은 하나의 테이블을 논리적으로 분리시켜 EQUI JOIN을 이용하는 방법
답 : 2번
# EQUI JOIN과 INNER JOIN은 비슷해 보이지만 각각 분류 범주가 다름
* EQUI JOIN : 두 테이블 간의 컬럼 값들이 일치하는 경우, JOIN 조건으로 '=' 연산자 사용
* NON EQUI JOIN : 두 에티블 간의 값들이 서로 일치하지 않는 경우, JOIN 조건으로 '>=',BETWEEN ~ AND 등의 범위 비교 연산자 사용
* INNER JOIN : JOIN 조건에서 값이 일치하는 행만 반환
* OUTER JOIN : JOIN 조건에서 값이 일치하는 행과 일치하지 않는 행도 포함
* OUTER JOIN에너는 FULL OUTER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN이 있음
---------------------------------------------------------------------------------------------------------------------------------------------
★★ - 다음 설명 중 올바르지 않은 것?
1. UNION ALL 연산자는 조회 결과를 정렬하고 중복되는 데이터를 한 번만 표현
2. UNION 연산자는 조회 결과에 대한 합집합을 나타내며 자동으로 정렬함
3. INTERSERCT 연산자는 조회 결과에 대한 교집합을 의미
4. EXCEPT 연산자는 조회 결과에 대한 차집합을 의미
- 답 : 1번
UNION ALL 연산자는 조회 결과에 대해 별도의 정렬 작업을 하지 않음 또한 중복 데이터에 대해서도 삭제하지 않고 여러 번 중복을 표현함
* UNION 연산자는 두 개의 테이블을 하나로 합치고 중복된 데이터를 제거하며 정렬(SORT) 과정을 거침
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중 SELF JOIN을 수행해야 할 때는 ?
1. 한 테이블 내에서 두 칼럼이 연관 관계가 있음
2. 두 테이블에 연관된 칼럼은 없으나 JOIN을 해야함
3. 두 테이블에 공통 칼럼이 존재하고 두 테이블이 연관 관계가 있음
4. 한 테이블 내에서 연관된 칼럼은 없으나 JOIN을 해야 함
답 : 1번
한 테이블에 존재하는 칼럼 사이에 의미있는 관계가 존재할 때 SELFJOIN을 함
---------------------------------------------------------------------------------------------------------------------------------------------
★★ - 일반적으로 FROM절에 정의된 후 먼저 수행되어 SQL 문장 내에서 절차성을 주는 효과를 볼 수 있는 것은 어떤 유형의 서브쿼리 문장인가?
1. SCALAR SUBQUERY
2. INLINE VIEW
3. CORRELATED SUBQUERY
4. NESTERD SUBQUERY
답 : 2번
# SUBQUERY는 어느 위치에 사용하느냐에 따라 유형이 구분됨
SELECT 절 서브쿼리 = SCALAR SUBQUERY
FROM 절 서브쿼리 = INLINE VIEW
WHERE 절 서브쿼리 = NESTED SUBQUERY
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 서브쿼리에 대한 설명 중 틀린 것?
1. 상호연관 서브쿼리(CORRELATED SUBQUERY)는 처리 속도가 가장 빠르기 때문에 최대한 활용해야함
2. TON-N 서브쿼리는 INLINE VIEW의 정렬된 데이터를 ROWNUM을 이용해 결과 행 수를 제한하거나 TOP(N) 조건을 사용하는 서브쿼리임
3. INLINE VIEW는 FROM절에 사용되는 서브쿼리로서 실질적인 OBJECT는 아니지만, SQL 문장에서 마치 VIEW나 테이블처럼 사용되는 서브쿼리임
4. 다중행 연산자는 IN, ANY, ALL이 있으며 서브쿼리의 결과로 하나 이상의 데이터가 RETURN됨
답 : 1번
상호연관 서브쿼리는 서브쿼리가 메인쿼리 행 수만큼 실행되는 쿼리로서 실행 속도가 상대적으로 떨어짐
---------------------------------------------------------------------------------------------------------------------------------------------
- 소계, 중계, 합계처럼 계층적 분류를 포함하고 있는 데이터의 집계에 적합한 GROUP 함수 두가지는?
답 : ROLLUP, CUBE
ROLLUP(ID, YYYYMM) : ID 별 월별 가격 소계가 나오며, 추가로 ID별 가격 소계가 나오고 마지막에 전체 소계가 나옴
CUBE(ID, YYYYMM) : 모든 경우의 수에 대하여 소계 와 총계를 생성함
GROUPING SETS(ID, YYYYMM) : 괄호로 묶은 집합별로 ID별, YYYYMM별로 나옴, 총계와 소계는 없음
---------------------------------------------------------------------------------------------------------------------------------------------
- 그룹 내 순위 관련 WINDOW 함수의 특징으로 틀린 것?
1. RANK 함수는 동일한 값에 대해서는 동일한 순위를 부여함(같은 등수에 여럿이 존재하는 경우 등수가 SKIP됨)
2. DENSE_RANK 함수는 RANK 함수와 비슷하나 동일한 순위를 하나의 건수로 취급한다는 차이점이 있음(같은 등수에 여럿이 존재해도 등수가 SKIP되지 않음)
3. RANK 함수가 동일한 값에 대해서는 동일한 순위를 부여하는 데 반해 ROW_NUMBER 함수는 고유한 순위를 부여함(같은 등수 존재하지 않음)
4. CUMM_RANK 함수는 누적된 순위를 부여할 수 있음(등수를 누적 순위로 표현)
답 : 4번
4번은 DENSE_RANK에 관한 설명, CUMM_RANK는 존재하지 않음
---------------------------------------------------------------------------------------------------------------------------------------------
★★ - 다음 중 옳은 것은?
1. 유저를 생성하면 생성한 유저로 바로 로그인할 수 있음
2. 새롭게 생성된 유저라면 조건 없이 새로운 유저를 만들 수 있음
3. 다른 유저의 테이블은 그 테이블에 대한 권한 없이는 조회할 수 없음
4. 유저 생성은 누구나 할 수 있지만 권한 설정은 데이터베이스 관리자만 가능함
답 : 3번
테이블에 대한 권한은 각 테이블의 소유자가 가지고 있기 때문에 소유자로부터 권한을 받지 않으면 다른 유저의 테이브렝 접근할 수 없음
---------------------------------------------------------------------------------------------------------------------------------------------
★★ - 다음 중 절차형 SQL을 이용하여 주로 만드는 것이 아닌 것은?
1. PROCEDURE
2. TRIGGER
3. BUILT-IN FUNCTION
4. USER DEFINED FUNCTION
답 : 3번
절차형 SQL이란 일반적인 언어형식과 같이 절차적으로 명령을 수행하는 SQL
---------------------------------------------------------------------------------------------------------------------------------------------
★★ - 옵티마이저에 대한 설명으로 적절하지 않은 것?
1. 옵티마이저는 질의에 대해 실행 계획을 생성함
2. 비용 기반 옵티마이저는 적절한 인덱스가 존재하면 반드시 인덱스를 사용함
3. 규칙 기반 옵티마이저에서 제일 낮은 우선순위는 전체 테이블 스캔임
4. 비용 기반 옵티마이저는 비용 계산을 위해 다양한 통계정보를 사용함
답 : 2번
비용 기반 옵티마이저는 비용을 기반으로 최적의 작업을 수행함, 따라서 인덱스 스캔보다 전체 테이블 스캔이 비용이 낮다고 판단하면 인덱스 스캔을 사용하지 않고 테이블 스캔을 사용함
# 옵티마이저 : 옵티마이저는 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진
항목 | 규칙 기반 옵티마이저 | 비용 기반 옵티마이저 |
개념 | 사전에 정의된 규칙 기반 | 최소비용 계산 실행계획 수립 |
기준 | 실행우선 순위(Ranking) | 액세스 비용(Cost) |
인덱스 | 인덱스 존재 시 가장 우선시 사용 | Cost에 의한 결정 |
성능 | 사용자 SQL작성 숙련도 | 옵티마이저 예측 성능 |
장점 | 판단이 매우 규칙적 실행 예상 가능 | 통계 정보를 통한 현실 요소 적용 |
단점 | 예측 통계정보 요소 무시 | 최소 성능 보장 계획의 예측 제어 어려움 |
---------------------------------------------------------------------------------------------------------------------------------------------
★★ - 실행 계획에 대한 설명으로 적절하지 않은 것?
1. 실행 계획은 SQL문의 처리를 위한 절차와 방법이 표현됨
2. 실행 계획이 다르면 결과도 달라질 수 있음
3. 실행 계획은 액세스 기법, 조인 순서, 조인 방법 등으로 구성됨
4. 최적화 정보는 실행 계획의 단계별 예상비용을 표시한 것
답 : 2번
동일 SQL문에 대해 실행 계획이 다르다고 결과가 달라지지는 않음 그러나 실행 계획 차이로 성능은 달라질 수 있음
# 실행 계획이란 사용자가 SQL을 실행하여 데이터를 추출하려고 할 때 옵티마이저가 수립하는 작업절차를 뜻함
실행 계획은 조인순서, 조인 기법, 액세스 기법, 최적화 정보, 연산 등으로 구성됨
---------------------------------------------------------------------------------------------------------------------------------------------
★★ - SQL 처리 흐름도에 대한 설명으로 적절하지 않은 것?
1. 실행 계획을 시각화 한 것
2. SQL 문의 처리 절차를 시각적으로 표현한 것
3. 인덱스 스캔 및 전체 테이블 스캔 등의 액세스 기법을 표현할 수 있음
4. 성능적인 측면의 표현은 고려하지 않음
답 : 4번
SQL 처리 흐름도에서는 성능적인 측면도 표현할 수 있음(일량적인 측면의 표현이 가능)
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 설명 중 적절한 것은?
1. 인덱스는 인덱스 구성 칼럼으로 항상 오름차순으로 정렬됨
2. 비용 기반 옵티마이저는 인덱스 스캔이 항상 유리하다고 판단함
3. 규칙 기반 옵티마이저는 적절한 인덱스가 존재하면 항상 인덱스를 사용하려고 함
4. 인덱스 범위 스캔은 항상 여러 건의 결과가 반환됨
답 : 3번
인덱스는 내림차순으로 생성 및 정렬됨
비용 기반 옵티마이저는 비용을 따진 후 판단함
인덱스 범위 스캔은 결과 건수만큼 반환함, 결과가 없으면 한 건도 반환하지 않음
---------------------------------------------------------------------------------------------------------------------------------------------
- 조인에 대한 설명으로 적절하지 않은 것은?
1. NESTED LOOP JOIN은 중첩된 반복문과 유사한 형식임
2. FROM절에 나열된 모든 테이블이 동시에 조인 작업이 수행됨
3. NESTED LOOP JOIN은 선행 테이블의 조건을 만족하는 건수만큼 반복 수행됨
4. HASH JOIN은 작은 테이블을 선행 테이블로 사용하는 것이 성능 관점에서 좋음
답 2번
FROM절에 아무리 많은 테이블이 나열되더라도 항상 2개씩 조인됨
중첩 루프 조인(NESTED LOOP JOIN) : 선행 테이블에서 결합 조건에 일치하는 레코드를 후행 테이블에 반복적으로 탐색하면 조인하는 방식, 선행 테이블이 작고 후행 테이블이 커야 효과적
병합 조인(SORT MERGE JOIN) : 조인하려는 두 개의 테이블을 조인 컬럼을 기준으로 오름차순으로 정렬한 후, 두 개의 테이블에서 정렬된 조인 대상 키를 스캔하면서 조인 결과를 생성하는 방식
* 병합 조인의 종류로는 1-1, 1-M, M-N 가 있음
해시 조인(HASH MATCH JOIN) : 조인 대상의 두 테이블 중 데이터가 더 작은 테이블을 Build Input(빌드 입력) 이라 하고, 큰 테이블을 Probe Input(프로브 입력) 이라고 함, Build Input 테이블의 조인 컬럼에 Hash Function(해시 함수) 를 이용해서 Hash Key(테이블의 인덱스 역할) 을 생성 후, Hash Table(해시 맵) 을 생성함 그리고, Probe Input 테이블의 조인 조건에 맞는 해시 테이블을 탐색하며, 해시 함수를 적용하여 해시 키를 생성하고, 해시 테이블에서 같은 해시 키를 찾아서 조인을 진행하는 방식
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 중에서 DDL(DATE DEFINITION LANGUAGE)에 해당하지 않는 것은?
1. REVOKE
2. CREATE INDEX
3. DROP TABLE
4. ALTER TABLE
답 : 1번
REVOKE는 DCL(DATE CONTROL LANGUAGE)로 데이터 제어어임
# DML(DATA MANIPULATION LANGUAGE) 데이터 조작어
SELECT, INSERT, UPDATE, DELETE
# DDL(DATE DEFINITION LANGUAGE) 데이터 정의어
CREATE, ALTER, DROP, RENAME, TRUNCATE
# DCL(DATE CONTROL LANGUAGE) 데이터 제어어
GRANT, REVOKE
# TCL(TRANSACTION CONTROL LANGUAGE) 트랜잭션 제어어
COMMIT, ROLLBACK, SAVEPOINT
---------------------------------------------------------------------------------------------------------------------------------------------
- 조인되는 N개의 테이블을 모두 정렬한 후에 조인을 수행하는 것은?
1. HASH JOIN
2. INNER JOIN
3. NESTED LOOP JOIN
4. SORT MERGE
답 : 4번
SORT MERGE는 테이블을 정렬한 후에 정렬된 테이블을 병합하면서 조인을 실행함
---------------------------------------------------------------------------------------------------------------------------------------------
- SELECT문의 처리 순서로 올바른 것은?
답 : FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
FWGHSO
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 SQL 문에 대한 설명으로 올바르지 않은 것?
가. 실제 데이터 | |
DEPTNO | SAL |
10 | |
10 | 1000 |
10 | 2000 |
20 | |
20 | 500 |
나. SELCT문
SELECT DEPTNO, SUM(NVL(SAL,0))
FROM DEPT
GROUP BY DEPTNO
1. SELCT문에 WHERE 조건이 없으므로 연산에 참여하는 총 행 수는 5개임
2. DEPNO 10의 합계는 3000이고 20의 합계는 500임
3. NVL(SAL,0)문에서 NVL은 NULL에 대한 합계 오류를 예방함
4. 부서별 합계를 계산할 때 NULL값을 만나면 0으로 치환함
답 : 3번
그룹 함수를 사용할 때 NULL값은 연산에서 제외됨 따라서 NVL 함수를 사용하는 것과 합계 오류 예방은 상관이 없음
---------------------------------------------------------------------------------------------------------------------------------------------
- 다음 주어진 그룹 함수와 동일한 결괏값을 반환하는 그룹 함수를 고르시오
GROUP BY CUBE(DEPTNO, JOB)
1. GROUP BY ROLLUP(DEPTNO, JOB)
2. GROUP BY (DEPTNO, JOB,(DEPTNO,JOB),());
3. GROUP BY DEPTNO UNION ALL GROUP BY JOB UNION ALL GROUP BY(DEPTNO, JOB)
4. GROUP BY GROUPING SETS(DEPTNO, JOB,(DEPTNO,JOB),());
답 : 4번
CUBE(ID, YYYYMM) : 모든 경우의 수에 대하여 소계 와 총계를 생성함
즉 NULL에 대한 행도 나타나므로 4번의 ()를 통해 NULL을 표현함
'공부 > 【SQLD】' 카테고리의 다른 글
【SQLD】 1과목 데이터 모델링의 이해 기출문제 정리 (0) | 2024.08.22 |
---|---|
【SQLD】 2과목 SQL 기본 및 활용 연습문제 정리(5) (0) | 2024.08.21 |
【SQLD】 2과목 SQL 기본 및 활용 연습문제 정리(4) (0) | 2024.08.16 |
【SQLD】 2과목 SQL 기본 및 활용 연습문제 정리(3) (1) | 2024.08.15 |
【SQLD】 2과목 SQL 기본 및 활용 연습문제 정리(2) (0) | 2024.08.15 |