[SQL 이해와 활용] DDL > ALTER TABLE

Date:     Updated:

카테고리:

태그:


✔️ DDL > ALTER TABLE

생성한 테이블은 필요에 따라 변경이 필요할 수 있다. 주로 컬럼 혹은 제약조건을 추가/삭제하는 작업을 진행하게 된다.

컬럼 추가 구문 (ADD COLUMN)

ALTER TABLE 테이블명 ADD (컬럼명1 DATATYPE [DEFAULT 형식] [NOT NULL], 컬럼명2 DATATYPE [DEFAULT 형식] [NOT NULL]);

ADD 명령어는 테이블에 새로운 컬럼을 추가한다. 선수(PLAYER) 테이블에 ADDRESS 컬럼을 추가해보자.

ALTER TABLE PLAYER ADD 
(
    ADDRESS VARCHAR2(40) DEFAULT 'NO ADDRESS'
);


컬럼 삭제 구문 (DROP COLUMN)

ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

DROP COLUMN 명령어는 테이블에 컬럼을 제거한다. 단, 하나의 컬럼만 제거할 수 있으며 제거한 컬럼은 복구가 불가능하다.

위에서 생성한 ADDRESS 컬럼을 제거하자.

ALTER TABLE PLAYER DROP COLUMN ADDRESS;

컬럼 수정 구문 (MODIFY COLUMN, RENAME COLUMN)

ALTER TABLE 테이블명 MODIFY (컬럼명1 DATATYPE [DEFAULT 형식] [NOT NULL], 컬럼명2 DATATYPE [DEFAULT 형식] [NOT NULL]);

테이블의 컬럼의 데이터 타입, 디폴트 값, NOT NULL 제약조건을 변경할 수 있다. 컬럼 수정 시에는 다음 주의 사항을 고려해야한다.

  • 해당 컬럼에 값이 있는 경우, 데이터 크기를 늘릴수만 있다.
  • 해당 컬럼에 NULL 값이 없는 경우에만 NOT NULL 조건을 추가할 수 있다.
  • DEFAULT 값을 바꾸면 변경 이후 발생하는 행에만 영향을 준다.

선수 테이블에 ADDRESS 컬럼(VARCHAR2(20), NOT NULL)을 생성하고, (CHAR(20), NULL 가능)으로 수정해본다.

ALTER TABLE PLAYER ADD 
(
    ADDRESS VARCHAR2(20) NOT NULL
);

ALTER TABLE PLAYER MODIFY (ADDRESS CHAR(20) NULL);

ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 신규컬럼명;

RENAME COLUMN 명령어로 컬럼명을 변경할 수 있다.


제약조건 추가 구문 (ADD CONSTRAINT)

테이블 생성 이후 제약조건을 추가할 수 있다.

ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건;

DDL > CREATE TABLE에서 생성한 TEAM_TEMP 테이블에 다음 제약조건을 추가한다.

제약조건
PK → TEAM_ID(제약조건명: TEAM_TEMP_PK)
UK → TEAM_NAME(제약조건명: TEAM_TEMP_UK)
ALTER TABLE TEAM_TEMP ADD (CONSTRAINT TEAM_TEMP_PK PRIMARY KEY (TEAM_ID), CONSTRAINT TEAM_TEMP_UK UNIQUE (TEAM_NAME));  

테이블에 제약조건이 추가된 것을 확인할 수 있다.

image


제약조건 삭제 구문 (DROP CONSTRAINT)

테이블에 부여한 제약조건을 삭제할 수 있다.

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

위에서 생성한 TEAM_TEMP_PK, TEAM_TEMP_UK 제약조건을 삭제하자.

ALTER TABLE TEAM_TEMP DROP CONSTRAINT TEAM_TEMP_PK;
ALTER TABLE TEAM_TEMP DROP CONSTRAINT TEAM_TEMP_UK;


맨 위로 이동하기

SQL Developer 카테고리 내 다른 글 보러가기

댓글 남기기