DATABASE의 삭제 명령어와 스키마에 대한 이야기

기르기르·2022년 10월 4일
0

DB 기초

목록 보기
3/6
post-custom-banner

DROP, DELETE, TRUNC(TRUNCATE)의 차이🤷‍

Oracle에서는 3가지 종류의 삭제 명령어가 존재한다. 이 명령어들은 각각의 차이와 쓰임새가 달라 처음 접할 때 당혹감을 줄 수 있다. 필자 또한 DROP보다 DELETE에 더 익숙해 있던 비전공자라 신기했던 그 느낌을 떠올리며 세 가지 명령어에 대한 정의를 작성해본다.

삭제 명령어의 종류와 특징

DROP - 테이블 정의 및 해당 테이블에 대한 모든 데이터, 인덱스, 트리거, 제약 조건 및 권한을 제거한다.
특징 ① DDL(데이터 정의 언어) 명령이다.
       ② ROLLBACK(실행 취소)이 불가능하다.
       ③ 테이블의 행, 인덱스 및 권한도 제거된다.
       ④ 테이블이 사용했던 Storage는 모두 Release 처리 된다. 즉, 데이터와 테이블
           전체를 삭제하고 사용하고 있던 공간도 모두 반납하며 인덱스나 제약조건 등
           오브젝트로 삭제한다.

※ 오라클 10g부터는 테이블이 삭제되는 것이 아니라 윈도우의 휴지통 개념처럼 잠시 삭제되고 테이블 이름이 BIN$..로 변경된다.

TRUNC - 개별적으로 행을 삭제할 수 없고 테이블 내부의 모든 행을 삭제한다.
특징 ① DDL(데이터 정의 언어) 명령이다.
       ② ROLLBACK(실행 취소)이 불가능하다.
       ③ 트랜잭션 로그에 한 번만 기록되므로 DELETE보다 성능 면에서 더 빠르다.
       ④ TRUNCATE는 테이블에서 모든 행을 제거하고 WHERE 절을 함께 사용할 수 없다.
            (개별적으로 행 삭제 불가능하다)
       ⑤ 테이블의 용량이 초기화 되고, 인덱스 등도 모두 삭제 된다.

DELETE - 테이블의 내부의 행을 모두 삭제하며, WHERE 절을 사용하여 개별적으로 행을 삭제할 수 있다.
특징 ① DELETE는 DML(데이터 조작 언어) 명령이다.
       ② Commit이전에는 Rollback이 가능하다.
       ③ 삭제된 각 행에 대해 트랜잭션 로그를 기록한다.
       ④ 전체 또는 일부만 삭제 가능 하고 삭제 행수를 반환한다.
       ⑤ 행 잠금을 사용하여 실행된다.
행 잠금 : 삽입, 삭제, 갱신 등의 트랜잭션이 수행되는 동안특정 테이블 또는 행에 대해 CRUD 작업을 할 수 없는 상태이다.

                                              삭제 명령어의 실행 결과 차이

Schema(스키마)

스키마란 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 메타데이터를 형식 언어로 정의한 구조 말한다. DBMS가 주어진 설정에 따라 스키마를 생성하고 사용자가 자료를 저장, 조회, 삭제, 변경할 때 자신이 생성한 데이터베이스 스키마를 참조하여 명령을 수행한다.
메타데이터는 어떤 목적을 가지고 만들어진 데이터라는 뜻이다.

스키마의 특징

  • 데이터 사전에 저장된다.
  • 시간이 지나도 변하지 않는다.
  • 현실세계의 특정한 한 부분의 표현으로써 특정 데이터 모델을 이용하여 만들어 진다.
  • 데이터 구조의 특성을 의미하며, 인스턴스에 의해 규정된다.

스키마를 구성하는 요소 3가지

  1. 속성(Attribute) : 속성은 개체의 특성을 나타낸다. ER 다이어그램에서 네모로 표현한다.
  2. 개체(Entity)     : 속성들의 집합으로 이루어져있다. ER 다이어그램에서 네모로 표현한다.
  3. 관계(Relation)  : 개체와 개체 사이의 연관성을 말한다. ER 다이어그램에서 마름모로 표현한다.

스키마의 3계층이란?

하나의 데이터베이스를 사용자의 관점에 따라 외부 스키마,개념 스키마,내부 스키마 이렇게 세 개의 단계로 나누는데 이것을 스키마의 3계층이라고 한다. 스키마의 3계층은 데이터 베이스 스키마에서 가장 중요한 핵심 개념이라고 볼 수 있다.

                                                               스키마

외부 스키마(External Schema)

  • 응용 프로그래머나 사용자가 그룹 또는 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것이다.
  • 동일한 데이터에 대해, 서로 다른 관점을 정의할 수 있도록 허용한다.(=하나의 데이터에 대해 각각의 사용자들이 바라보고 입력하는 검색어가 서로 다를 수 있다.)
  • 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브 스키마(Sub Schema)라고도 한다.
  • 일반 사용자는 질의어(*SQL)를 이용하여 데이터베이스(DB)를 쉽게 사용할 수 있다.

개념 스키마(Conceptual Schema)

  • 사용자 관점으로, 모든 응용 시스템과 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터베이스 구조를 논리적으로 정의(명세)한 것이다.
  • 각 데이터베이스에는 한 개의 개념 스키마만 존재한다.
  • 데이터베이스 관리자(DBA)에 의해서 구성된다.
  • 개체간의 관계와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.
  • 그냥 스키마 라고 하면 대부분 개념 스키마를 의미한다.

내부 스키마(Internal Schema)

  • 컴퓨터(=데이터베이스) 관점에서의 DB가 저장되는 방법을 기술한 것
  • 물리적 저장장치의 입장으로 바라보기 때문에 내부 스키마를 확인하는 사람은 시스템 프로그래머이다.
  • 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서 등을 나타낸다.
  • 내부 스키마에 의해서 곧바로 구현되는 것이 아니라 내부 스키마에 기술한 내용에 따라 운영체제의 파일 시스템에 의해 물리적 저장장치에 기록된다.

참조 blog, 문서

https://developer-talk.tistory.com/258 (drop, delete, trunc)
https://bangu4.tistory.com/81 (drop, delete, trunc)

post-custom-banner

0개의 댓글