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.