1.쉬움
대리 키(surrogate key)란 무엇입니까?
- A자동 증가 id처럼 업무상 의미가 없는 인위적 식별자
- B뷰에서만 사용하는 키
- C다른 테이블을 참조하는 키
- D이메일 주소처럼 실세계 데이터로 만든 키
2.쉬움
구조를 포함하여 테이블 전체를 삭제하는 문은 무엇입니까?
- ADROP TABLE
- BDELETE FROM
- CTRUNCATE ROWS
- DREMOVE TABLE
3.쉬움
UNION ALL은 UNION과 어떻게 다릅니까?
- AUNION ALL은 중복 행을 제거한다
- BUNION ALL은 중복 행을 유지한다
- CUNION ALL은 한 테이블에서만 작동한다
- DUNION ALL은 결과를 정렬한다
4.보통
동시 트랜잭션이 서로의 완료되지 않은 변경을 보지 못한다는 뜻의 ACID 속성은 무엇입니까?
- A고립성
- B지속성
- C원자성
- D가용성
5.보통
두 SELECT 쿼리 사이에 사용한 INTERSECT는 무엇을 반환합니까?
- A결과들의 카티션 곱
- B두 결과의 모든 행
- C첫 번째 결과에는 있지만 두 번째에는 없는 행
- D두 결과 모두에 나타나는 행
6.보통
ROLLBACK TO SAVEPOINT s1은 무엇을 합니까?
- A트랜잭션 전체를 처음부터 취소한다
- B세이브포인트 s1 이후의 변경을 취소하고 트랜잭션은 열어 둔다
- C세이브포인트와 그 이후 변경된 모든 테이블을 삭제한다
- D트랜잭션을 끝내고 모든 것을 커밋한다
7.어려움
쿼리 FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.status = 'paid'가 예상과 달리 주문이 없는 고객을 빠뜨립니다. 왜 그렇습니까?
- ALEFT JOIN은 일치하지 않는 행을 결코 유지하지 않기 때문에
- Bstatus가 예약어이기 때문에
- Co에 대한 WHERE 조건이 NULL로 채워진 행을 거부하여 내부 조인으로 바꾸기 때문에
- D조인에 ON 대신 USING을 써야 하기 때문에
8.어려움
다중 버전 동시성 제어(MVCC)에서 읽는 쪽은 어떻게 쓰는 쪽을 막지 않을 수 있습니까?
- A읽는 쪽은 커밋되지 않은 데이터를 직접 읽는다
- B읽는 쪽은 커밋된 행 버전의 일관된 스냅샷을 보고, 쓰는 쪽은 새 버전을 만든다
- C읽는 쪽이 활성 상태인 동안에는 쓰기가 허용되지 않는다
- D읽는 쪽은 항상 모든 쓰는 쪽이 커밋할 때까지 기다린다
정답표
- 1. A · 자동 증가 id처럼 업무상 의미가 없는 인위적 식별자
- 2. A · DROP TABLE
- 3. B · UNION ALL은 중복 행을 유지한다
- 4. A · 고립성
- 5. D · 두 결과 모두에 나타나는 행
- 6. B · 세이브포인트 s1 이후의 변경을 취소하고 트랜잭션은 열어 둔다
- 7. C · o에 대한 WHERE 조건이 NULL로 채워진 행을 거부하여 내부 조인으로 바꾸기 때문에
- 8. B · 읽는 쪽은 커밋된 행 버전의 일관된 스냅샷을 보고, 쓰는 쪽은 새 버전을 만든다
자세한 단계별 풀이: examproblems.com에서 이 주제를 연습하세요.