V čem je problém?
Při psaní dotazů pro databázi, se kterou možná nejste noví nebo která se často mění, možná budete chtít spustit rychlou kontrolu, abyste našli všechny tabulky v konkrétní databázi nebo sloupce v databázi, nebo abyste prohledali, zda tabulka nebo sloupec existuje.
Proč je to problém?
Pochopení schématu a tabulek, které jsou v něm obsaženy, pomáhá psát efektivní SQL a pomáhá vyhnout se opakovanému spouštění dotazů, abyste zjistili, zda je název schématu nebo název sloupce správný.
Tento tutoriál vám pomůže vyřešit tyto problémy.
Použití informačního schématu
Dotazování na metadata ve zdroji dat je nejjednodušší způsob, jak určit složení tabulky, pokud jí ještě nerozumíte. Microsoft SQL Server poskytuje zobrazení informačního schématu jako jednu z několika metod pro získání těchto metadat. Jak uvádí jejich podpůrná dokumentace:„Zobrazení informačního schématu poskytuje interní pohled na metadata serveru SQL Server nezávislý na systémové tabulce. Zobrazení informačního schématu umožňuje aplikacím pracovat správně, přestože byly provedeny významné změny v základních systémových tabulkách.“
Budeme používat několik zobrazení v informačním schématu, abychom mohli spouštět dotazy, které pomáhají určit složení tabulek ve zdroji dat.
Chcete-li zobrazit TABLES
a COLUMNS
v databázi nebo vyhledejte TABLES
a COLUMNS
.
Tento první dotaz vrátí všechny tabulky v databázi, na kterou se dotazujete.
SELECT
TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
Druhý dotaz vrátí seznam všech sloupců a tabulek v databázi, na kterou se dotazujete.
SELECT
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
Nebo můžete také zadat dotaz pouze na COLUMNS
z konkrétní tabulky a vrátí názvy sloupců z konkrétní tabulky „Album“ v naší databázi.
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Album'
Pomocí tohoto dalšího dotazu můžete zjistit, zda existuje či neexistuje TABLE
ve zdroji dat, který odpovídá nějakému druhu parametrů vyhledávání.
IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME = 'Album'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
Dotaz vrátí slovo „nalezeno“, pokud tabulka „Album“ v naší databázi existuje.
Nyní, abychom to vzali trochu dále, můžete tento dotaz použít ke zjištění, zda existuje COLUMN
ve zdroji dat, který odpovídá nějakému druhu parametrů vyhledávání.
IF EXISTS(
SELECT
*
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMN_NAME = 'Title'
)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;
Pomocí INFORMATION_SCHEMA
zobrazení ve vašem zdroji dat může být spolehlivým způsobem, jak zjistit, co je ve zdroji dat při vytváření dotazů.
Další informace o zobrazeních schématu systémových informací serveru Microsoft SQL Server naleznete v jejich dokumentech podpory.