Wat is het probleem?
Bij het schrijven van query's voor een database waar u misschien nieuw bent, of een database die vaak verandert, wilt u misschien een snelle controle uitvoeren om alle tabellen in een specifieke database of de kolommen in de database te vinden, of om te zoeken naar een tabel of kolom bestaat.
Waarom is dit een probleem?
Inzicht in het schema en welke tabellen erin staan, helpt om efficiënte SQL te schrijven en helpt voorkomen dat query's meerdere keren worden uitgevoerd om te zien of de schemanaam of kolomnaam correct is.
Deze tutorial helpt bij het oplossen van deze problemen.
Het informatieschema gebruiken
Het opvragen van de metadata op een gegevensbron is de gemakkelijkste manier om de samenstelling van een tabel te bepalen als je er nog geen begrip van hebt. Microsoft SQL Server biedt een informatieschemaweergave als een van de verschillende methoden om deze metagegevens te verkrijgen. Zoals hun ondersteuningsdocumentatie stelt:"Informatieschemaweergaven bieden een interne, systeemtabelonafhankelijke weergave van de SQL Server-metagegevens. Informatieschemaweergaven zorgen ervoor dat applicaties correct werken, hoewel er belangrijke wijzigingen zijn aangebracht in de onderliggende systeemtabellen."
We zullen een aantal weergaven in het informatieschema gebruiken om query's uit te voeren die helpen bij het bepalen van de samenstelling van tabellen in de gegevensbron.
Om de TABLES
weer te geven en COLUMNS
in de database of zoek TABLES
en COLUMNS
.
Deze eerste zoekopdracht retourneert alle tabellen in de database die u opvraagt.
SELECT
TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
De tweede query retourneert een lijst met alle kolommen en tabellen in de database die u opvraagt.
SELECT
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
Of u kunt ook alleen de COLUMNS
. opvragen uit een specifieke tabel en retourneer de kolomnamen van de specifieke tabel 'Album' in onze database.
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Album'
Met deze volgende vraag kun je erachter komen of er al dan niet een TABLE
. is in de gegevensbron die overeenkomt met een soort zoekparameters.
IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME = 'Album'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
De zoekopdracht retourneert het woord 'gevonden' als de tabel 'Album' in onze database bestaat.
Om nu een beetje verder te gaan, kunt u deze zoekopdracht gebruiken om erachter te komen of er al dan niet een COLUMN
is in de gegevensbron die overeenkomt met een soort zoekparameters.
IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMN_NAME = 'Title'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
Gebruik maken van de INFORMATION_SCHEMA
weergave in uw gegevensbron kan een betrouwbare manier zijn om te bepalen wat er in de gegevensbron staat terwijl u uw zoekopdrachten maakt.
Voor meer informatie over de Microsoft SQL Server System Information Schema Views, lees meer in hun ondersteuningsdocumenten.