sql >> Database >  >> RDS >> Sqlserver

SQL Server INFORMATION_SCHEMA Weergaven | Kijken of er een tafel bestaat

Wat is het probleem?

Bij het schrijven van query's voor een database waar u misschien nieuw bent, of een database die vaak verandert, wilt u misschien een snelle controle uitvoeren om alle tabellen in een specifieke database of de kolommen in de database te vinden, of om te zoeken naar een tabel of kolom bestaat.

Waarom is dit een probleem?

Inzicht in het schema en welke tabellen erin staan, helpt om efficiënte SQL te schrijven en helpt voorkomen dat query's meerdere keren worden uitgevoerd om te zien of de schemanaam of kolomnaam correct is.

Deze tutorial helpt bij het oplossen van deze problemen.

Het informatieschema gebruiken

Het opvragen van de metadata op een gegevensbron is de gemakkelijkste manier om de samenstelling van een tabel te bepalen als je er nog geen begrip van hebt. Microsoft SQL Server biedt een informatieschemaweergave als een van de verschillende methoden om deze metagegevens te verkrijgen. Zoals hun ondersteuningsdocumentatie stelt:"Informatieschemaweergaven bieden een interne, systeemtabelonafhankelijke weergave van de SQL Server-metagegevens. Informatieschemaweergaven zorgen ervoor dat applicaties correct werken, hoewel er belangrijke wijzigingen zijn aangebracht in de onderliggende systeemtabellen."

We zullen een aantal weergaven in het informatieschema gebruiken om query's uit te voeren die helpen bij het bepalen van de samenstelling van tabellen in de gegevensbron.

Om de TABLES weer te geven en COLUMNS in de database of zoek TABLES en COLUMNS .

Deze eerste zoekopdracht retourneert alle tabellen in de database die u opvraagt.

SELECT
  	TABLE_NAME
FROM
  	INFORMATION_SCHEMA.TABLES

De tweede query retourneert een lijst met alle kolommen en tabellen in de database die u opvraagt.

SELECT
  	TABLE_NAME,
COLUMN_NAME
FROM
  	INFORMATION_SCHEMA.COLUMNS

Of u kunt ook alleen de COLUMNS . opvragen uit een specifieke tabel en retourneer de kolomnamen van de specifieke tabel 'Album' in onze database.

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

Met deze volgende vraag kun je erachter komen of er al dan niet een TABLE . is in de gegevensbron die overeenkomt met een soort zoekparameters.

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

De zoekopdracht retourneert het woord 'gevonden' als de tabel 'Album' in onze database bestaat.

Om nu een beetje verder te gaan, kunt u deze zoekopdracht gebruiken om erachter te komen of er al dan niet een COLUMN is in de gegevensbron die overeenkomt met een soort zoekparameters.

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

Gebruik maken van de INFORMATION_SCHEMA weergave in uw gegevensbron kan een betrouwbare manier zijn om te bepalen wat er in de gegevensbron staat terwijl u uw zoekopdrachten maakt.

Voor meer informatie over de Microsoft SQL Server System Information Schema Views, lees meer in hun ondersteuningsdocumenten.


  1. Hoe te repareren "Ongeldige objectnaam 'OPENJSON'." in SQL Server

  2. SQL-weergaven

  3. Het gemakkelijker maken om een ​​PostgreSQL-productiedatabase te beheren

  4. Sql:verschil tussen twee datums