SQL의 모든 것/SQL의 실무
오라클 컬럼 순서 바꾸기
IT너드남
2024. 6. 8. 00:14
ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다.
오라클 컬럼 순서를 바꾸고 싶을 땐 테이블 재생성 없이 ALTER 문으로 해결할 수 있다.
위 그림처럼 SALARY 컬럼과 GRADE 컬럼의 순서를 바꾼다고 가정해보자.
ALTER TABLE MASTER.EMP MODIFY SALARY INVISIBLE;
ALTER TABLE MASTER.EMP MODIFY GRADE INVISIBLE;
ALTER TABLE MASTER.EMP MODIFY EXEC_DT INVISIBLE;
ALTER TABLE MASTER.EMP MODIFY UPD_DT INVISIBLE;
ALTER TABLE MASTER.EMP MODIFY USRNM INVISIBLE;
ALTER TABLE 테이블명 MODIFY 컬럼명 INVISIBLE;
컬럼을 INVISIBLE을 통해 일시적으로 보이지 않게 처러한다.
그런 뒤, 우리는 GRADE 컬럼이 SALARY 컬럼보다 앞으로 오게끔 변경할 것이기 때문에 INVISIBLE의 반대인 VISIBLE을 통해 순서를 바꾼다.
ALTER TABLE MASTER.EMP MODIFY GRADE VISIBLE;
ALTER TABLE MASTER.EMP MODIFY SALARY VISIBLE;
ALTER TABLE MASTER.EMP MODIFY EXEC_DT VISIBLE;
ALTER TABLE MASTER.EMP MODIFY UPD_DT VISIBLE;
ALTER TABLE MASTER.EMP MODIFY USRNM VISIBLE;
VISIBLE 처리를 GRADE 컬럼부터 진행하게 되면 테이블에서는 GRADE부터 다시 순서가 배정된다.
위 그림처럼 컬럼 순서가 잘 바뀐 것을 확인할 수 있을 것이다.
다음은 컬럼을 새로 추가할 때 원하는 위치에 생성하는 방법이다.
위 그림처럼 컬럼 GRADE 컬럼 뒤에 DEPTNM 이라는 컬럼을 넣고 싶다고 가정해보자.
ALTER TABLE MASTER.EMP MODIFY EXEC_DT INVISIBLE;
ALTER TABLE MASTER.EMP MODIFY UPD_DT INVISIBLE;
ALTER TABLE MASTER.EMP MODIFY USRNM INVISIBLE;
ALTER TABLE MASTER.EMP ADD DEPTNM VARCHAR2(100);
ALTER TABLE MASTER.EMP MODIFY EXEC_DT VISIBLE;
ALTER TABLE MASTER.EMP MODIFY UPD_DT VISIBLE;
ALTER TABLE MASTER.EMP MODIFY USRNM VISIBLE;
컬럼을 추가할려는 위치 뒤에 있는 컬럼들을 INVISIBLE 처리하고 컬럼을 추가한 다음 다시 VISIBLE 처리를 하면 위 그림과 같이 원하는 위치에 컬럼을 생성할 수 있다.
생각보다 모델링 이후 컬럼을 추가해야 하거나 ERD와 정합성을 맞추기 위해 순서를 바꿔야 하는 경우가 비일비재하다.
컬럼 순서를 바꾸는 스크립트를 엑셀로 자동화하여 업무시간을 대폭 줄이는 것이 효율적이니 의심치 말고 미리미리 대응하기 위해 준비해놓자.