Přestože je SQL Server jako relační databáze extrémně výkonný, může být občas poněkud skličující, pokud jde o vyhledávání základních informací o samotném databázovém systému.
Abychom z této malé části zmírnili tyto bolesti hlavy, stručně prozkoumáme, jak najít všechny tabulky v databázi, které obsahují název konkrétního sloupce .
Zobrazení katalogu SQL Server
Jedním ze základních konceptů, kterým je třeba o SQL Serveru porozumět, je koncept catalog views , což jsou ve skutečnosti databázové tabulky (catalogs v tomto případě), které zobrazují systémové informace o SQL Server Database Engine.
Dotaz na systémové informace
Všechna catalog views jsou přístupné pomocí SELECT SQL příkaz FROM specifický katalog v rámci sys. jmenný prostor.
Například následující příkaz lze použít k zobrazení informací o všech databázových tabulkách v systému prostřednictvím sys.tables katalog:
SELECT
*
FROM
sys.tables
Příkaz LIKE a zástupný znak
Než se pustíme do toho, jak extrahovat všechny tabulky s konkrétním názvem, měli bychom stručně prozkoumat, co LIKE příkaz ano, stejně jako zástupný znak (% ) a jak se používají společně.
LIKE se používá v dotazu k určení, zda konkrétní vzor znaků (obvykle hodnoty zadaného column ) shodují se s formátovaným řetězcem znaků.
LIKE se často používá také ve spojení s % znak, který představuje zástupný znak při pokusu o shodu se vzorem. Když % v řetězci vzoru je přítomen zástupný znak, znamená to, že jakýkoli znaky mohou být přítomny v tomto umístění řetězce vzoru a přesto mohou být považovány za shodu.
Například pokud chceme najít všechny knihy, kde je title začíná s „The“, ale může obsahovat jakékoli další znaky, použili bychom příkaz jako takto:
SELECT
title,
primary_author,
published_date
FROM
books
WHERE
title LIKE 'The%'
Pozorní čtenáři by si mohli uvědomit, že výše uvedený vzor by se nehodil pouze k titulům, které měly na začátku „The“, ale také k jakýmkoliv titulům se slovy začínajícími jednoduše na tři písmena „The“. Od % zástupné znaky odpovídají libovolným znakům, pokud chceme pouze kontrolovat názvy se slovem „The“, je vhodnější přidat mezeru:
SELECT
title,
primary_author,
published_date
FROM
books
WHERE
title LIKE 'The %'
Výběr tabulek obsahujících název sloupce
S našimi základními znalostmi obou catalog views a LIKE jsme nyní vybaveni k vyhledání všech tabulek v našem systému, které obsahují konkrétní název sloupce:
SELECT
sys.columns.name AS ColumnName,
tables.name AS TableName
FROM
sys.columns
JOIN sys.tables ON
sys.columns.object_id = tables.object_id
WHERE
sys.columns.name = 'ColumnName'
Potřebujeme spojit informace ze dvou katalogy, sys.tables a sys.columns , takže používáme JOIN prohlášení. Tyto dva jsou spojeny pomocí object_id pole, takže JOIN na tomto poli.
Odtud je to jednoduchá záležitost výběru ColumnName a TableName našich výsledků a nakonec samozřejmě pouze vyhledávání záznamů, kde sys.columns.name se rovná našemu ColumnName řetězec.
Tento dotaz však najde pouze přesné shody názvu sloupce. Pokud chceme najít částečné shody, můžeme použít LIKE a % místo toho zástupné znaky:
SELECT
sys.columns.name AS ColumnName,
tables.name AS TableName
FROM
sys.columns
JOIN sys.tables ON
sys.columns.object_id = tables.object_id
WHERE
sys.columns.name LIKE '%ColumnName%'
Tady to máme! Jednoduchý dotaz k vyhledání všech tabulek a přidružených sloupců s konkrétním (nebo podobným) názvem sloupce.