2009-05-10 12 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標準と一致しません。言い換えると、同様の情報が利用可能ですが、その情報を取得するために使用するクエリは異なります。

(脚注:!システムのIBM DB2 UDBでのカタログ・ビュー私は、Windows/* NIXのためのIBM DB2 UDBでのカタログ・ビューとは異なります - そんなにUDBでユニバーサル用)

一部他のブランド(例えばSQLite)は、メタデータのための照会可能なインターフェースをまったく提供していません。

+0

私は答えようとしていて、「いいえ、絶対にありません」と言いました。あなたの答えは私を助けました。私は今日何か新しいことを学んだ:) – wcm

+0

それをサポートするRDBMSブランドのINFORMATION_SCHEMAのドキュメントへのリンクを追加しました。 –

5

いいえ、彼らはすべて自分のやり方を愛しています。

1

いいえ、SQL標準では、テーブル名がどこにリストされているかを制約しないため、使用しているSQLエンジンによって異なるステートメント(通常は特別な名前のテーブルにSELECTステートメント)を実行する必要があります対処する。

+1

ビルKarwinが正しく指摘するように、INFORMATION_SCHEMAは、SQL-92標準の一部です。一部のベンダーはそれをサポートしていないかもしれませんが、それは標準の一部です。 –

1

あなたは非SQLのアプローチを使用してOKですし、データベースのODBCドライバを持っているとそれがSQLTablesのエントリ・ポイントを実装している場合、おそらくあなたは、あなたが欲しい情報を得るかもしれません! APIの

pjjH

詳細に: http://msdn.microsoft.com/en-us/library/ms711831.aspx