2009-05-10 9 views

Antwort

15

Die nächste Option ist die Abfrage der INFORMATION_SCHEMA für Tabellen.

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

Die INFORMATION_SCHEMA ist Teil des Standard-SQL, aber nicht alle Anbieter unterstützen es. Soweit ich weiß, sind die einzigen RDBMS-Anbieter, die es unterstützen, sind:

Einige Marken von Datenbank, z.B. Oracle, IBM DB2, Firebird, Derby usw. haben ähnliche "Katalog" -Ansichten, die Ihnen eine Schnittstelle bieten, über die Sie Metadaten auf dem System abfragen können. Aber die Namen der Ansichten, die Spalten, die sie enthalten, und ihre Beziehungen stimmen nicht mit dem ANSI SQL-Standard für INFORMATION_SCHEMA überein. Mit anderen Worten, ähnliche Informationen sind verfügbar, aber die Abfrage, die Sie verwenden würden, um diese Informationen zu erhalten, ist anders.

(Fußnote: die Katalogansichten in IBM DB2 UDB für System i unterscheiden sich von den Katalogsichten in IBM DB2 UDB für Windows/* NIX - so viel für die Universal- in UDB)

Einige Andere Marken (zB SQLite) bieten überhaupt keine abfragbare Schnittstelle für Metadaten an.

+0

Ich wollte antworten und sagen "Nein, absolut nicht". Deine Antwort hat mich gerettet. Ich habe heute etwas Neues gelernt :) – wcm

+0

Ich habe Links zu den Dokumenten für INFORMATION_SCHEMA in den entsprechenden RDBMS-Marken hinzugefügt, die es unterstützen. –

5

Nein. Sie alle lieben es, ihren eigenen kleinen Weg zu gehen.

1

Nein, der SQL-Standard legt nicht fest, wo die Tabellennamen aufgelistet werden (wenn überhaupt), Sie müssen also verschiedene Anweisungen ausführen (normalerweise SELECT Anweisungen in speziell benannten Tabellen), abhängig von der verwendeten SQL-Engine klarkommen mit.

+1

Wie Bill Karwin richtig vorträgt, INFORMATION_SCHEMA Teil des SQL-92-Standard ist. Einige Anbieter unterstützen dies möglicherweise nicht, aber es gehört zum Standard. –

1

Wenn Sie einen Nicht-SQL-Ansatz bei der Verwendung von OK sind und Sie haben einen ODBC-Treiber für die Datenbank und es implementiert die SQLTables Entry-Punkt, Sie möglicherweise könnten die gewünschten Informationen erhalten!

pjjH

Details über die API auf: http://msdn.microsoft.com/en-us/library/ms711831.aspx

Verwandte Themen