반응형

DB에서 데이터를 제거할 때 사용하는 것은 주로 DELETE, TRUNCATE, DROP 세 개의 명령어를 사용한다.

 

우선 사용 방법에 대해서 먼저 알아보자면, 아래와 같다.

 

DELETE

 

DELETE TABLE [테이블명] WHERE [컬럼명] = [컬럼]

 

TRUNCATE

 

TRUNCATE TABLE [테이블명]

 

DROP

 

DROP TABLE [테이블명]

 

사용 방법은 매우 간단한 편이고 모두 데이터 삭제를 위한 명령어지만 각각 차이점이 존재한다.

 

DELETE

데이터는 지워지지만 테이블 용량이 줄어들지 않는다.

조건 식을 통해 원하는 데이터만 삭제가 가능하다.

COMMIT 명령어를 사용하기 전이라면, ROLLBACK을 통해 데이터 복구가 가능하다.

내부적으로 한 줄씩 제거하기 때문에, 처리 속도가 상대적으로 느리다.

삭제 행수를 반환한다.

 

TRUNCATE

용량이 줄어들고, 인덱스 등도 삭제된다.

테이블은 삭제되지 않고 데이터만 삭제된다.

조건 식이 불가능하며, 데이터 전체를 삭제한다.

자동 COMMIT이 되는 명령어이기 때문에, 데이터 복구가 불가능하다.

삭제 행수를 반환하지 않는다.

 

DROP

테이블 자체를 제거한다.

자동 COMMIT이 되는 명령어이기 떄문에, 데이터 복구가 불가능하다.

 

위와 같은 차이 때문에, 각 명령어는 상황에 맞는 활용이 필요하며 운영 서버에서 사용 시 각별한 주의를 요구한다.

반응형

'데이터베이스 > Mysql' 카테고리의 다른 글

Auto Increment 설정 및 값 초기화  (0) 2021.05.18
반응형

RDBMS에선 데이터를 쌓는데 Primary Key가 설정된 컬럼에 한하여 데이터 생성 시, 자동으로 숫자가 증가하게 하는 설정이 가능하다.

설정하는 방법은 간단하며, 테이블 생성 시 증가될 컬럼에 auto_increment를 입력하면 된다.

 

테이블을 생성할 DB에 아래와 같은 형식으로 auto_increment를 설정할 수 있다.

다만, 여기서 주의할 사항은 auto_increment의 경우는 PK로 지정된 컬럼만 사용 가능하고 그 외에는 에러가 발생한다.

CREATE TABLE land.`user` (
	idx bigint(20) auto_increment NULL,
	CONSTRAINT user_pk PRIMARY KEY (idx)
)

 

이런 형태로 테이블을 생성하여, 데이터를 쌓다보면 idx (키 값)이 1씩 늘어나는 것을 볼 수 있는데,
1, 2, 3 중에 3을 삭제하고 재 생성하는 경우 3이 생성되는 게 아닌 4부터 데이터가 생성되는 것을 볼 수 있다.

이러한 것을 방지하거나 혹은 재정리하기 위해 auto_increment 값을 초기화할 필요가 있다.

ALTER TABLE land.user AUTO_INCREMENT = 3;

해당 문장같은 형태로 ALTER문을 사용하여, 강제로 원하는 키 값을 지정해줄 수 있다.

ALTER TABLE land.user AUTO_INCREMENT = 1;
SET@COUNT = 0;
UPDATE land.USER SET idx = @COUNT:=@COUNT+1

다른 방식으로 auto_increment를 1부터 재조정하면서 여태 idx 값들을 전체적으로 재조정할 수도 있다.

 

크게 어려운 방법은 아니지만 idx 값은 현업에서는 다른 테이블과 연동될 수 있기 때문에, 전체적인 값 조정은 데이터를 매핑시키는데 조금 위험도가 존재하므로 조심스럽게 다룰 필요가 있다.

반응형

'데이터베이스 > Mysql' 카테고리의 다른 글

데이터 삭제 (DELETE, TRUNCATE, DROP)  (0) 2021.05.20

+ Recent posts