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.