Vous trouverez ci-dessous cinq méthodes que vous pouvez utiliser pour déterminer rapidement le nombre de tables définies par l'utilisateur dans la base de données actuelle dans SQL Server.
Les cinq options utilisent le COUNT()
fonction pour obtenir le compte. Évidemment, vous pouvez le remplacer par un astérisque (*
), ou les noms des colonnes pour renvoyer une liste de toutes les tables définies par l'utilisateur.
Option 1 - sys.tables
La façon la plus évidente de le faire est d'interroger le sys.tables
vue du catalogue système. Le but de cette vue est de renvoyer une ligne pour chaque table utilisateur, c'est donc exactement ce dont nous avons besoin.
USE WideWorldImportersDW; SELECT COUNT(*) AS [Number of User Tables] FROM sys.tables;
Résultat :
+-------------------------+ | Number of User Tables | |-------------------------| | 29 | +-------------------------+
Dans ce cas, je renvoie le nombre de tables utilisateur du WideWorldImportersDW
base de données.
Si je passe à une autre base de données, j'obtiens un résultat différent :
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.tables;
Résultat :
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Comme mentionné, vous pouvez répertorier les tables simplement en remplaçant le COUNT(*)
ligne avec un astérisque (*
) ou les noms des colonnes :
USE Music; SELECT name FROM sys.tables;
Résultat :
+---------+ | name | |---------| | Artists | | Genres | | Albums | | Country | +---------+
Option 2 - Filtrer les sys.objects par type
Une autre option consiste à interroger le sys.objects
vue du catalogue.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE type = 'U';
Résultat :
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Dans ce cas, vous devez filtrer par type = 'U'
(U
est pour "Table utilisateur").
Option 3 - Filtrer les sys.objects par "Type Description"
Une autre façon d'interroger les sys.objects
vue est de filtrer les résultats par le type_desc
colonne.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE type_desc = 'USER_TABLE';
Résultat :
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Option 4 - Filtrer sys.objects à l'aide de la fonction OBJECTPROPERTY()
Vous pouvez également utiliser le OBJECTPROPERTY()
fonction dans votre WHERE
clause.
Cette fonction accepte deux arguments :un ID d'objet et une propriété. L'ID d'objet peut être l'ID de table et la propriété peut être IsUserTable
, qui détermine si l'objet est ou non une table système.
Par conséquent, vous pourriez faire quelque chose comme ceci :
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM sys.objects WHERE OBJECTPROPERTY(object_id, 'IsUserTable') = 1;
Résultat :
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Option 5 – INFORMATION_SCHEMA.TABLES
Cette option interroge le INFORMATION_SCHEMA.TABLES
vue du schéma d'informations. Cette vue renvoie à la fois les vues et les tables, vous devez donc filtrer par TABLE_TYPE = 'BASE TABLE'
pour renvoyer uniquement les tables.
USE Music; SELECT COUNT(*) AS [Number of User Tables] FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
Résultat :
+-------------------------+ | Number of User Tables | |-------------------------| | 4 | +-------------------------+
Si vous avez besoin de connaître le nombre de tables système, consultez 3 façons de compter le nombre de tables système dans SQL Server.