Im Folgenden finden Sie fünf Methoden, mit denen Sie schnell ermitteln können, wie viele benutzerdefinierte Tabellen sich in der aktuellen Datenbank in SQL Server befinden.
Alle fünf Optionen verwenden den COUNT()
Funktion, um die Zählung zu erhalten. Natürlich können Sie dies durch ein Sternchen ersetzen (*
) oder die Namen der Spalten, um eine Liste aller benutzerdefinierten Tabellen zurückzugeben.
Option 1 – sys.tables
Der offensichtlichste Weg, dies zu tun, besteht darin, die sys.tables
abzufragen Systemkatalogansicht. Der ganze Zweck dieser Ansicht besteht darin, eine Zeile für jede Benutzertabelle zurückzugeben, also ist es genau das, was wir brauchen.
USE WideWorldImportersDW; SELECT COUNT(*) AS [Number of User Tables] FROM sys.tables;
Ergebnis:
+-------------------------+ | Number of User Tables | |-------------------------| | 29 | +-------------------------+
In diesem Fall gebe ich die Anzahl der Benutzertabellen aus dem WideWorldImportersDW
zurück Datenbank.
Wenn ich zu einer anderen Datenbank wechsle, erhalte ich ein anderes Ergebnis:
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.tables;
Ergebnis:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Wie bereits erwähnt, können Sie die Tabellen einfach auflisten, indem Sie COUNT(*)
ersetzen Zeile mit einem Sternchen (*
) oder die Namen der Spalten:
USE Music; SELECT name FROM sys.tables;
Ergebnis:
+---------+ | name | |---------| | Artists | | Genres | | Albums | | Country | +---------+
Option 2 – Systemobjekte nach Typ filtern
Eine andere Möglichkeit besteht darin, die sys.objects
abzufragen Katalogansicht.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE type = 'U';
Ergebnis:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
In diesem Fall müssen Sie nach type = 'U'
filtern (U
steht für „Benutzertabelle“).
Option 3 – Systemobjekte nach „Typbeschreibung“ filtern
Eine andere Möglichkeit, die sys.objects
abzufragen view besteht darin, die Ergebnisse nach type_desc
zu filtern Säule.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE type_desc = 'USER_TABLE';
Ergebnis:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Option 4 – Filtern Sie sys.objects mithilfe der Funktion OBJECTPROPERTY()
Sie können auch OBJECTPROPERTY()
verwenden Funktion in Ihrem WHERE
Klausel.
Diese Funktion akzeptiert zwei Argumente:eine Objekt-ID und eine Eigenschaft. Die Objekt-ID kann die Tabellen-ID sein und die Eigenschaft kann IsUserTable
sein , die bestimmt, ob das Objekt eine Systemtabelle ist oder nicht.
Daher könnten Sie etwa so vorgehen:
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE OBJECTPROPERTY(object_id, 'IsUserTable') = 1;
Ergebnis:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Option 5 – INFORMATION_SCHEMA.TABLES
Diese Option fragt die INFORMATION_SCHEMA.TABLES
ab Informationsschemaansicht. Diese Ansicht gibt sowohl Ansichten als auch Tabellen zurück, daher müssen Sie nach TABLE_TYPE = 'BASE TABLE'
filtern um nur Tabellen zurückzugeben.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
Ergebnis:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Wenn Sie die Anzahl der Systemtabellen herausfinden müssen, lesen Sie 3 Möglichkeiten, die Anzahl der Systemtabellen in SQL Server zu zählen.