Quando si lavora con database SQL Server può essere utile conoscere rapidamente la struttura di una tabella senza dover aprire SQL Server Management Studio o utilizzare gli strumenti grafici. Ad esempio, questa operazione risulta particolarmente comoda quando si devono generare documentazione tecnica, verificare la definizione di una tabella, confrontare strutture tra database differenti oppure sviluppare procedure automatiche.

La query riportata di seguito permette di ottenere tutte le principali informazioni relative ai campi di una tabella, tra cui:

  • Nome del campo

  • Tipo di dato

  • Lunghezza (per i tipi testuali)

  • Precisione e scala (per i tipi numerici)

  • Possibilità di valori NULL

  • Indicazione se il campo appartiene alla chiave primaria

È sufficiente valorizzare la variabile @TableName con il nome della tabella di interesse ed eseguire la query.

DECLARE @TableName SYSNAME = 'Tabella';

SELECT
    c.COLUMN_NAME AS NomeCampo,
    c.DATA_TYPE AS TipoDato,
    c.CHARACTER_MAXIMUM_LENGTH AS Lunghezza,
    c.NUMERIC_PRECISION AS Precisione,
    c.NUMERIC_SCALE AS Scala,
    c.IS_NULLABLE AS Nullable,
    CASE
        WHEN k.COLUMN_NAME IS NOT NULL THEN 'SI'
        ELSE 'NO'
    END AS ChiavePrimaria
FROM INFORMATION_SCHEMA.COLUMNS c
LEFT JOIN
(
    SELECT
        KU.TABLE_NAME,
        KU.COLUMN_NAME
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
    INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KU
        ON TC.CONSTRAINT_NAME = KU.CONSTRAINT_NAME
    WHERE TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
) k
    ON c.TABLE_NAME = k.TABLE_NAME
   AND c.COLUMN_NAME = k.COLUMN_NAME
WHERE c.TABLE_NAME = @TableName
ORDER BY c.ORDINAL_POSITION;

L'output sarà un elenco ordinato dei campi della tabella, corredato delle principali caratteristiche strutturali. Questa soluzione si basa sulle viste di sistema INFORMATION_SCHEMA, garantendo un metodo semplice, leggibile e compatibile con le diverse versioni di SQL Server.