SQL Server Användbara Metadata frågor

Metadatafrågor är verkligen till hjälp när du upptäcker information för ett visst databasschema. Databasinformation inklusive tabeller, synpunkter, kolumnnamn, datatyper, index och tabellbegränsningar är alla tillgängliga med hjälp av frågor som dessa.

Under denna handledning vill jag utforska några användbara metadatafrågor.

Låt oss börja med att hitta listan över tabeller skapade i den givna databasen.

välj * från information_schema.tables där table_type = "basbord";


Låt oss nu lista de synpunkter som skapats i den givna databasen.

välj * från information_schema.tables där table_type = "view";


Låt oss skapa en fråga som anger kolumnnamnen, datatyperna, om kolumnen tillåter noll eller inte och de högsta tillåtna tecknen i raden.

välj kolumnnamn, data_type, is_nullable, character_maximum_length från information_schema.columns där table_name = 'emp';


Den här frågan visar tabellnamnet, objektidentifikationen, tabelldatabasen och den senaste tabellen modifierad tid.

välj namn, object_id, create_date, modify_date från sys.tables;


Listning av de skapade indexerna för en tabell med kolumnnamn krävs ofta. I denna fråga är a.name det tabellnamn för vilket du listar indexen. Genom att ta bort a.name-villkoret kan du se alla skapade index i din databas.

VÄLJ a.name tabellnamn, namnnamn indexnamn, d.name kolumnnamn FRÅN sys.tables a, sys.indexes b, sys.index_columns c, sys.columns d VAR a.object_id = b.object_id OCH b.object_id = c. object_id OCH b.index_id = c.index_id OCH c.object_id = d.object_id OCH c.column_id = d.column_id OCH a.name = 'emp';

Denna fråga kommer att lista de definierade begränsningarna på tabeller med kolumnnamnen. I det här exemplet kan vi se emp tabellens unika, primära eller utländska nyckelbegränsningar.

VÄLJ a.table_name, a.constraint_name, b.column_name, a.constraint_type FRÅN information_schema.table_constraints a, information_schema.key_column_usage b VARA a.table_name = 'EMP' och a.table_name = b.table_name OCH a.table_schema = b.table_schema OCH a.constraint_name = b.constraint_name;

Antag att du vill skriva en 'välj räkna (1) från tabellnamn' fråga för varje tabell i din databas, men du har mer än 100 tabeller i din databas. I stället för att skriva en separat fråga för varje tabell kan du generera de här frågorna med hjälp av SQL. Därför kan du skriva SQL-kod för att generera SQL.

VÄLJ 'välj räkna (1) från [' + tabellnamn + '];' FRÅN information_schema.tables;