Afficher toutes les tables dans une base de données
Selon la version de SQL Server que vous exécutez, la méthode d'interrogation et de renvoi d'une liste de toutes les tables créées par l'utilisateur peut différer légèrement. Ci-dessous, nous examinerons brièvement les instructions Transact-SQL pouvant être utilisées pour récupérer une liste de tables pour l'ancienne version de SQL Server 2000 et la nouvelle version SQL Server 2005 ou au-delà.
Liste des tables dans SQL Server 2000
Pour les anciennes versions de SQL Server (telles que SQL Server 2000, bien que cette méthode soit également prise en charge dans SQL Server 2005 pour la compatibilité descendante), vous devrez interroger la vue des métadonnées SYS.SYSOBJECTS. Le SYS.SYSOBJECTS contient une ligne pour chaque objet ayant été créé dans la base de données, y compris les STORED PROCEDURE, les vues et les tables utilisateur (étant importantes à distinguer des tables système.) La table SYSOBJECTS contient quelques dizaines de colonnes de données car elle doit contenir des informations sur pratiquement tout ce qui est ajouté au serveur au fil du temps. Par conséquent, pour trouver une liste de tables créées par l'utilisateur (ignorant ainsi les tables système), nous devrons trouver des résultats où la colonne xtype (spécifiant le type d'objet pour cette ligne) est égale à la valeur U, signifiant table utilisateur. L'instruction Transact-SQL résultante devrait ressembler à ceci :
Étant donné que SYSOBJECTS fait partie de l'espace de noms SYS, lors de l'interrogation de SYSOBJECTS, il est inutile de spécifier que SYSOBJECTS fait partie de l'espace de noms SYS global, nous pouvons donc l'omettre comme indiqué dans l'exemple ci-dessus. Cela renverra une liste de résultats de toutes les tables créées par l'utilisateur. Étant donné que la quantité d'informations renvoyées lors de l'interrogation de toutes les colonnes est assez importante, vous souhaiterez peut-être réduire les résultats en affichant uniquement la colonne de nom et peut-être la date de création (date de création) :
Liste des tables dans SQL Server 2005 ou plus récent
Afficher la liste de toutes les tables dans SQL Server lors de l'utilisation d'une version plus récente (SQL Server 2005 ou supérieure) consiste à interroger les vues INFORMATION_SCHEMA étant automatiquement intégrées à SQL Server. Ceux-ci vous permettent d'afficher facilement une grande variété de métadonnées pour cette instance SQL Server particulière, y compris des informations sur les COLUMNS, les ROUTINES et même les TABLES. Vous pouvez remarquer que quatre colonnes sont renvoyées lors de l'utilisation de la vue INFORMATION_SCHEMA.TABLES, mais la colonne la plus importante est TABLE_TYPE, déterminant si la table de cette ligne est une table réelle (BASE TABLE) ou une vue (VIEW).
Pour renvoyer toutes les tables et vues dans une requête, exécutez l'instruction Transact-SQL suivante :
Il peut également être judicieux de spécifier la base de données que vous souhaitez interroger :
Si vous souhaitez uniquement récupérer les tables réelles et filtrer les vues des résultats, ajoutez une clause WHERE TABLE_TYPE = 'BASE TABLE' :