오라클 12c부터는 INVISIBLE 및 VISIBLE 칼럼 속성을 사용하여 칼럼의 순서를 변경할 수 있다. 이 방법은 기존 테이블의 구조를 변경하지 않고, 칼럼을 잠시 보이지 않게 설정했다가 다시 보이게 설정하여 칼럼의 순서를 변경하는 원리이다. 그리고 오라클 11g 이하에서 칼럼의 순서를 변경하기 위해서는 테이블을 재생성하는 방법을 사용해야 하며, 특별한 경우가 아니면 권장하지는 않는다.
목차 |
오라클 12c 이상에서 칼럼 순서 변경 방법
오라클 12c 이상부터 INVISIBLE, VISIBLE 속성을 사용하여 칼럼의 순서를 쉽게 변경할 수 있다.
칼럼을 숨겼다가 다시 보이게 하면 칼럼의 순서가 뒤로 옮겨지는 원리이다. 중간의 칼럼을 맨뒤로 바꾸고 싶을 때는 해당 칼럼을 INVISIBLE 했다가 다시 VISIBLE로 바꾸면 해당 칼럼의 순서가 맨 마지막으로 변경된다.
--칼럼 숨기기 (INVISIBLE)
ALTER TABLE emp MODIFY job INVISIBLE;
ALTER TABLE emp MODIFY mgr INVISIBLE;
ALTER TABLE emp MODIFY hiredate INVISIBLE;
ALTER TABLE emp MODIFY sal INVISIBLE;
ALTER TABLE emp MODIFY comm INVISIBLE;
ALTER TABLE emp MODIFY deptno INVISIBLE;
--칼럼 보이기 (VISIBLE)
ALTER TABLE emp MODIFY job VISIBLE;
ALTER TABLE emp MODIFY mgr VISIBLE;
ALTER TABLE emp MODIFY hiredate VISIBLE;
ALTER TABLE emp MODIFY sal VISIBLE;
ALTER TABLE emp MODIFY comm VISIBLE;
ALTER TABLE emp MODIFY deptno VISIBLE;
테이블의 구조를 바꾸지 않고도 칼럼의 순서가 변경된 것을 확인할 수 있다.
오라클 11g 이하에서 칼럼 순서 변경 방법
CREATE TABLE emp_temp AS
SELECT empno
, ename
, job_id
, job
, mgr
, hiredate
, sal
, comm
, deptno
FROM emp;
오라클 11g 이하에서는 칼럼의 순서를 변경하기 위해서는 기존 테이블을 삭제하고 다시 생성해야 한다.
CREATE TABLE AS SELECT 구문을 사용하면 SELECT 절의 칼럼 형식을 그대로 복사해서 테이블을 생성하고, 데이터도 그대로 복사하기 때문에 쉽게 테이블을 생성할 수 있다.
임시 테이블(emp_temp)이 원하는 칼럼의 순서로 생성된 것을 확인할 수 있다.
--원본 테이블 삭제
DROP TABLE emp;
--임시 테이블명을 원본 테이블명으로 변경 (emp_temp -> emp)
RENAME emp_temp TO emp;
원본 테이블을 삭제하고, 임시 테이블명을 원본 테이블과 동일하게 변경하면 된다.
칼럼의 순서를 변경하기 위해서 테이블을 재생성하는 건 특별한 경우가 아니면 권장하지 않는다.
테이블 삭제(DROP) 시 PK, INDEX, 제약조건 등 함께 삭제가 되니, 꼭 백업 후 재생성을 해야 한다.
VIEW, SYNONYM, STORED PROCEDURE, FUNCTION, TRIGGER 등은 삭제되지 않는다.