◎ 반정규화에 대한 설명 중 부적절한 것은?
- 데이터를 조회할 때 디스크 I/O 량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상될 때 수행한다.
- 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 수행한다.
- 반정규화를 적용할 때는 기본적으로 데이터 무결성이 깨질 가능성이 많이 있으므로 반드시 데이터 무결성을 보장할 수 있는 방법을 고려해야한다.
- 반정규화 전에 테이블 추가(통계 테이블, 중복 테이블, 이력 테이블 추가)를 통해 반정규화를 회피한다.
→ 테이블 추가를 통해 반정규화를 적용할 수도 있다.
◎ 오류가 날 수 있는 SQL
SELECT A.COL1 (SELECT COL3 FROM SQLD_TABLE AS B WHERE A.COL1 = B.COL1) AS B_COL3
FROM SQLD_TABLE2 AS A
WHERE A.COL2 > 10;
→ 위 SQL문은 오류가 발생한다. 그 이유는 (SELECT)단일 행 하위 질의에 2개 이상의 행이 리턴되므로 오류가 발생한다.
◎ IN 절 안에 NULL이 있을 때
SELECT SUM(COL2) FROM TABLE A WHERE COL1 IN ('A', 'X', NULL);
→ IN 안에 NULL이 있다고 COL1이 NULL일 때 COL2 값을 계산하지는 않음. NULL은 IS NULL로 해야함
◎ SQL WHERE 절에 (WHERE 1 = 2)일 경우 False로 인식되어 아무것도 X
◎ Trigger에 대한 설명으로 가장 부적절한 것
- DELETE ON TRIGGER의 경우 : OLD는 삭제 전 데이터를, NEW는 삭제 후 데이터를 나타낸다
- 특정 테이블에 DML문이 수행되었을 때 자동으로 동작하도록 작성된 프로그램이다.
- 테이블, 뷰에만 트리거를 작성할 수 있으며 데이터베이스 작업에는 정의할 수 없다.
- UPDATE TRIGGER에서 :OLD에는 수정 전, :NEW에는 수정 후 값이 들어간다.
→ 데이터베이스 작업에 정의할 수 있다.
◎ TOP(n)과 같은 결과를 나타내는 것
- TOP(n) WITH TIES일 경우 TOP()과 달리 중복되는 값을 가지는 것도 출력하므로 같게 나올 수 없음
[원본 SQL]
SELECT TOP(10) FIRST_NAME, JOB_ID FROM TABLE A ORDER BY SALARY;
[같은 SQL]
SELECT FIRST_NAME, JOB_ID FROM
(SELECT FIRST_NAME, JOB_ID FROM TABLE A ORDER BY SALARY)
WHERE ROWNUM <= 10;
◎ PRIOR
PRIOR 자식 = 부모 : (부모 -> 자식 : 순방향 전개)
PRIOR 부모 = 자식 : (자식 -> 부모 : 역방향 전개)
◎ SQL Set Operation
집합 연산자 | 연산자의 의미 |
UNION | 여러 개의 SQL문의 결과에 대한 합집합으로 결과에서 모든 중복된 행은 하나의 행으로 만든다. |
UNION ALL | 여러 개의 SQL문의 결과에 대한 합집합으로 중복된 행도 그대로 결과로 표시된다. 즉, 단순히 결과만 합쳐놓은 것이다. 일반적으로 여러 질의 결과가 상호 배타적일 때 많이 사용한다. 개별 SQL문의 결과가 서로 중복되지 않는 경우, UNION과 결과가 동일하다. (결과의 정렬 순세어는 차이가 있을 수 있음) |
INTERSECT | 여러 개의 SQL문의 결과에 대한 교집합이다. 중복된 행은 하나의 행으로 만든다. |
EXCEPT | 앞의 SQL문의 결과에서 뒤의 SQL문의 결과에 대한 차집합이다. 중복된 행은 하나의 행으로 만든다. (일부 데이터베이스는 MINUS를 사용) |
[보기]
대용량 데이터를 정렬하여 조인한다.
동등 조인, 비동등 조인에서 모두 사용가능하다.
각 테이블을 정렬한 후 조인한다.
→ Sort Merge Join
◎ Cross Join와 Natural Join에 대한 차이점에 대해서 가장 부적절한 것은?
- Cross Join과 Natural Join은 Where 절에서 조건을 걸 수 없다. -> 조건 걸 수 있다.
- Natural Join에서는 특정 Join 컬럼을 명시적으로 적을 수 없다.
- Cross Join은 Join에 참여하는 테이블의 Join Key가 없을 경우 발생한다.
- Natural Join에서 Join Key는 컬럼명으로 결정된다.
◎ 아래와 같이 PK 컬럼이 구성되어 있을 때 가장 적합한 파티셔닝 방법은?
특징 : 데이터의 양이 매우 많은 대용량 테이블이다. 데이터의 생성일자를 구분짓는 특정 컬럼이 없는 형태이다
→ List
◎ 데이터 타입을 변형하는 SQL 구문이다. SQL 구문을 완성하라
→ (ALTER) DEPT (TABLE) VARCHAR(30) NOT NULL;
◎ PROCEDURE, TRIGGER에 대한 설명
- PROCEDURE, TRIGGER 모두 CREATE 명령어로 수행된다.
- PROCEDURE, TRIGGER는 COMMIT, ROLLBACK 명령어를 사용할 수 없다.
본 문제들은 30회 기출 문제로 틀린 거 정리해봤다.
'자격증 > SQLD' 카테고리의 다른 글
SQL 기본 및 활용 (0) | 2023.03.19 |
---|---|
데이터 모델과 성능 (0) | 2023.03.12 |
데이터 모델링의 이해 (0) | 2023.03.10 |
데이터 베이스 - 데이터 모델링 (0) | 2023.03.07 |