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

Vues SQL Server INFORMATION_SCHEMA | Voir si une table existe

Quel est le problème ?

Lorsque vous écrivez des requêtes pour une base de données pour laquelle vous êtes peut-être nouveau ou qui change souvent, vous souhaiterez peut-être exécuter une vérification rapide pour trouver toutes les tables d'une base de données spécifique, ou les colonnes de la base de données, ou pour rechercher si une table ou une colonne existe.

Pourquoi est-ce un problème ?

Comprendre le schéma et les tables qu'il contient aide à écrire du SQL efficace et évite d'exécuter des requêtes plusieurs fois juste pour voir si le nom du schéma ou le nom de la colonne est correct.

Ce tutoriel vous aidera à résoudre ces problèmes.

Utilisation du schéma d'informations

Interroger les métadonnées sur une source de données est le moyen le plus simple de déterminer la composition d'une table si vous ne la comprenez pas déjà. Microsoft SQL Server fournit une vue de schéma d'informations parmi plusieurs méthodes permettant d'obtenir ces métadonnées. Comme l'indique leur documentation de support, « les vues de schéma d'informations fournissent une vue interne, indépendante de la table système, des métadonnées SQL Server. Les vues de schéma d'informations permettent aux applications de fonctionner correctement même si des modifications importantes ont été apportées aux tables système sous-jacentes. »

Nous utiliserons quelques-unes des vues du schéma d'informations afin d'exécuter des requêtes permettant de déterminer la composition des tables dans la source de données.

Pour afficher les TABLES et COLUMNS dans la base de données ou recherchez TABLES et COLUMNS .

Cette première requête renverra toutes les tables de la base de données que vous interrogez.

SELECT
  	TABLE_NAME
FROM
  	INFORMATION_SCHEMA.TABLES

La deuxième requête renverra une liste de toutes les colonnes et tables de la base de données que vous interrogez.

SELECT
  	TABLE_NAME,
COLUMN_NAME
FROM
  	INFORMATION_SCHEMA.COLUMNS

Ou, vous pouvez également interroger uniquement les COLUMNS à partir d'une table spécifique et renvoyer les noms de colonne de la table spécifique "Album" dans notre base de données.

SELECT
	COLUMN_NAME
FROM
  	INFORMATION_SCHEMA.COLUMNS
WHERE
	TABLE_NAME = 'Album'

Avec cette requête suivante, vous pouvez savoir s'il existe ou non une TABLE dans la source de données qui correspond à certains types de paramètres de recherche.

IF EXISTS(
SELECT
  			*
  		FROM
  			INFORMATION_SCHEMA.TABLES
  		WHERE
  			TABLE_NAME = 'Album'
			)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;

La requête renverra le mot "trouvé" si la table "Album" existe dans notre base de données.

Maintenant, pour aller un peu plus loin, vous pouvez utiliser cette requête pour savoir s'il y a ou non une COLUMN dans la source de données qui correspond à certains types de paramètres de recherche.

IF EXISTS(
SELECT
  				*
  			FROM
  				INFORMATION_SCHEMA.COLUMNS
  			WHERE
  				COLUMN_NAME = 'Title'
				)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;

Utilisation du INFORMATION_SCHEMA afficher dans votre source de données peut être un moyen fiable de déterminer le contenu de la source de données pendant que vous créez vos requêtes.

Pour plus d'informations sur les vues de schéma d'informations système Microsoft SQL Server, veuillez consulter leurs documents de support.