sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server INFORMATION_SCHEMA visninger | Se om der findes en tabel

Hvad er problemet?

Når du skriver forespørgsler til en database, du måske er ny i, eller en der ændrer sig ofte, vil du måske køre et hurtigt tjek for at finde alle tabellerne i en bestemt database, eller kolonnerne i databasen, eller for at søge efter tabel eller kolonne eksisterer.

Hvorfor er dette et problem?

At forstå skemaet og hvilke tabeller der er i det hjælper med at skrive effektiv SQL og hjælper med at undgå at køre forespørgsler flere gange bare for at se, om skemanavnet eller kolonnenavnet er korrekt.

Denne selvstudie hjælper med at løse disse problemer.

Brug af informationsskemaet

Forespørgsel til metadata på en datakilde er den nemmeste måde at bestemme sammensætningen af ​​en tabel på, hvis du ikke allerede har en forståelse af den. Microsoft SQL Server giver en informationsskemavisning som en af ​​flere metoder til at opnå disse metadata. Som deres supportdokumentation siger, "Informationsskemavisninger giver en intern, systemtabeluafhængig visning af SQL Server-metadata. Informationsskemavisninger gør det muligt for applikationer at fungere korrekt, selvom der er foretaget væsentlige ændringer i de underliggende systemtabeller."

Vi vil bruge et par af visningerne i informationsskemaet til at køre forespørgsler, der hjælper med at bestemme sammensætningen af ​​tabeller i datakilden.

For at vise TABLES og COLUMNS i databasen eller find TABLES og COLUMNS .

Denne første forespørgsel vil returnere alle tabellerne i den database, du forespørger på.

SELECT
  	TABLE_NAME
FROM
  	INFORMATION_SCHEMA.TABLES

Den anden forespørgsel vil returnere en liste over alle kolonner og tabeller i den database, du forespørger på.

SELECT
  	TABLE_NAME,
COLUMN_NAME
FROM
  	INFORMATION_SCHEMA.COLUMNS

Eller du kan også forespørge efter kun COLUMNS fra en specifik tabel og returner kolonnenavnene fra den specifikke tabel 'Album' i vores database.

SELECT
	COLUMN_NAME
FROM
  	INFORMATION_SCHEMA.COLUMNS
WHERE
	TABLE_NAME = 'Album'

Med denne næste forespørgsel kan du finde ud af, om der er en TABLE i datakilden, der matcher en slags søgeparametre.

IF EXISTS(
SELECT
  			*
  		FROM
  			INFORMATION_SCHEMA.TABLES
  		WHERE
  			TABLE_NAME = 'Album'
			)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;

Forespørgslen returnerer ordet 'fundet', hvis tabellen 'Album' findes i vores database.

For nu at tage det lidt længere, kan du bruge denne forespørgsel til at finde ud af, om der er en COLUMN i datakilden, der matcher en slags søgeparametre.

IF EXISTS(
SELECT
  				*
  			FROM
  				INFORMATION_SCHEMA.COLUMNS
  			WHERE
  				COLUMN_NAME = 'Title'
				)
SELECT 'found' AS search_result ELSE SELECT 'not found' AS search_result;

Brug af INFORMATION_SCHEMA visning i din datakilde kan være en pålidelig måde at bestemme, hvad der er i datakilden, mens du bygger dine forespørgsler.

For mere information om Microsoft SQL Server System Information Schema Views, læs venligst mere fra deres supportdokumenter.


  1. Sådan kalder du en Oracle PL/SQL-objekt supermetode

  2. indstil tom adgangskode for PostgreSQL-bruger

  3. Automatisering af Barman med Puppet:it2ndq/barman (del to)

  4. Sådan øges maksimale forbindelser i PostgreSQL