Vad är problemet?
När du skriver frågor för en databas som du kanske är ny på, eller en som ändras ofta, kanske du vill köra en snabbkontroll för att hitta alla tabeller i en specifik databas, eller kolumnerna i databasen, eller för att söka efter tabell eller kolumn finns.
Varför är detta ett problem?
Att förstå schemat och vilka tabeller som finns i det hjälper till att skriva effektiv SQL och hjälper till att undvika att köra frågor flera gånger bara för att se om schemanamnet eller kolumnnamnet är korrekt.
Denna handledning hjälper dig att lösa dessa problem.
Använda informationsschemat
Att fråga metadata på en datakälla är det enklaste sättet att bestämma sammansättningen av en tabell om du inte redan har en förståelse för den. Microsoft SQL Server tillhandahåller en informationsschemavy som en av flera metoder för att erhålla denna metadata. Som deras supportdokumentation säger, "Informationsschemavyer ger en intern, systemtabelloberoende vy av SQL Server-metadata. Informationsschemavyer gör det möjligt för applikationer att fungera korrekt även om betydande ändringar har gjorts i de underliggande systemtabellerna."
Vi kommer att använda ett par av vyerna i informationsschemat för att köra frågor som hjälper till att bestämma sammansättningen av tabeller i datakällan.
För att visa TABLES
och COLUMNS
i databasen eller hitta TABLES
och COLUMNS
.
Denna första fråga kommer att returnera alla tabeller i databasen du frågar efter.
SELECT
TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
Den andra frågan returnerar en lista över alla kolumner och tabeller i databasen du frågar efter.
SELECT
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
Eller så kan du bara fråga efter COLUMNS
från en specifik tabell och returnera kolumnnamnen från den specifika tabellen "Album" i vår databas.
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Album'
Med denna nästa fråga kan du ta reda på om det finns en TABLE
eller inte i datakällan som matchar någon typ av sökparametrar.
IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME = 'Album'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
Frågan returnerar ordet "hittad" om tabellen "Album" finns i vår databas.
För att ta det lite längre kan du använda den här frågan för att ta reda på om det finns en COLUMN
i datakällan som matchar någon typ av sökparametrar.
IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMN_NAME = 'Title'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
Använder INFORMATION_SCHEMA
visa i din datakälla kan vara ett tillförlitligt sätt att avgöra vad som finns i datakällan medan du bygger dina frågor.
För mer information om Microsoft SQL Server System Information Schema Views, läs mer från deras supportdokument.