-
Alter Table 수정 방법소소한DB/오라클 2019. 2. 1. 11:48반응형
■ALTER TABLE 테이블 수정 ( ADD,DROP, MODIFY, RENAME)
1. ADD COLUMN(컬럼 추가)
기존 테이블에 필요한 컬럼을 추가하는 방법
ALTER TABLE 테이블명
ADD 추가할 컬럼명 데이터 유형;
ALTER TABLE TEST
ADD (TESTADD VARCHAR2(50));
-새롭게 추가된 컬럼은 테이블 마지막 위치에 생생됩니다. 위치를 변경 불가능합니다.
2.DROP COLUMN( 컬럼 삭제)
테이블의 필요 없는 컬럼을 삭제하는 방법
ALTER TABLE 테이블명
DROP COLUMN 삭제할 컬럼명;
ALTER TABLE TEST
DROP COLUMN TESTADD;
-한번 삭제된 컬럼은 복구 불가
3.MODIFY COLUMN(컬럼수정)
테이블에 존재하는 컬럼의 데이터 유형, 디폴트(DEFAULT)값 , NOT NULL 제약조건에 대한 변경방법
ALTER TABLE 테이블명
MODIFY (컬럼명1 데이터 유형 [DEFAULT 식] [NOT NULL],
컬럼명2 데이터 유형 [DEFAULT 식] [NOT NULL]);
ALTER TABLE TEST_TEMP
MODIFY (TEST_MODIFY VARCHAR2(8));
- 해당 컬럼의 크기를 늘릴 수는 있지만 줄이지는 못한다. 이는 기존의 데이터가 훼손될 수 있기 때문이다.
- 해당 컬럼이 NULL 값만 가지고 있거나 테이블에 아무 행도 없으면 컬럼의 폭을 줄일 수 있다.
- 해당 컬럼이 NULL 값만을 가지고 있으면 데이터 유형을 변경할 수 있다.
- 해당 컬럼의 DEFAULT 값을 바꾸면 변경 작업 이후 발생하는 행 삽입에만 영향을 미치게 된다.
- 해당 컬럼에 NULL 값이 없을 경우에만 NOT NULL 제약조건을 추가할 수 있다.
4. RENAME COLUMN (컬럼명 수정)
테이블을 생성하면서 만들어졌던 컬럼명을 변경해야 할 경우에 사용한다.
ALTER TABLE 테이블명
RENAME COLUMN 변경해야할 컬럼명 TO 새로운 컬럼명;
ALTER TABLE TEST
RENAME COLUMN TEST_ID TO TEAM_ID;
- TEST 테이블의 TEST_ID 컬럼명을 TEAM_ID 로 변경한다.
* RENAME COLUMN으로 컬럼명을 변경하면, 해당 컬럼과 관계된 제약조건에 대해서도 자동으로 변경된다.
5. ADD CONSTRAINT
테이블 생성 시 제약조건을 적용하지 않았다면, 생성 이후에 필요에 의해서 제약조건을 추가할 수 있다.
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 제약조건 (컬럼명);
ALTER TABLE TEST
ADD CONSTRAINT TEST_FK
FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID);
- TEST 테이블에 TEAM 테이블과의 외래키 제약조건을 추가한다.
- 제약조건명은 TEST_FK로 하고, TEST 테이블의 TEAM_ID 컬럼이 TEAM 테이블의 TEAM_ID를 참조하는 조건이다.
* FOREIGN KEY 제약조건을 위와 같이 추가하면 TEST 테이블의 TEAM_ID 컬럼이 TEAM 테이블의 TEAM_ID 컬럼을 참조하게 된다.
참조 무결성 옵션에 따라서 만약 TEAM 테이블이나 TEAM 테이블의 데이터를 삭제하려 할 경우 외부(TEST 테이블)에서 참조되고 있기 때문에 삭제가 불가능하게 제약을 할 수 있다.
즉 외부키(FK)를 설정함으로써 실수에 의한 테이블 삭제나 필요한 데이터의 의도치 않은 삭제와 같은 불상사를 방지하는 효과를 볼 수 있다.
6. DROP CONSTRAINT
테이블 생성 시 부여했던 제약조건을 삭제하는 명령어
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;
ALTER TABLE TEST
DROP CONSTRAINT TEST_FK;
- TEST 테이블의 제약조건 TEST_FK 를 제거한다.
반응형'소소한DB > 오라클' 카테고리의 다른 글
RAC 개념 잡기!! (0) 2019.02.02 오라클 서버 RAC 구성 확인 방법 (0) 2019.02.01 오라클 - 비밀번호 만료 해제 및 기간 변경 방법 (0) 2019.01.31 오라클 CHARSset 확인 및 변경 (0) 2019.01.31 ORA-09817 파티션 용량 가득 찼을경우 해결법 (0) 2019.01.29 댓글