[SQL 이해와 활용] DDL > ALTER TABLE
카테고리: SQL Developer
✔️ 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));
테이블에 제약조건이 추가된 것을 확인할 수 있다.
제약조건 삭제 구문 (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;
댓글 남기기