Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-Listentabellen:So zeigen Sie alle Tabellen an

Abhängig von der Version von SQL Server, die Sie ausführen, kann die Methode zum Abfragen und Zurückgeben einer Liste aller vom Benutzer erstellten Tabellen geringfügig abweichen. Im Folgenden untersuchen wir kurz die TSQL-Anweisungen, die verwendet werden können, um eine Tabellenliste sowohl für den älteren SQL Server 2000 als auch für die neuere Version 2005 oder höher abzurufen.

Auflisten von Tabellen in SQL Server 2000

Für ältere Versionen von SQL Server (z. B. SQL Server 2000, obwohl diese Methode aus Gründen der Abwärtskompatibilität auch in SQL Server 2005 unterstützt wird) müssen Sie SYS.SYSOBJECTS abfragen Metadatenansicht. SYS.SYSOBJECTS enthält eine Zeile für jedes Objekt, das in der Datenbank erstellt wurde, einschließlich stored procedures , views und user tables (die wichtig sind, um sie von system tables zu unterscheiden .)

Die SYSOBJECTS Die Tabelle enthält ein paar Dutzend Datenspalten, da sie Informationen über praktisch alles enthalten muss, was im Laufe der Zeit zum Server hinzugefügt wurde. Um daher eine Liste von benutzerdefinierten Tabellen zu finden (wobei system tables ignoriert werden ), müssen wir Ergebnisse finden, bei denen xtype Spalte (die den object type angibt für diese Zeile) ist gleich dem Wert U , was für user table steht . Die resultierende TSQL-Anweisung sollte folgendermaßen aussehen:

SELECT
  *
FROM
  SYSOBJECTS
WHERE
  xtype = 'U';
GO

Hinweis:Seit SYSOBJECTS sind Teil des SYS Namespace, wenn SYSOBJECTS abgefragt wird Es ist nicht erforderlich, SYSOBJECTS anzugeben ist Teil des globalen SYS Namespace, also können wir ihn wie im obigen Beispiel weglassen.

Dies gibt eine Ergebnisliste aller vom Benutzer erstellten Tabellen zurück. Da die Menge an Informationen, die beim Abfragen aller Spalten zurückgegeben wird, ziemlich groß ist, möchten Sie möglicherweise die Ergebnisse kürzen, indem Sie nur den name anzeigen Spalte und vielleicht das crdate (Erstellungsdatum):

SELECT
  name,
  crdate
FROM
  SYSOBJECTS
WHERE
  xtype = 'U';
GO

Auflisten von Tabellen in SQL Server 2005 oder höher

Um alle Tabellen in SQL Server aufzulisten, wenn Sie eine neuere Version (SQL 2005 oder höher) verwenden, müssen Sie das INFORMATION_SCHEMA abfragen Ansichten, die automatisch in SQL Server integriert werden. Diese ermöglichen es Ihnen, auf einfache Weise eine Vielzahl von Metadaten für diese bestimmte SQL Server-Instanz anzuzeigen, einschließlich Informationen zu COLUMNS , ROUTINES , und sogar TABLES .

Möglicherweise stellen Sie fest, dass bei Verwendung von INFORMATION_SCHEMA.TABLES vier Spalten zurückgegeben werden Ansicht, aber die wichtigste Spalte ist TABLE_TYPE , die bestimmt, ob die Tabelle in dieser Zeile eine tatsächliche Tabelle ist (BASE TABLE ) oder eine Ansicht (VIEW ).

Um alle Tabellen und zurückzugeben Ansichten in einer Abfrage, führen Sie die folgende TSQL-Anweisung aus:

SELECT
  *
FROM
  INFORMATION_SCHEMA.TABLES;
GO

Es kann auch sinnvoll sein, die Datenbank anzugeben, die Sie abfragen möchten:

SELECT
  *
FROM
  databaseName.INFORMATION_SCHEMA.TABLES;
GO

Wenn Sie nur tatsächliche Tabellen abrufen und Ansichten aus den Ergebnissen herausfiltern möchten, fügen Sie ein WHERE TABLE_TYPE = 'BASE TABLE' hinzu Klausel:

SELECT
  *
FROM
  databaseName.INFORMATION_SCHEMA.TABLES
WHERE
  TABLE_TYPE = 'BASE TABLE';
GO