sql >> Databáze >  >> RDS >> Sqlserver

5 způsobů, jak spočítat počet uživatelsky definovaných tabulek v databázi SQL Server

Níže je pět metod, které můžete použít k rychlému určení počtu uživatelsky definovaných tabulek v aktuální databázi na serveru SQL Server.

Všech pět možností používá COUNT() funkce pro získání počtu. Samozřejmě to můžete nahradit hvězdičkou (* ), nebo názvy sloupců, aby se vrátil seznam všech uživatelsky definovaných tabulek.

Možnost 1 – sys.tables

Nejviditelnějším způsobem, jak toho dosáhnout, je dotaz na sys.tables zobrazení katalogu systému. Celý účel tohoto zobrazení je vrátit řádek pro každou uživatelskou tabulku, takže to je přesně to, co potřebujeme.

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

Výsledek:

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

V tomto případě vrátím počet uživatelských tabulek z WideWorldImportersDW databáze.

Pokud přepnu na jinou databázi, dostanu jiný výsledek:

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

Výsledek:

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

Jak již bylo zmíněno, tabulky můžete vypsat jednoduše nahrazením COUNT(*) řádek s hvězdičkou (* ) nebo názvy sloupců:

USE Music;
SELECT name
FROM sys.tables;

Výsledek:

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

Možnost 2 – Filtrovat sys.objects podle typu

Další možností je dotaz na sys.objects zobrazení katalogu.

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

Výsledek:

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

V tomto případě musíte filtrovat podle type = 'U' (U je pro „tabulku uživatelů“).

Možnost 3 – Filtrování sys.objects podle „Popisu typu“

Další způsob dotazování sys.objects zobrazení je filtrovat výsledky podle type_desc sloupec.

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

Výsledek:

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

Možnost 4 – Filtrování sys.objects pomocí funkce OBJECTPROPERTY()

Můžete také použít OBJECTPROPERTY() funkce ve vašem WHERE doložka.

Tato funkce přijímá dva argumenty:ID objektu a vlastnost. ID objektu může být ID tabulky a vlastnost může být IsUserTable , která určuje, zda je objekt systémovou tabulkou.

Proto můžete udělat něco takového:

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

Výsledek:

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

Možnost 5 – INFORMATION_SCHEMA.TABLES

Tato možnost se dotazuje na INFORMATION_SCHEMA.TABLES zobrazení informačního schématu. Toto zobrazení vrací zobrazení i tabulky, takže je potřeba filtrovat podle TABLE_TYPE = 'BASE TABLE' vrátit jen tabulky.

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

Výsledek:

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

Pokud potřebujete zjistit počet systémových tabulek, přečtěte si 3 způsoby, jak spočítat počet systémových tabulek na serveru SQL.


  1. Vyberte pouze dnešní (od půlnoci) časová razítka

  2. Implementace zpracování chyb a transakcí na serveru SQL Server

  3. Nastavení cizího klíče s jiným datovým typem

  4. Jak naplnit ListView db ve složce aktiv?