Vyřešeno: hledejte název sloupce v sql db, když nevím, ve které tabulce je

Práce s rozsáhlou databází v SQL může často představovat různé problémy. Jedním z takových úkolů by bylo hledání konkrétního názvu sloupce v databázi SQL, když si nejste jisti, ze které tabulky se skládá. Prostřednictvím tohoto průvodce bychom toto dilema vyřešili a nabídli systematický způsob, jak tento úkol provést. To by znamenalo ponořit se do hlubin programování SQL, dotazovacích systémů a schémat, rozdělit kód, aby se vám zjednodušily kroky.

Problém

Někdy se můžete ocitnout v situaci kde dostanete název sloupce, ale nemáte informace o tom, do které tabulky patří. Ve velkých databázích s mnoha tabulkami může být ruční kontrola každé tabulky na požadovaný sloupec časově náročným procesem náchylným k chybám.

Řešení: Dotaz k záchraně

Dobrou zprávou je, že SQL vám poskytuje řešení pro tento problém pomocí jeho systémových pohledů. Níže je uveden dotaz, který by pomohl získat požadované informace:

SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%YourColumnName%'
ORDER BY schema_name, table_name;

Vysvětlení kódu krok za krokem

Pojďme se na to blíže podívat v syntaxi a logice SQL používané k efektivnímu přístupu k tomuto problému:

  • SELECT t.name AS název_tabulky,SCHEMA_NAME(schema_id) AS název_schématu, c.name AS název_sloupce: Zde vybíráme názvy tabulek, jejich schéma a názvy sloupců ze systémových pohledů.
  • ZE sys.tabulek AS t: Z tohoto vybereme systémový pohled 'sys.tables'. Pro zjednodušení má přezdívku 't', což později napomáhá při spojování.
  • INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID: Zde provedeme operaci INNER JOIN pro spojení řádků ze sys.tables a sys.columns, kdykoli je splněna podmínka spojení (t.OBJECT_ID = c.OBJECT_ID).
  • WHERE c.name LIKE '%YourColumnName%': Tím se odfiltrují názvy sloupců na základě podmínky uvedené v klauzuli WHERE. Nahraďte 'YourColumnName' názvem sloupce, který hledáte.
  • ORDER BY název_schématu, název_tabulky;: Nakonec jsou výsledky kvůli čitelnosti seřazeny podle 'schema_name' a 'table_name'.

Je to přímočarý dotaz, který provádí důkladné vyhledávání a ušetří vám ruční práci při kontrole každé tabulky.

Systémová zobrazení SQL

Zobrazení systému SQL Server poskytují rozsáhlé úložiště systémových informací, které lze použít k provádění takto intenzivních činností. Konkrétně v našem případě `sys.tables` představující seznam všech existujících tabulek a `sys.columns` představující všechny informace o sloupcích pro libovolnou tabulku tvoří páteř našeho dotazu.

Ustanovení INNER JOIN

Jedno INNER JOIN výběr je jedním z široce používaných spojení SQL, protože vrací záznamy, které mají odpovídající hodnoty v obou tabulkách zapojených do spojení. Zde jsme jej použili k propojení mezi tabulkovým a sloupcovým mapováním.

Hledání názvů sloupců v obrovské SQL databázi nebylo nikdy jednodušší. Všestrannost SQL skutečně spočívá v jeho schopnosti relativně snadno procházet a spravovat velké množství dat. Tato diskuse je důkazem této schopnosti a zjednodušuje úkol, který by byl jinak značně těžkopádný.

Související příspěvky:

Zanechat komentář