Back-End/SQL 개발자 자격증

[ 데이터베이스 ] ALTER TABLE, TRUNCATE, DROP, DELETE 차이

psy_er 2023. 9. 28. 22:51
728x90

[ 데이터베이스 ] ALTER TABLE, TRUNCATE, DROP, DELETE 차이

 

 

ALTER TABLE

 

- ADD COLUMN : 추가된 칼럼은 위치를 지정할 수 없고, 테이블의 마지막 칼럼이 된다.

ALTER TABLE 테이블명 ADD (추가할 칼럼명);
ALTER TABLE PLAYER (ADD ADDRESS VARCHAR2(80));

 

 

- DROP COLUMN : 한 번에 하나의 칼럼 삭제 가능, 칼럼 삭제 후 최소 하나의 칼럼 존재해야 함, 복구 불가

ALTER TABLE 테이블명 DROP COLUMN 삭제할 칼럼명;
ALTER TABLE PLAYER DROP COLUMN ADDRESS;

 

 

- MODIFY COLUMN : 칼럼의 데이터 유형, 디폴트값, NOT NULL 제약조건 값 변경가능

[ORALE]
ALTER TABLE 테이블명 MODIFY (칼럼명1 데이터 유형 [DEFAULT 식] [NOT NULL], 칼럼명2 데이터 유형 ...);
ALTER TABLE TEAM_TEMP MODIFY (ORIG_YYYY VARCHAR2(8) DEFAULT '20020129' NOT NULL);
[SQL SERVER]
ALTER TABLE 테이블명 ALTER (칼럼명1 데이터 유형 [DEFAULT 식] [NOT NULL], 칼럼명2 데이터 유형 ...);

 

 

- RENAME COLUMN : 칼럼명이 변경시, 칼럼 제약 조건 자동 변경, ORACLE 같이 일부 DBMS만 지원되는 기능

ALTER TABLE 테이블명 RENAME COLUMN 변경해야 할 칼럼명 TO 새로운 칼럼명;
ALTER TABLE PLAYER RENAME COLUMN PLAYER_ID TO TEMP_ID;

 

 

- DROP CONSTRAINT : 테이블 생성시 부여했던 제약조건 삭제 명령어

ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;
ALTER TABLE PLAYER DROP CONSTRAINT PLAYER_FK;

 

 

- ADD CONSTRAINT : 테이블 생성 이후에 필요에 의해서 제약조건 추가

ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 (칼럼명);
ALTER TABLE PLAYER ADD CONSTRAINT PLAYER_FK FOREIGN KEY (TEAM_ID)  REFERENCES TEAM(TEAM_ID);

 

 

- RENAME TABLE : 테이블 이름 변경

RENAME 변경전_테이블명 TO 변경후_테이블명;
RENAME TEAM TO TEAM_BACKCUP;

 

 

- DROP TABLE : 테이블 삭제

DROP TABLE 테이블명 [CASCADE CONSTRANINT];
DROP TABLE TEAM;

 

 

- TRUNCATE TABLE : 테이블 자체가 삭제되는 것이 아니고, 테이블 안의 행들이 모두 삭제되어 저장공간 재사용 가능.

테이블 구조를 삭제하기 위해서는 DROP TABLE 실행하기.

TRUNCATE TABLE 테이블명;
TRUNCATE TABLE PLAYER;

 

 

TRUNCATE, DROP, DELETE 차이

 

DROP TABLE : DDL, 테이블 자체가 사라짐

TRUNCATE : DDL, 테이블 구조는 남아있고 데이터 사라짐, log 없이 auto commit, ROLLBACK 불가능

DELETE : DML, TRUNCATE 와 유사함, log가 있고, 내부처리 방식이 TRUNCATE와 다름, ROLLBACK 가능

 

>> 테이블 전체 데이터 삭제하는 경우 시스템 부하가 적은 TRUNCATE TABLE을 권고한다.

728x90