오늘은 오라클 DB의 테이블을 변경하는 방법에 대해 알아보겠습니다.
테이블을 변경할 때는
ALTER TABLE 라는 명령어를 사용하게 됩니다.
ALTER TABLE [테이블명] 이 기본 구조이고
그 뒤에, 컬럼을 수정하거나 삭제하느냐에 따라 MODIFY 명령어를 붙이느냐, ADD 나 DROP 등을 붙이느냐가 달라집니다.
그럼 하나씩 차례대로 알아봅시다!
테이블 컬럼 추가
먼저 테이블에 컬럼을 추가하는 방법입니다.
추가는 ADD 명령어를 이용하여 다음과 같이 작성하면 됩니다.
ALTER TABLE [테이블명] ADD 컬럼명 데이터타입(길이);
ALTER TABLE User ADD USER_ID VARCHAR2(15);
위 예시는 User라는 테이블에 USER_ID라는 컬럼을 VARCHAR2(15) 타입으로 설정하여 추가한 쿼리입니다.
테이블 컬럼 수정
테이블의 컬럼을 수정할 때에는
MODIFY 명령어를 이용하여 다음과 같이 작성합니다.
ALTER TABLE [테이블명] MODIFY [컬럼명] [데이터타입(길이)];
이 때, 컬럼의 데이터 타입을 변경할건지, 아니면 컬럼의 길이를 변경할건지에 따라
각각 상황에 맞게 입력해주면 됩니다.
ALTER TABLE User MODIFY User_NAME VARCHAR2(10);
위 예시는 User 테이블의 User_NAME 컬럼의 데이터타입을 VARCHAR2로 길이는 10으로 변경한 쿼리 입니다.
테이블 컬럼명 변경
테이블의 컬럼명을 변경할 때에는
RENAME COLUMN 명령어를 이용하여 다음과 같이 작성합니다.
ALTER TABLE [테이블명] RENAME COLUMN [변경전 컬럼명] TO [변경후 컬럼명];
ALTER TABLE User RENAME COLUMN User_Password TO User_Pw;
위 예시는 User 테이블의 User_Password 라는 컬럼의 이름을 User_Pw로 변경한 쿼리입니다.
테이블 컬럼 삭제
테이블의 특정 컬럼을 삭제하고 싶을 때에는
DROP COLUMN 명령어를 이용하여 다음과 같이 작성합니다.
ALTER TABLE [테이블명] DROP COLUMN [삭제할 컬럼명];
ALTER TABLE User DROP COLUMN User_Name;
위 예시는 User 테이블에 존재하는 User_Name이라는 컬럼을 삭제하는 쿼리입니다.
컬럼 기본값 및 NULL 설정 변경
컬럼의 기본값이나 Null 설정을 변경할 때에는
컬럼을 수정할 때와 마찬가지로 MODIFY 명령어를 사용하게 됩니다.
[테이블 기본값 설정]
ALTER TABLE User MODIFY User_NAME VARCHAR2(15) DAFAULT 'KIM';
[테이블 기본값 삭제]
ALTER TABLE User MODIFY User_NAME DEFAULT NULL;
[테이블 NOT NULL 설정]
ALTER TABLE User MODIFY User_id VARCHAR(10) NOT NULL;
[테이블 NOT NULL 제거]
ALTER TABLE User MODIFY User_id VARCHAR2(10) NULL;
[기본값 + NULL 설정]
ALTER TABLE USER MODIFY User_id VARCHAR2(10) DEFAULT 'kim' NOT NULL;
주의사항
위의 방법대로 컬럼의 길이(크기)를 변경한다거나, 데이터 타입을 변경할 때 오류가 발생할 수 있습니다.
① 컬럼의 크기를 변경하는 경우에는,
기존 데이터 중 바꿀 크기보다 큰 데이터가 있다면 오류가 발생할 수 있는데
이 때는 그러한 데이터가 있는지 확인을 하고 바꾸어야 합니다.
[바꿀 크기가 10인데 10보다 큰 데이터가 있는지 확인하는 쿼리]
SELECT * FROM User
WHERE length(User_Name) > 10;
② 데이터 타입을 변경하는 경우에는,
해당 컬럼의 데이터를 모두 비워야 변경이 가능합니다.
그러기 위해서는,
임시로 temp컬럼을 하나 생성해준 다음
temp컬럼에 잠시 데이터를 옮겨놓고
원래 컬럼의 데이터를 모두 비운 후에 데이터 타입을 변경하고
temp컬럼의 데이터들을 다시 원래 컬럼으로 옮겨주면 됩니다.
오늘은 이렇게 오라클 테이블을 수정하는 방법에 대해 알아보았습니다.
테이블을 생성하고 나면 중간에 테이블을 변경해야 할 일이 많을텐데,
이러한 방법을 잘 숙지하셨다가 수정하시면 좋을 것 같습니다.
오늘도 긴 글 읽어주셔서 감사합니다.
'Oracle' 카테고리의 다른 글
[Oracle] 오라클 parallel 힌트 (병렬처리) (0) | 2023.01.11 |
---|---|
[Oracle] 오라클 테이블 사이즈 조회 (0) | 2023.01.09 |
[Oracle] 오라클 테이블 만들기 (Create, PK, COMMENT) (0) | 2022.02.15 |