sql >> Database teknologi >  >> RDS >> Sqlserver

5 måder at tælle antallet af brugerdefinerede tabeller i en SQL Server-database

Nedenfor er fem metoder, du kan bruge til hurtigt at bestemme, hvor mange brugerdefinerede tabeller der er i den aktuelle database i SQL Server.

Alle fem muligheder bruger COUNT() funktion for at få optællingen. Selvfølgelig kan du erstatte dette med en stjerne (* ), eller navnene på kolonnerne for at returnere en liste over alle brugerdefinerede tabeller.

Mulighed 1 – sys.tables

Den mest oplagte måde at gøre dette på er at forespørge sys.tables systemkatalogvisning. Hele formålet med denne visning er at returnere en række for hver brugertabel, så det er præcis, hvad vi har brug for.

USE WideWorldImportersDW;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.tables;

Resultat:

+-------------------------+
| Number of User Tables   |
|-------------------------|
| 29                      |
+-------------------------+

I dette tilfælde returnerer jeg antallet af brugertabeller fra WideWorldImportersDW database.

Hvis jeg skifter til en anden database, får jeg et andet resultat:

USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.tables;

Resultat:

+-------------------------+
| Number of User Tables   |
|-------------------------|
| 4                       |
+-------------------------+

Som nævnt kan du liste tabellerne ud ved blot at erstatte COUNT(*) linje med en stjerne (* ) eller navnene på kolonnerne:

USE Music;
SELECT name
FROM sys.tables;

Resultat:

+---------+
| name    |
|---------|
| Artists |
| Genres  |
| Albums  |
| Country |
+---------+

Mulighed 2 – Filtrer sys.objects efter type

En anden mulighed er at forespørge sys.objects katalogvisning.

USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.objects 
WHERE type = 'U';

Resultat:

+-------------------------+
| Number of User Tables   |
|-------------------------|
| 4                       |
+-------------------------+

I dette tilfælde skal du filtrere efter type = 'U' (U er for "Brugertabel").

Mulighed 3 – Filtrer sys.objects efter "Typebeskrivelse"

En anden måde at forespørge på sys.objects view er at filtrere resultaterne efter type_desc kolonne.

USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.objects 
WHERE type_desc = 'USER_TABLE';

Resultat:

+-------------------------+
| Number of User Tables   |
|-------------------------|
| 4                       |
+-------------------------+

Mulighed 4 – Filtrer sys.objects ved at bruge funktionen OBJECTPROPERTY()

Du kan også bruge OBJECTPROPERTY() funktion i din WHERE klausul.

Denne funktion accepterer to argumenter:et objekt-id og en egenskab. Objekt-id'et kan være tabel-id'et, og egenskaben kan være IsUserTable , som bestemmer, om objektet er en systemtabel eller ej.

Derfor kunne du gøre noget som dette:

USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM sys.objects 
WHERE OBJECTPROPERTY(object_id, 'IsUserTable') = 1;

Resultat:

+-------------------------+
| Number of User Tables   |
|-------------------------|
| 4                       |
+-------------------------+

Mulighed 5 – INFORMATION_SCHEMA.TABLER

Denne mulighed forespørger INFORMATION_SCHEMA.TABLES informationsskemavisning. Denne visning returnerer både visninger og tabeller, så du skal filtrere efter TABLE_TYPE = 'BASE TABLE' at returnere kun borde.

USE Music;
SELECT COUNT(*) AS [Number of User Tables]
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';

Resultat:

+-------------------------+
| Number of User Tables   |
|-------------------------|
| 4                       |
+-------------------------+

Hvis du har brug for at finde ud af antallet af systemtabeller, se 3 måder at tælle antallet af systemtabeller på i SQL Server.


  1. Hvordan kan jeg importere en .sql-fil til min Heroku postgres-database?

  2. Indstilling af ODBC-forbindelsesattributter uden at skulle skrive kode

  3. Slet alle duplikerede rækker undtagen én i MySQL?

  4. Forståelse af virkningerne af høj latens i MySQL- og MariaDB-løsninger med høj tilgængelighed