[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는 길이가 서로 다르면 짧은 쪽에 스페이스를 추가해 같은 값으로 판단
'Database & Bigdata > SQLD' 카테고리의 다른 글
[SQLD] 제 38회 SQLD 자격증 합격 후기(+ 이기적 SQLD 개발자 이론서 비추..) (4) | 2020.10.07 |
---|---|
[SQLD] 최신기출문제 (33회차) - 오답체크 (0) | 2020.09.03 |
[SQLD] 최신기출문제 (34회차) - 오답체크 (0) | 2020.09.03 |
[SQLD] 최신 기출 문제(35회차) - 오답 체크 (0) | 2020.09.01 |
[SQLD] 실전 모의고사 150제 - 오답체크 (0) | 2020.09.01 |
댓글