본문 바로가기
Database & Bigdata/SQLD

[SQLD] 최신기출문제 (32회차,31회차,30회차) - 오답체크

by jionee 2020. 9. 3.
SMALL

[32회차 시험 - 2019년 3월 16일 시행 ] -  1과목 9/10, 2과목 32/40, 총 41/50 (82점)

2. SQL기본 및 활용

Q1. 특정 칼럼의 데이터 타입 조건으로 NOT NULL을 default로 지정하는 쿼리문은 ?

ALTER TABLE 테이블명 modify (칼럼명 default not null)

< ALTER 문 구성 >

- ADD COLUMN (칼럼 추가)

- DROP COLUMN (칼럼 삭제)

- MODIFY COLUMN (칼럼 수정) - 데이터 유형, 디폴트 값, not null 제약조건 수정

- RENAME COLUMN (칼럼명 수정)

- ADD CONSTRAINT (제약조건 추가)

- DROP CONSTRAINT (제약조건 삭제)


 

 

Q2. 계층형 쿼리에 대한 설명으로 부적절한 것 ?

  • PRIOR 자식 = 부모 형태를 사용하면 계층 구조에서 순방향 전개를 수행
  • START WITH는 루트 노드를 지정할 때 사용
  • CONNECT BY는 부모 자식을 설명
  • CONNECT_BY_ISLEAF에서 해당 데이터가 리프 데이터면 1, 그렇지 않으면 0을 반환

-> 3번

 

* 부모 자식을 설명하는 것이 아니라 부모 계층형 쿼리에서 부모 노드와 자식 노드 사이의 특정한 관계를 나타내는 데 사용

 

 

 

Q3. DROP TABLE 테이블명 [CASCADE CONTSTRAINT]에 대한 설명으로 옳은 것 ?

  • CASCADE CONSTRAINT 옵션은 해당 테이블과 관계가 있고, 참조되는 제약 조건에 대해서도 삭제를 수행
  • 테이블의 구조를 제외한 모든 데이터를 삭제
  • CASCADE는 Oracle, SQL Server 모두 지원
  • SQL Server에서는 테이블을 먼저 삭제한 뒤 참조하는 FOREIGN KEY 제약 조건과 참조하는 테이블 삭제

-> 2번

 

* CASCADE CONSTRAINT 옵션은 해당 테이블과 관계가 있고 참조되는 제약조건에 대해서도 삭제를 수행

CACADE는 Oracle에서만 옵션으로 존재하고 SQL Server에서는 존재 X

SQL Server는 참조하는 FOREIGN KEY 제약조건과 참조하는 테이블을 먼저 삭제한 후에 해당 테이블 삭제

 

 

 

 

Q3. 다음 주어진 테이블에 대해서 INSERT 명령어를 수행 시 에러가 발생하는 것 ?

[SQLD_35]
a number(10) pk,
b number(10),
c date,
d varchar(10)
  • INSERT INTO SQLD_35 VALUES (1,2,SYSDATE,002)
  • INSERT INTO SQLD_35 VALUES (2,2,'20190801','003')
  • INSERT INTO SQLD_35 VALUES (3,2,SYSDATE-1,'004')
  • INSERT INTO SQLD_35 VALUES (4,2,20190801,;004')

-> 4번

 

* 20190801 date 타입이 아님

'20190801'로 변경 필요

 

 

 

 

Q4. 아래 SQL문에 들어갈 값?

GRADE JOB_ID SUM(GRADE)
50 10 50
50 20 50
50   100
60 10 60
60 20 60
60   120
70 10 70
70   70

 

SELECT b.grade, a.job_ud,SUM(b.grade)
FROM SQLD1, SQLD2
GROUP by [        ];

-> GROUPING SETS(b.grade,(b.grade,a.job_id));

 

* 결과 값은 b.grade,a.jod_id 에 대한 집계

b.grade에 대한 집계가 있고 전체 집계는 없음

 

[31회차 시험 - 2018년 12월 1일 시행 ] -  1과목 9/10, 2과목 32/40, 총 41/50 (82점)

1. 데이터 모델링의 이해

Q1. ROW Chaining Row Migration에 대한 설명으로 올바른 것?

  • 칼럼은 Row Chaining과  Row Migration을 수행해 성능을 향상시킬 수 있다
  • Row Chaining 현상은 행의 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 행이 저장되어 있는 형태
  • Row Chining 현상은 데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에 저장하고 다른 블록의 빈 공간을 찾아 저장하는 방식
  • Row Chaining과 Row Migration을 수행하면 데이터베이스 메모리에서 디스크와의 I/O 연산을 줄일 수있음

-> 2번

 


<ROW Chaining Row Migration>

- 많은 칼럼은 Row Chaing과 Row Migration이 많아지게 되어 성능이 저하됨

- Row Chaining은 행 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개의 블록에 걸쳐 하나의 행이 저장된 형태

- Row Migration 현상은 데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식

- Row Chaining과 Row Migration이 발생해 많은 블록에 데이터가 저장되면 데이터 베이스 메모리에서 I/O(입출력)이 불필요하게 많이 발생되어 성능이 저하


 

2. SQL 기본 및 활용

Q1. SELECT NVL(COUNT(*), 9999) FROM TABLE WHERE 1=2의 결과값?

  • 9999
  • 0
  • Null
  • 1

-> 2번

 

* 집계함수에서 count(*) 함수는 조건절이 거짓일 때 0을 반환

 

 

Q2. Cross Join과 Natural Join의 차이점에 대해 잘못 설명?

  • Natural Join은 테이블 간 동일한 이름을 가진 모든 칼럼에 대해 조인을 수행
  • Cross Join은 테이블 간 조건이 없는 경우 생길 수 있는 모든 데이터의조합을 의미
  • Cross Join과 Natural Join은 where절에서 조건을 걸 수 없음
  • Cross Join은 where절에 Join 조건을 추가 가능

-> 3번

 

* Natural은 조인 조건 추가 불가능

Cross join은 가능하지만 inner join과 같은 결과를 얻기 때문에 의미가 없어지므로 권고하지않음

 

 

 

Q3. 다음 빈칸에 들어갈 수 없는 SQL문은?

 

SELECT [     ]
FROM EMP
GROUP BY JOB, DEPTNO
HAVING SUM(EMPID) >1
  • EMPID
  • JOB
  • SUM(sal)
  • DEPTNO

-> 1번

 

* Having 조건절에서 집계함수로 사용된 칼럼은 SELECT로 조회할 수 없음

 

 

 

Q4. 다음 중 인덱스에 대한 설명으로 틀린 것?

 

  • Insert, Update, Delete 등과 같은 DML 작업은 테이블과 인덱스를 함께 변경하기 때문에 인덱스 생성 시 느려질 수 있음
  • 유일 인덱스의 구성칼럼 중 1개 이상을 = 조건으로 조회하면 유일 인덱스 스캔과 같음
  • 테이블에 인덱스를 생성하지 않아도 되고 여러개를 생성해도 됨
  • B-Tree 인덱스는 브랜치 블록과 리프 블록으로 구성됨

-> 2번 

 

* 유일 인덱스 스캔은 기본키 또는 유니크 인덱스로 액세스 해야함

 

 

 

[30회차 시험 - 2018년 9월 1일 시행 ] -  1과목 8/10, 2과목 35/40, 총 43/50 (86점)

1. 데이터 모델링의 이해

Q1. 데이터 모델링 중에서 데이터 모델의 재사용성이 가장 높은 데이터 모델링은?

  • 물리적 데이터베이스 모델링으로 파티션을 적용해 활용성을 높임
  • 데이터베이스 모델링 시에 반 정규화를 수행한 모델
  • 논리적 데이터베이스 모델링
  • 물리적 모델링과 논리적 모델링의 데이터베이스 재사용성은 같음

-> 3번

 

2. SQL 기본 및 활용

Q1. 다음에서 사용하는 인덱스 스캔 방식은?

인덱스를 역순으로 탐색

최댓값을 쉽게 찾을 수 있음

  • INDEX FULL SCAN
  • INDEX RANGE SCAN
  • INDEX UNIQUE SCAN
  • INDEX RANGE SCAN DESCENDING

->  4번

 

* 인덱스를 역순으로 탐색하기 때문에 INDEX RANGE SCAN DESCENDING

 

 

 

 

Q2. NUMBER형인 COL1 속성에 대해 인덱스를 가지고 있음 가장 효율적으로 해당 인덱스를 사용할 수 있는 조건절?

 

  • WHERE COL1 LIKE '5%'
  • WHERE COL1 IS NOT NULL
  • WHERE COL1 <> 10
  • WHERE COL1 = 100

-> 4번

 

* LIKE 연산자는 피 연산자 값을 무조건 문자로 형변환 -> 인덱스 사용 불가

IS NOT NULL은 해당 인덱스를 FULL SCAN할 수 있으나 효율이 떨어짐

부정형 비교는 인덱스 사용이 불가

 

 

 

 


NL 조인 - 가능한 결과를 빠르게 보여줘야하는 인터넷 서비스 등에 유리한 조인 방식

Sort Merge 조인 - 배치 작업에 많이 사용되는 조인 방식


 

Q3. 다음 중 문자에 대한 설명으로 부적절한 것 ?

 

  • VARCHAR(가변길이 문자형)은 비교시 서로 길이가 다를 경우 서로 다른 내용으로 판단
  • CHAR(고정 길이 문자형)은 비교 시 서로 길이가 다를 경우 다른 내용으로 판단
  • 문자형과 숫자형을 비교 시 문자형을 숫자형으로 묵시적으로 변환해 비교
  • 연산자 실행 순서는 괄호, NOT, 비교 연산자, AND, OR 순

-> 2번

 

* CHAR는 길이가 서로 다르면 짧은 쪽에 스페이스를 추가해 같은 값으로 판단

댓글