[231106] SQLD 2과목_1장(21~30)

ese2o·2023년 11월 6일

SQLD

목록 보기
3/8

교재: SQL 자격 검정 실전 문제
2과목 제1장 - SQL 기본
21번 ~ 30번

21번

답: 2번
NOT NULL 조건이 있는 컬럼은 무조건 값을 넣어주어야 한다.

VARCHAR2()는 원래 문자열 데이터타입이지만, 묵시적 형변환(자동으로 변환)해주어 입력은 가능하다.

22번


답: 1, 3번

2번: 고객 테이블에 존재하지 않는 고객ID의 주문을 입력하려고 하였다.
FK를 입력해야 하는 상황에서는, PK(고객 테이블-고객ID)에 존재하고 있는 데이터만 입력 가능하다.
4번: 고객 테이블의 'C002'를 삭제하려고 할 때, DELETE SET NULL 옵션에 따라 주문 테이블의 고객ID를 NULL값으로 설정하려고 시도하지만, 주문 테이블 고객ID 컬럼의 NOT NULL 제약조건에 의해 실패한다.

23번

로그를 남겨야 하는 상황에서 데이터를 삭제하는 가장 좋은 방법은?
답: 1번

DROP: 정의 자체를 완전 삭제 (로그 남기지 X)
TRUNCATE: 저장공간을 재사용 가능하도록 해제 (로그 남기지 X)
DELETE: 데이터만 삭제 (로그 남긴다 - ROLLBACK 가능)

DELETE * FROM STADIUM; 은 문법에 맞지 않는다.

올바른 사용법
: DELETE FROM 테이블명 WHERE 조건

24번

답: DISTINCT

25번

답: 1번
스키마 정의를 유지한다는 점에서 DROP 소거
데이터 삭제와 동시에 디스크 사용량도 초기화하고자 한다는 점에서 TRUNCATE가 적절하다.

26번


답: 1, 4번
1번: DROP과 DELETE는 정의 제거의 측면에서 다르다.
3번: TRUNCATE 명령어는 UNDO를 위한 데이터를 생성하지 않기 때문에(ROLLBACK 불가능하기 때문에) 동일 데이터량 삭제시 DELETE보다 빠르다.
4번: DROP과 TRUNCATE는 Auto Commit이 가능하고, DELETE는 불가능하다.

27번

답: 2, 4번

데이터베이스 트랜잭션의 4가지 특성
원자성: 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (All or Nothing)
일관성: 트랜잭션이 실행 되기 전의 데이터베이스 내용이 잘못되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.
고립성: 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
지속성: 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

28번

데이터베이스 트랜잭션에 대한 격리성이 낮은 경우 발생할 수 있는 문제점
답: 1, 4번

Dirty Read: 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽는 것을 말한다. (이미 커밋된 x)
Non-Repeatable Read: 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 그 사이에 다른 트랜잭션이 값을 수정 또는 삭제하는 바람에 두 쿼리 결과가 다르게 나타나는 현상을 말한다.
Phantom Read: 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 첫번째 쿼리에서 없던 유령 레코드가 두번째 쿼리에서 나타나는 현상을 말한다.

4번 <트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다>는 문제점이 아니라 목표이다.

29번

답: 3번
ORACLE에서는 DDL 문장 수행 후 자동으로 COMMIT을 수행한다. 내부적으로 트랜잭션이 종료된 것이므로 ROLLBACK으로 인해 앞의 내용이 취소되지 않는다.
SQL Server에서는 DDL 문장 수행 후 자동으로 COMMIT을 수행하지 않는다.

30번

트랜잭션(Transaction)은 데이터베이스의 논리적 연산단위로서 밀접히 관련되어 분리될 수 없는 한 개 이상의 데이터베이스 조작을 가리킨다. 트랜잭션의 종료를 위한 대표적 명령어로서는 데이터에 대한 변경사항을 데이터베이스에 영구적으로 반영하는 COMMIT과 데이터에 대한 변경사항을 모두 폐기하고 변경 전의 상태로 되돌리는 ROLLBACK이 있다.

0개의 댓글