오라클(Oracle) 유저 테이블 전체 조회, 데이터 ROW수, 테이블, 데이터 모두 삭제

오라클(Oracle) 유저 테이블 전체 조회, 데이터 ROW수, 테이블, 데이터 모두 삭제

오라클에서 사용자(OWNER)가 생성한 테이블이 어떤 것이 있는지 조회하고 데이터가 몇 건씩 있는지 조회해야 할 때가 있습니다. 한 번에 모든 테이블을 삭제해야 할 때도 있지요. 오라클에서 한 번에 테이블을 삭제 할 수 있는 방법은 없습니다. 한 번에 삭제할 수 있도록 동적으로 쿼리를 만들고 실행해야 합니다.

방법은 어렵지 않기 때문에 쉽게 하실 수 있을 겁니다.

 

1. 유저(OWNER)가 생성한 테이블 전체 조회


DBWJ가 생성한 테이블을 알아야 응용해서 사용할 수 있습니다.
아래 쿼리를 실행하면 현재 로그인한 계정으로 생성한 모든 테이블이 검색됩니다.
검색된 칼럼 중 TABLE_NAME 칼럼으로 사용할 겁니다.

1
2
SELECT * 
 FROM USER_TABLES; 
cs


 

2. 테이블 데이터 확인


테이블 데이터를 확인하는 쿼리를 한 번에 만들 수 있습니다.
아래와 같이 동적 쿼리로 ROW 10개씩 조회하는 쿼리를 만들 수 있습니다.

1
2
3
4
SELECT 'SELECT * FROM ' 
 || TABLE_NAME 
 || ' WHERE ROWNUM < 10; ' 
 FROM USER_TABLES; 
cs

 


 

3. 각 테이블 당 몇 개의 ROW가 COUNT 하기


생성한 테이블에 몇 개씩의 데이터가 있는지 확인하는 쿼리 입니다.
아래 쿼리를 실행하면 생성한 테이블에 몇 개의 ROW 수가 있는지 조회할 수 있는 쿼리가 조회됩니다.


 


결과로 나온 데이터를 복사 후 다시 쿼리 실행 창에 붙여넣습니다.
마지막 UNION ALL 항목을 삭제하고 쿼리를 실행하면 몇 개의 ROW가 있는지 확인할 수 있습니다.

1
2
3
4
SELECT 'SELECT COUNT(*) FROM ' 
 || TABLE_NAME 
 || ' UNION ALL ' 
 FROM USER_TABLES; 
cs


 

4. 테이블 ROW 수 확인 및 테이블 명 포함


테이블 ROW 수를 확인했지만 어떤 테이블인지 쉽게 알 수 없습니다.
쿼리를 좀 더 고도화해서 테이블 명이 함께 조회되도록 칼럼을 추가합니다.


 



쿼리 실행 후 나온 결과를 복사해서 새 창에 가장 마지막 UNION ALL을 삭제 후 실행하면
테이블당 row 수가 조회됩니다.

1
2
3
4
5
6
7
8
9
SELECT 'SELECT COUNT(*) AS CNT' 
 || ', ''' 
 || TABLE_NAME 
 || ' ''' 
 || ' AS TB_NAME ' 
 || ' FROM ' 
 || TABLE_NAME 
 || ' UNION ALL ' 
 FROM USER_TABLES;
cs


 

5.  모든 테이블 데이터 삭제


생성한 테이블의 모든 데이터를 삭제하는 쿼리를 만들어보겠습니다.
역시 동적 쿼리를 이용하여 모든 테이블 데이터를 삭제하는 쿼리입니다.

데이터 삭제라서 가능하다면 유저명을 붙이는 것이 안전합니다.
다른 유가 만든 테이블이 동일하고 권한이 있다면 삭제될 가능성이 있으니까요.

FROM 다음에 "오너." 을 추가합니다.
쿼리를 실행합니다.

1
2
3
4
SELECT 'DELETE FROM  USER1.' 
 || TABLE_NAME 
 || ';' 
 FROM USER_TABLES; 
cs




쿼리 결괏값을 모두 복사해서 새 창에 붙여넣고 실행하면
생성한 모든 테이블의 데이터가 삭제됩니다.


 

6. 테이블 삭제 (TABLE DROP)


생성한 테이블을 모두 삭제하는 쿼리입니다. 쿼리 실행 후 결괏값을 새 창으로 붙여넣습니다.

1
2
3
4
SELECT 'DROP TABLE  USER1.' 
 || TABLE_NAME 
 || ';' 
 FROM USER_TABLES; 
cs




쿼리를 실행하면 생성한 모든 테이블이 삭제됩니다.

오라클(Oracle) 유저 테이블 전체 조회, 데이터 ROW수, 테이블, 데이터 모두 삭제를 알아보았습니다.

 
반응형