2009-05-10 42 views

cevap

15

En yakın seçenek, tablolar için INFORMATION_SCHEMA sorgulamaktır.

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

INFORMATION_SCHEMA standart SQL bir parçasıdır, ancak tüm satıcıları bunu destekleyecek. Gibi bildiğim kadarıyla, bunu destekleyecek tek RDBMS satıcılar şunlardır:

veritabanının Bazı markalar, Oracle, IBM DB2, Firebird, Derby vb., Sistemde meta verileri sorgulayabileceğiniz bir arayüz sağlayan benzer "katalog" görünümlerine sahiptir. Ancak görünümlerin adları, içerdikleri sütunlar ve ilişkileri INFORMATION_SCHEMA için ANSI SQL standardına uymuyor. Başka bir deyişle, benzer bilgiler mevcuttur, ancak bu bilgiyi almak için kullanacağınız sorgu farklıdır.

(dipnot:! I Windows/* NIX için IBM DB2 UDB katalog görünümleri farklıdır Sistemi için IBM DB2 UDB katalog görünümleri - çok Universal için UDB)

Bazı diğer markalar (örn. SQLite) meta veriler için hiç sorgulanabilir bir arayüz sunmaz.

+0

"Hayır, kesinlikle hayır" demek üzereydim. Cevabınız beni kurtardı. Bugün yeni bir şey öğrendim :) – wcm

+0

Destekleyen ilgili RDBMS markalarında INFORMATION_SCHEMA için dokümanlara bağlantılar ekledim. –

5

Hayır. Hepsine, kendi küçük yollarını yapmayı seviyorum.

1

Hayır, SQL standardı, tablo adlarının listelendiği yerleri kısıtlamıyor (yani), bu nedenle SQL motoruna bağlı olarak farklı ifadeler (özel olarak adlandırılmış tablolarda genellikle SELECT deyimi) yapmanız gerekir. ile başa çıkmak.

+1

, ınformatıon_schema SQL-92 standardının parçasıdır: at API üzerinde

pjjH

ayrıntıları. Bazı satıcılar bunu desteklemeyebilir, ancak standardın bir parçasıdır. –

1

bunu SQLTables giriş noktası uygulayan olmayan bir SQL yaklaşımı ve veritabanına ve için bir ODBC sürücüsü sahip kullanarak Tamam iseniz, muhtemelen istediğiniz bilgileri alabilirsiniz! Bill Karwin doğru işaret ettiği gibi http://msdn.microsoft.com/en-us/library/ms711831.aspx

İlgili konular