Hieronder staan vijf methoden die u kunt gebruiken om snel te bepalen hoeveel door de gebruiker gedefinieerde tabellen zich in de huidige database in SQL Server bevinden.
Alle vijf de opties gebruiken de COUNT()
functie om de telling te krijgen. U kunt dit uiteraard vervangen door een asterisk (*
), of de namen van de kolommen om een lijst van alle door de gebruiker gedefinieerde tabellen te retourneren.
Optie 1 – sys.tables
De meest voor de hand liggende manier om dit te doen is door de sys.tables
. op te vragen systeemcatalogus bekijken. Het hele doel van deze weergave is om een rij terug te geven voor elke gebruikerstabel, dus het is precies wat we nodig hebben.
USE WideWorldImportersDW; SELECT COUNT(*) AS [Number of User Tables] FROM sys.tables;
Resultaat:
+-------------------------+ | Number of User Tables | |-------------------------| | 29 | +-------------------------+
In dit geval retourneer ik het aantal gebruikerstabellen van de WideWorldImportersDW
database.
Als ik overschakel naar een andere database, krijg ik een ander resultaat:
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.tables;
Resultaat:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Zoals vermeld, kunt u de tabellen eenvoudig weergeven door de COUNT(*)
. te vervangen regel met een asterisk (*
) of de namen van de kolommen:
USE Music; SELECT name FROM sys.tables;
Resultaat:
+---------+ | name | |---------| | Artists | | Genres | | Albums | | Country | +---------+
Optie 2 – Filter sys.objects op type
Een andere optie is om de sys.objects
. op te vragen catalogus bekijken.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE type = 'U';
Resultaat:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
In dit geval moet je filteren op type = 'U'
(U
is voor "Gebruikerstabel").
Optie 3 – Filter sys.objects op “Typebeschrijving”
Een andere manier om de sys.objects
. op te vragen weergave is om de resultaten te filteren op de type_desc
kolom.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE type_desc = 'USER_TABLE';
Resultaat:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Optie 4 – Filter sys.objects door de functie OBJECTPROPERTY() te gebruiken
U kunt ook de OBJECTPROPERTY()
. gebruiken functie in uw WHERE
clausule.
Deze functie accepteert twee argumenten:een object-ID en een eigenschap. De object-ID kan de tabel-ID zijn en de eigenschap kan IsUserTable
zijn , die bepaalt of het object al dan niet een systeemtabel is.
Daarom zou je zoiets als dit kunnen doen:
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE OBJECTPROPERTY(object_id, 'IsUserTable') = 1;
Resultaat:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Optie 5 – INFORMATION_SCHEMA.TABLES
Deze optie bevraagt de INFORMATION_SCHEMA.TABLES
informatie schema bekijken. Deze weergave retourneert zowel weergaven als tabellen, dus u moet filteren op TABLE_TYPE = 'BASE TABLE'
om alleen tabellen terug te geven.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
Resultaat:
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Als u het aantal systeemtabellen wilt weten, raadpleegt u 3 manieren om het aantal systeemtabellen in SQL Server te tellen.