Oracle 데이터베이스를 쿼리하여 모든 테이블의 이름을 표시하려면 어떻게합니까?
답변
SELECT owner, table_name
FROM dba_tables
DBA_TABLES
데이터 사전보기에 액세스 할 수 있다고 가정합니다 . 해당 권한이 없지만 필요한 경우 DBA가 해당 테이블에 대한 권한을 명시 적으로 부여하도록 요청하거나 DBA 가 사용자에게 데이터 사전 테이블을 조회 할 수 있는 SELECT ANY DICTIONARY
권한 또는 SELECT_CATALOG_ROLE
역할을 부여하도록 요청할 수 있습니다. ). 물론, 당신은 같은 특정 스키마 제외 할 수 있습니다 SYS
그리고 SYSTEM
당신은 아마 걱정하지 않습니다 오라클 테이블의 많은 수 있습니다.
또는에 액세스 할 수없는 경우 보기 DBA_TABLES
를 통해 계정이 액세스 할 수있는 모든 테이블을 ALL_TABLES
볼 수 있습니다.
SELECT owner, table_name
FROM all_tables
그러나 데이터베이스에서 사용 가능한 테이블의 서브 세트 일 수도 있습니다 ( ALL_TABLES
사용자에게 액세스 권한이 부여 된 모든 테이블에 대한 정보가 표시됨).
액세스 권한이있는 테이블이 아니라 소유 한 테이블에만 관심이있는 경우 다음을 사용할 수 있습니다 USER_TABLES
.
SELECT table_name
FROM user_tables
USER_TABLES
소유하고있는 테이블에 대한 정보 만 있기 때문에 OWNER
열 이 없습니다 . 정의에 따라 소유자는 사용자입니다.
오라클은 기존 데이터의 수를 사전 views–가 TAB
, DICT
, TABS
, 및 CAT
그 example–에 사용될 수있다. 일반적으로 스크립트를 Oracle 6으로 백 포트해야하는 경우가 아니라면 이러한 레거시보기를 사용하지 않는 것이 좋습니다. Oracle은 이러한보기를 오랫동안 변경하지 않았기 때문에 종종 새로운 유형의 객체에 문제가 있습니다. 예를 들어 TAB
및 CAT
보기는 모두 사용자 휴지통에있는 테이블에 대한 정보를 표시하지만보기는 모두 테이블을 [DBA|ALL|USER]_TABLES
필터링합니다. CAT
또한 TABLE_TYPE
“TABLE”을 사용하여 구체화 된 뷰 로그에 대한 정보를 표시합니다 . DICT
테이블과 동의어를 결합하고 누가 객체를 소유하고 있는지 말하지 않습니다.
답변
쿼리 user_tables
하고 dba_tables
작동하지 않았습니다.
이것은 한 일 :
select table_name from all_tables
답변
한 단계 더 나아가면 주어진 열 이름을 포함하는 테이블을 확인하는 데 사용할 수있는 cols (all_tab_columns)라는 또 다른 뷰가 있습니다.
예를 들면 다음과 같습니다.
SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';
이름이 EST로 시작하는 모든 테이블과 이름의 CALLREF를 포함하는 열을 찾습니다.
예를 들어 테이블 및 열 이름 지정 규칙에 따라 조인하려는 열을 작업 할 때 도움이됩니다.
답변
보다 나은 시청을 위해 sqlplus
사용 sqlplus
하는 경우 열이 엉망이되면 더 잘 볼 수 있도록 몇 가지 매개 변수를 먼저 설정해야 할 수 있습니다 (이 변수는 sqlplus
세션 을 종료 한 후에도 지속되지 않아야 함 ).
set colsep '|'
set linesize 167
set pagesize 30
set pagesize 1000
모든 테이블 표시
그런 다음 이와 같은 것을 사용하여 모든 테이블 이름을 볼 수 있습니다.
SELECT table_name, owner, tablespace_name FROM all_tables;
소유 한 테이블 표시
@Justin Cave가 언급했듯이 이것을 사용하여 소유 한 테이블 만 표시 할 수 있습니다.
SELECT table_name FROM user_tables;
조회수를 잊지 마세요
일부 “테이블”은 실제로 “조회”일 수 있으므로 다음과 같은 방법으로 실행할 수도 있습니다.
SELECT view_name FROM all_views;
결과
이렇게하면 다음과 같이 상당히 수용 가능한 것으로 보입니다.
답변
현재 사용자의 테이블을 선택하는 간단한 쿼리 :
SELECT table_name FROM user_tables;
답변
select object_name from user_objects where object_type='TABLE';
—————-또는——————
select * from tab;
—————-또는——————
select table_name from user_tables;
답변
아래의 데이터 사전보기를 시도하십시오.
tabs
dba_tables
all_tables
user_tables