Hvad er problemet?
Når du skriver forespørgsler til en database, du måske er ny i, eller en der ændrer sig ofte, vil du måske køre et hurtigt tjek for at finde alle tabellerne i en bestemt database, eller kolonnerne i databasen, eller for at søge efter tabel eller kolonne eksisterer.
Hvorfor er dette et problem?
At forstå skemaet og hvilke tabeller der er i det hjælper med at skrive effektiv SQL og hjælper med at undgå at køre forespørgsler flere gange bare for at se, om skemanavnet eller kolonnenavnet er korrekt.
Denne selvstudie hjælper med at løse disse problemer.
Brug af informationsskemaet
Forespørgsel til metadata på en datakilde er den nemmeste måde at bestemme sammensætningen af en tabel på, hvis du ikke allerede har en forståelse af den. Microsoft SQL Server giver en informationsskemavisning som en af flere metoder til at opnå disse metadata. Som deres supportdokumentation siger, "Informationsskemavisninger giver en intern, systemtabeluafhængig visning af SQL Server-metadata. Informationsskemavisninger gør det muligt for applikationer at fungere korrekt, selvom der er foretaget væsentlige ændringer i de underliggende systemtabeller."
Vi vil bruge et par af visningerne i informationsskemaet til at køre forespørgsler, der hjælper med at bestemme sammensætningen af tabeller i datakilden.
For at vise TABLES
og COLUMNS
i databasen eller find TABLES
og COLUMNS
.
Denne første forespørgsel vil returnere alle tabellerne i den database, du forespørger på.
SELECT
TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
Den anden forespørgsel vil returnere en liste over alle kolonner og tabeller i den database, du forespørger på.
SELECT
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
Eller du kan også forespørge efter kun COLUMNS
fra en specifik tabel og returner kolonnenavnene fra den specifikke tabel 'Album' i vores database.
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Album'
Med denne næste forespørgsel kan du finde ud af, om der er en TABLE
i datakilden, der matcher en slags søgeparametre.
IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME = 'Album'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
Forespørgslen returnerer ordet 'fundet', hvis tabellen 'Album' findes i vores database.
For nu at tage det lidt længere, kan du bruge denne forespørgsel til at finde ud af, om der er en COLUMN
i datakilden, der matcher en slags søgeparametre.
IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMN_NAME = 'Title'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
Brug af INFORMATION_SCHEMA
visning i din datakilde kan være en pålidelig måde at bestemme, hvad der er i datakilden, mens du bygger dine forespørgsler.
For mere information om Microsoft SQL Server System Information Schema Views, læs venligst mere fra deres supportdokumenter.