Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server INFORMATION_SCHEMA-Ansichten | Prüfen Sie, ob eine Tabelle existiert

Was ist das Problem?

Wenn Sie Abfragen für eine Datenbank schreiben, die Sie möglicherweise noch nicht kennen oder die sich häufig ändert, möchten Sie möglicherweise eine schnelle Überprüfung durchführen, um alle Tabellen in einer bestimmten Datenbank oder die Spalten in der Datenbank zu finden oder um nach Tabelle oder Spalte zu suchen existiert.

Warum ist das ein Problem?

Das Verständnis des Schemas und der darin enthaltenen Tabellen hilft, effizientes SQL zu schreiben, und hilft, das mehrfache Ausführen von Abfragen zu vermeiden, nur um zu sehen, ob der Schema- oder Spaltenname korrekt ist.

Dieses Tutorial hilft bei der Lösung dieser Probleme.

Verwendung des Informationsschemas

Das Abfragen der Metadaten einer Datenquelle ist der einfachste Weg, um den Aufbau einer Tabelle zu bestimmen, wenn Sie sie noch nicht kennen. Microsoft SQL Server stellt eine Informationsschemaansicht als eine von mehreren Methoden zum Abrufen dieser Metadaten bereit. In der Support-Dokumentation heißt es:„Informationsschemaansichten bieten eine interne, systemtabellenunabhängige Ansicht der SQL Server-Metadaten. Informationsschemaansichten ermöglichen es Anwendungen, korrekt zu funktionieren, obwohl erhebliche Änderungen an den zugrunde liegenden Systemtabellen vorgenommen wurden.“

Wir werden einige der Ansichten im Informationsschema verwenden, um Abfragen auszuführen, die dabei helfen, den Aufbau von Tabellen in der Datenquelle zu bestimmen.

Zum Anzeigen der TABLES und COLUMNS in der Datenbank oder finden Sie TABLES und COLUMNS .

Diese erste Abfrage gibt alle Tabellen in der abgefragten Datenbank zurück.

SELECT
  	TABLE_NAME
FROM
  	INFORMATION_SCHEMA.TABLES

Die zweite Abfrage gibt eine Liste aller Spalten und Tabellen in der abgefragten Datenbank zurück.

SELECT
  	TABLE_NAME,
COLUMN_NAME
FROM
  	INFORMATION_SCHEMA.COLUMNS

Sie können auch nur nach COLUMNS fragen aus einer bestimmten Tabelle und geben die Spaltennamen aus der bestimmten Tabelle „Album“ in unserer Datenbank zurück.

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

Mit dieser nächsten Abfrage können Sie herausfinden, ob es eine TABLE gibt oder nicht in der Datenquelle, die mit einer Art von Suchparametern übereinstimmt.

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

Die Abfrage gibt das Wort „gefunden“ zurück, wenn die Tabelle „Album“ in unserer Datenbank existiert.

Nun, um es etwas weiter zu führen, Sie können diese Abfrage verwenden, um herauszufinden, ob es eine COLUMN gibt oder nicht in der Datenquelle, die mit einer Art von Suchparametern übereinstimmt.

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

Verwendung des INFORMATION_SCHEMA Ansicht in Ihrer Datenquelle kann eine zuverlässige Methode sein, um festzustellen, was sich in der Datenquelle befindet, während Sie Ihre Abfragen erstellen.

Weitere Informationen zu den Microsoft SQL Server-Systeminformations-Schemaansichten finden Sie in den Support-Dokumenten.