sql >> Database >  >> RDS >> Sqlserver

5 manieren om het aantal door de gebruiker gedefinieerde tabellen in een SQL Server-database te tellen

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.


  1. Verschil tussen multi-statement tabelwaardige functies en inline tabelwaardige functies in SQL Server

  2. MySQL-opdrachtregelopmaak met UTF8

  3. Hoe Partition By of Max gebruiken?

  4. Hoe Round() werkt in PostgreSQL