2009-05-10 15 views

Odpowiedz

15

Najbliższą opcją jest zapytanie do tabeli INFORMATION_SCHEMA.

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

Numer INFORMATION_SCHEMA jest częścią standardowego kodu SQL, ale nie wszyscy dostawcy go obsługują. O ile mi wiadomo, tylko dostawców RDBMS, które go obsługują to:

Niektóre marki bazy danych, na przykład Oracle, IBM DB2, Firebird, Derby itp. Mają podobne widoki "katalogu", które udostępniają interfejs, w którym można wysyłać zapytania do metadanych w systemie. Jednak nazwy widoków, kolumn, które zawierają i ich relacji nie pasują do standardu ANSI SQL dla INFORMATION_SCHEMA. Innymi słowy, podobne informacje są dostępne, ale zapytanie, które można wykorzystać do uzyskania tych informacji, jest inne.

(przypis: widoki Katalog w IBM DB2 UDB dla systemu i różnią się od poglądów katalog w IBM DB2 UDB for Windows/* nix - Tyle Universalu w UDB)

Niektóre inne marki (np. SQLite) w ogóle nie oferują żadnego możliwego do zaspokojenia interfejsu dla metadanych.

+0

Już miałem odpowiedzieć i powiedzieć "Nie, absolutnie nie". Twoja odpowiedź mnie uratowała. Dziś nauczyłem się czegoś nowego :) – wcm

+0

Dodałem linki do dokumentów dla INFORMATION_SCHEMA w odpowiednich markach RDBMS, które go obsługują. –

5

Nie. Wszyscy kochają robić to na swój własny sposób.

1

Nie, standard SQL nie jest związany z nazwami tabel (jeśli w ogóle), więc musisz wykonać różne instrukcje (zazwyczaj SELECT na specjalnie nazwanych tabelach) w zależności od silnika SQL do czynienia z.

+1

jak Bill Karwin prawidłowo wskazuje obecnie, INFORMATION_SCHEMA stanowi część standardu SQL-92. Niektórzy dostawcy mogą tego nie obsługiwać, ale jest to część standardu. –

Powiązane problemy