Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Tables de liste SQL Server :comment afficher toutes les tables

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 TSQL qui peuvent être utilisées pour récupérer une liste de tables pour l'ancienne version de SQL Server 2000 et la version plus récente de 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 le SYS.SYSOBJECTS vue des métadonnées. SYS.SYSOBJECTS contient une ligne pour chaque objet créé dans la base de données, y compris les stored procedures , views , et user tables (qui sont importants à distinguer des system tables .)

Les SYSOBJECTS La table 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 system tables ), nous devrons trouver des résultats où le xtype colonne (qui spécifie le object type pour cette ligne) est égal à la valeur U , qui signifie user table . L'instruction TSQL résultante devrait ressembler à ceci :

SELECT
  *
FROM
  SYSOBJECTS
WHERE
  xtype = 'U';
GO

Remarque :Depuis SYSOBJECTS font partie du SYS espace de noms, lors de l'interrogation de SYSOBJECTS il est inutile de préciser que SYSOBJECTS fait partie du SYS global espace de noms, 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 le name colonne et peut-être le crdate (date de création) :

SELECT
  name,
  crdate
FROM
  SYSOBJECTS
WHERE
  xtype = 'U';
GO

Liste des tables dans SQL Server 2005 ou version ultérieure

La liste de toutes les tables du serveur SQL lors de l'utilisation d'une version plus récente (SQL 2005 ou supérieure) consiste à interroger le INFORMATION_SCHEMA vues qui sont automatiquement intégrées à SQL Server. Ceux-ci vous permettent de visualiser facilement une grande variété de métadonnées pour cette instance SQL Server particulière, y compris des informations sur COLUMNS , ROUTINES , et même TABLES .

Vous pouvez remarquer qu'il y a quatre colonnes renvoyées lors de l'utilisation de INFORMATION_SCHEMA.TABLES vue, mais la colonne la plus importante est TABLE_TYPE , qui détermine si la table de cette ligne est une table réelle (BASE TABLE ) ou une vue (VIEW ).

Pour retourner toutes les tables et vues dans une requête, exécutez l'instruction TSQL suivante :

SELECT
  *
FROM
  INFORMATION_SCHEMA.TABLES;
GO

Il peut également être judicieux de préciser la base de données que vous souhaitez interroger :

SELECT
  *
FROM
  databaseName.INFORMATION_SCHEMA.TABLES;
GO

Si vous souhaitez uniquement récupérer les tables réelles et filtrer les vues à partir des résultats, ajoutez un WHERE TABLE_TYPE = 'BASE TABLE' clause :

SELECT
  *
FROM
  databaseName.INFORMATION_SCHEMA.TABLES
WHERE
  TABLE_TYPE = 'BASE TABLE';
GO