2009-05-10 6 views

답변

15

테이블에 대해 INFORMATION_SCHEMA을 쿼리하는 것이 가장 가까운 옵션입니다.

SELECT * 
FROM INFORMATION_SCHEMA.Tables 
WHERE table_schema = 'mydatabase'; 

INFORMATION_SCHEMA은 표준 SQL의 일부이지만 일부 벤더가 지원하지는 않습니다. 지금까지 내가 아는 한, 그것을 지원하는 유일한 RDBMS 벤더는 다음과 같습니다

데이터베이스의 일부 브랜드, Oracle, IBM DB2, Firebird, Derby 등은 시스템에서 메타 데이터를 쿼리 할 수있는 인터페이스를 제공하는 유사한 "카탈로그"뷰를 가지고 있습니다. 그러나 뷰의 이름, 포함 된 열 및 해당 관계가 INFORMATION_SCHEMA의 ANSI SQL 표준과 일치하지 않습니다. 즉, 유사한 정보를 사용할 수 있지만 정보를 얻기 위해 사용하는 쿼리는 다릅니다.

(각주 :! 내가 윈도우/* NIX에 대한 IBM DB2 UDB에서 카탈로그 뷰는 다른 시스템에 대한 IBM DB2 UDB에서 카탈로그 뷰 - 순전히을 유니버설에 대한 UDB에서)

일부 다른 브랜드 (예 : SQLite)는 메타 데이터에 대해 쿼리 할 수있는 인터페이스를 제공하지 않습니다.

+0

나는 "아니오, 절대적으로"라고 대답하려고합니다. 당신의 대답이 저를 구 했어요. 나는 오늘 새로운 것을 배웠다 :) – wcm

+0

나는 그것을 지원하는 각각의 RDBMS 브랜드에서 INFORMATION_SCHEMA에 대한 문서에 대한 링크를 추가했다. –

5

아니요. 모두가 자신의 작은 방식으로하는 것을 좋아합니다.

1

아니요, SQL 표준은 테이블 이름이 나열된 위치를 제한하지 않으므로 현재 SQL 엔진에 따라 다른 문 (일반적으로 특수 테이블에 SELECT 문)을 수행해야합니다 상대하고.

+1

의 INFORMATION_SCHEMA는 SQL-92 표준의 일부입니다에서 API에

pjjH는

세부 사항. 일부 공급 업체는 지원하지 않을 수도 있지만 표준의 일부입니다. –

1

당신이이 SQLTables에 엔트리 포인트를 구현하는 비 SQL 접근 데이터베이스 에 대한 ODBC 드라이버가를 사용하여와 OK 있다면, 당신은 가능 원하는 정보를 얻을 수 있습니다! 빌 Karwin가 올바르게 지적한대로 이 http://msdn.microsoft.com/en-us/library/ms711831.aspx

관련 문제