sql >> Databáze >  >> RDS >> Sqlserver

SQL Server INFORMATION_SCHEMA Zobrazení | Podívejte se, zda existuje tabulka

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.


  1. Nejlepší způsoby, jak zvýšit efektivitu databáze

  2. Jak aktualizovat entity JPA, když se backendová databáze mění asynchronně?

  3. MyISAM versus InnoDB

  4. MySQL COALESCE() Vysvětleno