Programming/Oracle

[Oracle] ALL_TAB_COLUMNS : 모든 테이블과 컬럼 조회하기

728x90

 

 

 

 

◾  ALL_TABLES  &  USER_TABLES

ALL_TABLES : 모든 테이블에 대해 조회할 수 있다 (관리자 권한이 있을 때)

USER_TABLES : 현재 User가 접근할 수 있는 모든 테이블에 대해 조회할 수 있다

SELECT * FROM ALL_TABLES;		-- (관리자 권한일 때) 모든 테이블
SELECT * FROM USER_TABLES;		-- 현재 USER가 접근 가능한 모든 테이블

 

😵   <   혼자 작은 프로젝트할 때는 테이블명을 잘 안 잊어버리고, 큰 프로젝트에서는 테이블이 너무 많아서 

            ALL_TALBES로 테이블명 조회는 딱히 많이 안쓰게 되더라구요

 

 

 

 

◾  ALL_TAB_COLUMNS

모든 Table, View, Cluster에 대한 Column에 대해 조회할 수 있다

😎   >    특정 컬럼이 어디 있는지 찾거나 특정 테이블의 모든 컬럼명을 가져올 때 사용하면 유용합니다! 

 

 

 

 

◾  ALL_TAB_COLUMNS 활용 방법

 

(1)  컬럼명으로 테이블 찾기

SELECT *
FROM ALL_TAB_COLUMNS
WHERE COLUMN_NAME = '컬럼명';

- 컬럼명만 덩그라니 가지고 있을 때, Table을 찾기 위해 사용

- 물론 여러 테이블에서 공통으로 사용할 때에는 결과가 많아 헷갈리겠지만, 사용 테이블을 모두 보여줘서 ERD를 볼 수 없는 상황에 유용하게 사용

 

 

(2)  특정 테이블의 모든 컬럼명 가져오기

SELECT ',' || COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME = '테이블명';

- 모든 컬럼명 앞에 ','울 붙여서 출력

- 다음 사진과 같이 출력된 결과를 복사하여 모든 컬럼명이 필요할 때 사용 가능

 

결과

 

- 다음과 같이 INSERT문에 컬럼명을 명시해야 하는데, 컬럼수가 너무 많으면 ALL_TAB_COLUMNS를 활용하여 컬럼명을 복사하기 유용하게 가져올 수 있다!

INSERT INTO TEST_TABLE_2
(
COL1
,COL2
,COL3

...

,COL999
)
SELECT *
FROM '테이블명'
WHERE ID = '1234'

 

 

 

 

 

 

 

728x90

'Programming > Oracle' 카테고리의 다른 글

[Oracle] 조건함수 DECODE 사용법  (0) 2022.09.25