테이블에 새로운 칼럼을 추가할 때 컬럼의 순서를 조정하고 싶은 경우가 있습니다.
하지만 테이블 컬럼 사이에도 순서가 정해져 있어서 Dbeaver와 같은 DBMS에서 드래그 & 드랍 과 같은 방식으로는
순서를 조정할 수가 없습니다.
오라클 12c에는 컬럼을 보이지 않도록 하는 INVISIBLE 기능이 있습니다. 이를 통해 테이블의 컬럼을 마치 없는 것처럼 숨길 수 있습니다. ALTER TABLE 테이블명 MODIFY 컬럼명 INVISIBLE; 명령어를 실행하면 해당 컬럼은 테이블의 DESCRIPTION에서 사라지게 됩니다.
INVISIBLE 기능의 용도
이 기능의 주된 용도는 명확하지 않지만, 활용 방법 중 하나로 테이블 컬럼 순서를 조정하는 데 사용할 수 있습니다. 기존에는 오라클 테이블의 컬럼 순서를 조정하려면 테이블을 DROP하고 다시 CREATE하는 방법밖에 없었습니다. 하지만 12c 버전부터는 INVISIBLE 및 VISIBLE 기능을 이용하여 테이블을 DROP하지 않고도 컬럼 순서를 조정할 수 있습니다.
컬럼 순서 조정 방법
컬럼 순서를 조정하는 방법은 다음과 같습니다:
- ALTER TABLE 테이블명 MODIFY 컬럼명 INVISIBLE;
- ALTER TABLE 테이블명 MODIFY 컬럼명 VISIBLE;
이렇게 하면 '컬럼명' 컬럼은 맨 끝으로 이동하게 됩니다. 중간에 위치한 컬럼도 동일한 방법으로 INVISIBLE, VISIBLE 처리하면 맨 끝으로 이동합니다.
예제 스크립트
모든 컬럼을 INVISIBLE로 설정한 후 원하는 순서대로 VISIBLE 처리하면 컬럼 순서 조정이 완료됩니다. 아래 SQL을 약간 수정하여 활용하면 편리하게 INVISIBLE, VISIBLE 스크립트를 생성할 수 있습니다. DBA 권한이 없는 사용자는 DBA_TAB_COLUMNS 대신 USER_TAB_COLUMNS를 사용하면 됩니다.
SELECT SQL
FROM (
SELECT TABLE_NAME, 1 NO, COLUMN_ID,
'ALTER TABLE '|| OWNER ||'.'|| TABLE_NAME||' MODIFY '|| COLUMN_NAME ||' INVISIBLE ;' SQL
FROM DBA_TAB_COLUMNS
WHERE TABLE_NAME = '테이블명'
UNION ALL
SELECT TABLE_NAME, 1 NO, COLUMN_ID,
'ALTER TABLE '|| OWNER ||'.'|| TABLE_NAME||' MODIFY '|| COLUMN_NAME ||' VISIBLE ;' SQL
FROM DBA_TAB_COLUMNS
WHERE TABLE_NAME = '테이블명'
)
WHERE TABLE_NAME = '테이블명'
ORDER BY NO, COLUMN_ID, SQL;
이 스크립트를 사용하여 테이블의 컬럼 순서를 자유롭게 조정할 수 있습니다. 이를 통해 더 편리하게 데이터베이스를 관리할 수 있습니다.
댓글