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

5 Möglichkeiten, die Anzahl der benutzerdefinierten Tabellen in einer SQL Server-Datenbank zu zählen

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.