Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Visualizzazioni INFORMAZIONE_SCHEMA di SQL Server | Verifica se esiste una tabella

Qual ​​è il problema?

Quando scrivi query per un database a cui potresti essere nuovo o che cambia spesso, potresti voler eseguire un rapido controllo per trovare tutte le tabelle in un database specifico, o le colonne nel database, o per cercare se tabella o colonna esiste.

Perché questo è un problema?

La comprensione dello schema e delle tabelle in esso contenute aiuta a scrivere un SQL efficiente ed evita di eseguire query più volte solo per vedere se il nome dello schema o il nome della colonna è corretto.

Questo tutorial aiuterà a risolvere questi problemi.

Utilizzo dello schema informativo

Interrogare i metadati su un'origine dati è il modo più semplice per determinare la composizione di una tabella se non ne hai già una comprensione. Microsoft SQL Server fornisce una visualizzazione dello schema delle informazioni come uno dei numerosi metodi per ottenere questi metadati. Come afferma la documentazione di supporto, "Le viste dello schema delle informazioni forniscono una vista interna, indipendente dalla tabella di sistema, dei metadati di SQL Server. Le visualizzazioni dello schema delle informazioni consentono alle applicazioni di funzionare correttamente anche se sono state apportate modifiche significative alle tabelle di sistema sottostanti."

Utilizzeremo un paio di viste nello schema delle informazioni per eseguire query che aiutano a determinare la composizione delle tabelle nell'origine dati.

Per mostrare le TABLES e COLUMNS nel database o trova TABLES e COLUMNS .

Questa prima query restituirà tutte le tabelle nel database che stai interrogando.

SELECT
  	TABLE_NAME
FROM
  	INFORMATION_SCHEMA.TABLES

La seconda query restituirà un elenco di tutte le colonne e le tabelle nel database che stai interrogando.

SELECT
  	TABLE_NAME,
COLUMN_NAME
FROM
  	INFORMATION_SCHEMA.COLUMNS

In alternativa, puoi anche eseguire una query solo per COLUMNS da una tabella specifica e restituire i nomi delle colonne dalla tabella specifica "Album" nel nostro database.

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

Con questa prossima query puoi scoprire se esiste o meno una TABLE nell'origine dati che corrisponde a qualche tipo di parametro di ricerca.

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

La query restituirà la parola "trovato" se la tabella "Album" esiste nel nostro database.

Ora, per approfondire un po', puoi utilizzare questa query per scoprire se esiste o meno una COLUMN nell'origine dati che corrisponde a qualche tipo di parametro di ricerca.

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

Utilizzando il INFORMATION_SCHEMA la visualizzazione nell'origine dati può essere un modo affidabile per determinare cosa c'è nell'origine dati mentre crei le tue query.

Per ulteriori informazioni sulle visualizzazioni dello schema delle informazioni di sistema di Microsoft SQL Server, leggere di più dai loro documenti di supporto.