Daily Notebook

[ORACLE] ALTER TABLE

by 배부른코딩로그
💡 테이블 구조를 마음대로 바꾸고 싶다면, ALTER TABLE에 대해 공부해보자!

목표

  • ALTER TABLE 명령어로 할 수 있는 것들을 설명할 수 있다.
  • ALTER TABLE 명령어로 테이블의 구조를 변경할 수 있다.

 

ALTER - 테이블 구조 변경

1. 타입 변경

ALTER 명령어를 통해 주로 테이블 컬럼(필드)의 타입을 변경한다. 완전히 다른 타입으로 변경하는 것은 설계가 잘못된 경우를 제외하고는 드물기 때문에 컬럼의 크기를 늘리는 경우에 주로 사용한다.

테이블의 특정 컬럼 사이즈 변경

ALTER TABLE [테이블명] MODIFY([컬럼명] [컬럼타입]([컬럼크기]));
-- ALTER TABLE USER MODIFY(USER_NAME VARCHAR2(100));

 

2. 필드 제약

필요에 따라 필드의 제약도 변경 가능하다.

NULL 또는 NOT NULL 제약 조건 변경

테이블 설계 당시 NULL을 허용했지만, API의 수정 등의 이유로 NULL을 허용하지 않게 될 경우 사용된다.

ALTER TABLE USER MODIFY(USER_NAME VARCHAR(50) DEFAULT '임시 사용자');
ALTER TABLE USER MODIFY(USER_NAME VARCHAR(50) NOT NULL);
ALTER TABLE USER MODIFY(USER_NAME VARCHAR(50) DEFAULT '임시 사용자' NOT NULL);

단, 제약을 변경할 경우, 무결성 조건을 훼손하지 말아야 한다. "NULL to NOT NULL"로 수정하려면 해당하는 컬럼의 기존 데이터들은 모두 NOT NULL이어야 한다는 것이다. 따라서, 위와 같은 규칙으로 변경할 경우 먼저 규칙에 맞지 않는 레코드를 먼저 수정해야 한다.

체크 제약 조건 변경

ALTER TABLE USER ADD CONSTRAINT USER_AGE_CHECK CHECK(USER_AGE > 0);

체크 제약을 추가해서 0보다 큰 값만 입력할 수 있게 변경도 가능하다.

필드 이름 변경

테이블이나 컬럼 등 모든 이름은 쉬운 이름을 붙이는 것이 중요하지만, SI 또는 SM 등으로부터 인수인계를 받으면 테이블 필드들은 모두 물음표가 가득한 것들을 받게 될 경우가 많다. 시간은 많이 걸리겠지만, 미래에 더 나은 유지보수를 위해서는 네이밍 리팩토링이 필요한 경우가 존재한다.

-- TABLE 명칭 변경
ALTER TABLE CMPY RENAME TO COMPANY;

-- TABLE column(field) 명칭 변경
ALTER TABLE USER RENAME COLUMN USER_NM TO USER_NAME;

테이블명이나 필드명은 기존 데이터와 상관이 없지만, 기존 쿼리에 모두 영향을 준다. 어플리케이션이 클수록 기존 만들어진 쿼리가 많을수록 엄청난 시간과 비용이 들어가게 된다.

코멘트 작성

테이블과 필드에 대한 설명을 잘 정리해두는 것이 중요하다. 모두 유지보수를 위함이다. SQL 스크립트에 주석을 달아두는 것은 물론 DB Object에 코멘트를 달아두도록 하자. 테이블을 날려먹지 않는 이상 가장 확실하고 보기도 편하다.

-- 코멘트 추가
COMMENT ON TABLE USER IS '서비스 사용자 관련 정보 기록';
COMMENT ON COLUMN USER.USER_NAME IS '사용자 실제 이름';
COMMENT ON COLUMN USER.USER_NICKNAME IS '사용자 서비스용 닉네임';

-- 코멘트 확인
SELECT COMMENTS FROM USER_TAB_COMMENTS WHERE TABLE_NAME = '[테이블명]';
SELECT * FROM USER_TAB_COMMENTS WHERE TABLE_NAME = '[테이블명]';

USER_NAME과 USER_NICKNAME이 의미가 불분명하다고 치자. 코멘트를 통해 의미를 분명하게 구분지을 수 있다. 모든 주석과 코멘트는 본인을 위한게 아니다. 후배를 위함이다.

 

 

 

Last Updated. 2021. 10. 26.

 

반응형

블로그의 정보

배부른코딩로그

배부른코딩로그

활동하기