자격증/SQLD

[SQLD] DROP, TRUNCATE, DELETE의 차이. DDL,DML,AUTOCOMMIT

eunma 2024. 8. 22. 14:49

데이터를 삭제할 때

참고자료 : 아이리포-SQLD 모든 것

  • DDL : DROP, TRUNCATE
    • DROP : 완전히 초기화
    • TRUNCATE : 스키마는 남겨두고 내용만 초기화
    • DDL 코드에는 CREATE, DROP RENAME이 있다.
  • DML : DELETE
  • DML 코드에는 INSERT, MERGE, SELLECT, UPDATE
  • 디스크 공간 릴리즈를 하지 않기 때문에 UNDO가 가능하다.

Quiz

난이도: 하

1. DROP 명령어는 무엇을 삭제합니까?
a) 테이블의 모든 데이터
b) 테이블의 모든 데이터와 테이블 구조
c) 테이블의 특정 행(레코드)
d) 테이블의 인덱스만
2. TRUNCATE 명령어는 무엇을 삭제합니까?
a) 테이블의 특정 행(레코드)
b) 테이블의 구조만
c) 테이블의 모든 데이터
d) 테이블의 이름

난이도: 중

3. DELETE 명령어로 데이터를 삭제할 때 데이터가 삭제된 후에도 해당 테이블의 구조는 유지되나요?
a) 예
b) 아니오
4. TRUNCATE와 DELETE의 주요 차이점은 무엇입니까?
a) DELETE는 데이터만 삭제하지만, TRUNCATE는 테이블 구조도 삭제합니다.
b) TRUNCATE는 데이터와 테이블 구조를 모두 삭제합니다.
c) DELETE는 특정 조건을 만족하는 행을 삭제할 수 있지만, TRUNCATE는 테이블의 모든 행을 삭제합니다.
d) TRUNCATE는 삭제된 데이터를 복구할 수 있습니다.

난이도: 상

5. 다음 중 TRUNCATE 명령어에 대한 설명으로 올바르지 않은 것은?
a) TRUNCATE는 테이블의 모든 행을 삭제하며, 이는 롤백할 수 없습니다.
b) TRUNCATE는 DELETE와 달리 트리거(trigger)를 실행하지 않습니다.
c) TRUNCATE는 테이블의 인덱스와 제약 조건도 함께 삭제합니다.
d) TRUNCATE 명령어는 테이블을 빈 상태로 만듭니다.
6. DELETE 명령어로 테이블에서 모든 데이터를 삭제한 후에, 해당 데이터를 복구하려면 어떤 전제 조건이 필요합니까?
a) DELETE 명령어는 트랜잭션 내에서 사용되었어야 하며, 트랜잭션을 롤백할 수 있어야 합니다.
b) DELETE 명령어는 항상 데이터를 복구할 수 있습니다.
c) 데이터를 복구할 수 있는 방법은 없습니다.
d) DELETE 명령어를 사용하면 테이블이 삭제되므로 데이터를 복구할 수 없습니다.
7. 어떤 상황에서 DROP 명령어를 사용해야 하며, 이 명령어는 데이터를 삭제할 때 어떤 제약을 가지고 있나요?
a) 테이블의 특정 데이터를 삭제할 때 사용되며, 이 명령어는 데이터만 삭제하고 구조는 유지합니다.
b) 테이블의 모든 데이터와 테이블 구조를 영구적으로 삭제할 때 사용되며, 이 명령어는 복구할 수 없습니다.
c) 테이블의 데이터와 구조를 임시로 삭제하고 나중에 복구할 수 있습니다.
d) 이 명령어는 데이터를 삭제하지 않고 테이블의 이름만 삭제합니다.

Quiz 정답 및 풀이

  1. DROP 명령어는 무엇을 삭제합니까?
  • 정답: b) 테이블의 모든 데이터와 테이블 구조
    • 해설: DROP 명령어는 테이블의 모든 데이터를 삭제할 뿐만 아니라, 테이블의 구조(즉, 테이블 자체)도 삭제합니다. 따라서 테이블을 완전히 제거할 때 사용됩니다.
  1. TRUNCATE 명령어는 무엇을 삭제합니까?
  • 정답: c) 테이블의 모든 데이터
    • 해설: TRUNCATE는 테이블의 모든 데이터를 삭제하지만, 테이블의 구조는 그대로 남깁니다. 이 명령어는 데이터를 빠르게 삭제할 때 유용합니다.
  1. DELETE 명령어로 데이터를 삭제할 때 데이터가 삭제된 후에도 해당 테이블의 구조는 유지되나요?
  • 정답: a) 예
    • 해설: DELETE 명령어는 데이터만 삭제하고, 테이블의 구조는 그대로 유지합니다. 따라서 데이터를 삭제한 후에도 테이블을 다시 사용할 수 있습니다.
  1. TRUNCATE와 DELETE의 주요 차이점은 무엇입니까?
  • 정답: c) DELETE는 특정 조건을 만족하는 행을 삭제할 수 있지만, TRUNCATE는 테이블의 모든 행을 삭제합니다.
    • 해설: DELETE 명령어는 WHERE 절을 사용하여 특정 조건을 만족하는 행만 선택적으로 삭제할 수 있습니다. 반면, TRUNCATE는 테이블의 모든 행을 삭제하며, 조건을 지정할 수 없습니다.
  1. 다음 중 TRUNCATE 명령어에 대한 설명으로 올바르지 않은 것은?
  • 정답: c) TRUNCATE는 테이블의 인덱스와 제약 조건도 함께 삭제합니다.
    • 해설: TRUNCATE 명령어는 테이블의 데이터를 삭제하지만, 테이블의 구조와 함께 인덱스 및 제약 조건은 유지됩니다. 선택지 b에서 언급된 트리거 실행과 관련된 설명은 올바릅니다. TRUNCATE는 트리거를 실행하지 않으며, 이 점이 DELETE와의 주요 차이점 중 하나입니다.
    1. DELETE 명령어로 테이블에서 모든 데이터를 삭제한 후에, 해당 데이터를 복구하려면 어떤 전제 조건이 필요합니까?
  • 정답: a) DELETE 명령어는 트랜잭션 내에서 사용되었어야 하며, 트랜잭션을 롤백할 수 있어야 합니다.
    • 해설: DELETE 명령어는 트랜잭션 내에서 수행되며, 트랜잭션이 커밋되지 않은 상태라면 ROLLBACK 명령어를 통해 삭제된 데이터를 복구할 수 있습니다. 그러나 트랜잭션이 커밋된 후에는 데이터를 복구할 수 없습니다.
  1. 어떤 상황에서 DROP 명령어를 사용해야 하며, 이 명령어는 데이터를 삭제할 때 어떤 제약을 가지고 있나요?
  • 정답: b) 테이블의 모든 데이터와 테이블 구조를 영구적으로 삭제할 때 사용되며, 이 명령어는 복구할 수 없습니다.
    • 해설: DROP 명령어는 테이블의 데이터와 구조를 완전히 제거합니다. 이 작업은 되돌릴 수 없으므로, 데이터와 테이블을 모두 영구적으로 삭제할 때 신중하게 사용해야 합니다.