- Wat is een Data Dictionary?
- hoe SQL Server Het Data Dictionary gebruikt
- andere toepassingen voor het Data Dictionary
- INFORMATIE_SCHEMA-weergaven
- voorbeelden met behulp van INFORMATIE_SCHEMA weergaven
- een lijst van alle tabellen die een bepaalde kolom bevatten
- Toon alle tabellen in een database
- lijst het aantal tabellen in elk Schema
- SQL Server Catalogusweergaven
- voorbeelden met Catalogusweergaven
- Toon alle tabellen in een database
- lijst aantal tabellen in elk Schema
Wat is een Data Dictionary?
In SQL Server de data dictionary is een verzameling databasetabellen die gebruikt worden om informatie over de definitie van een database op te slaan. Het woordenboek bevat informatie over database-objecten zoals tabellen, indexen, kolommen, datatypes en weergaven.
Het data dictionary wordt gebruikt door SQL Server om queries uit te voeren en wordt automatisch bijgewerkt wanneer objecten worden toegevoegd, verwijderd of gewijzigd in de database.
alle voorbeelden voor dit artikel zijn gebaseerd op Microsoft SQL Server Management Studio en de AdventureWorks2012 database. U kunt aan de slag met behulp van deze gratis tools met behulp van mijn gids aan de slag met behulp van SQL Server.
hoe SQL Server Het Data Dictionary gebruikt
SQL Server gebruikt het database dictionary om SQL-statements te verifiëren. Wanneer u een SQL-statement uitvoert, ontleedt het DBMS (Database Management System) het statement en bepaalt vervolgens of de tabellen en Velden waarnaar u verwijst geldig zijn. Om dit snel te doen verwijst het naar het data dictionary.
naast het testen van de validiteit van statements, gebruikt SQL Server Het data dictionary om te helpen bij het genereren van queryplannen en om informatie te verwijzen die de structuur van de database definieert.
Het data dictionary wordt een gids voor SQL Server om toegang te krijgen tot uw gegevens. Simpel gezegd, zonder de data dictionary, hoewel SQL Server de SQL taal zou kennen en begrijpen, zou het niet weten over uw database tabellen en kolommen; daarom zou het niet in staat zijn om ze te bevragen.
andere toepassingen voor het Data Dictionary
aangezien het data dictionary de definitie van de database bevat, is het een zeer goede bron voor u om informatie over de database te verkrijgen. Het echt coole ding is dat de data dictionary is opgebouwd uit SQL tabellen en weergaven. Dit betekent dat u informatie over de DB kunt krijgen door middel van queries!
Datawoordenboeken worden gebruikt door ontwerpers en ontwikkelaars om de structuur van de database te begrijpen. Je kunt het woordenboek zien als een up-to-date referentiedocument.
ontwerpprogramma ‘ s zoals SQL Server Management Studio tonen informatie over de databases via de objectverkenner met behulp van het data dictionary.
de bovenstaande tabellen zijn niet magisch bekend, maar de Object explorer heeft een query naar het data dictionary uitgevoerd om alle gebruikerstabellen op te halen.
Het data dictionary wordt opgeslagen in een reeks systeemtabellen. Hoewel u deze tabellen direct kunt opvragen, behoudt Microsoft zich het recht voor om de systeemtabellen die deel uitmaken van het data dictionary te wijzigen. Daarom raden ze je aan de informatie_schema views te raadplegen in plaats van direct toegang te krijgen tot de tabellen.
omdat u het data dictionary zelf kunt opvragen, kunt u een aantal vragen beantwoorden die anders veel jagen en pikken zouden vereisen via object explorer. Hoe kunt u bijvoorbeeld gemakkelijk alle tabellen en weergaven vinden met behulp van de kolom BusinessEntityID? Zonder de data dictionary, moet je object explorer te gebruiken en open elke tabel en bekijk en kijk door de definities voor de kolom. Echter, met behulp van de data dictionary Dit kan worden gedaan met behulp van een eenvoudige query.
INFORMATIE_SCHEMA-weergaven
De INFORMATIE_SCHEMA-weergaven in SQL Server voldoen aan de SQL-92 ISO-standaard. Dit betekent dat andere databaseverkopers die voldoen aan de ISO-norm dezelfde views zullen leveren.
Hier zijn enkele van de meest gebruikte weergaven en hun beschrijvingen:
- kolommen-geef één rij terug voor elke kolom die de huidige gebruiker in de huidige database kan gebruiken. Deze weergave kan worden gebruikt om het gegevenstype en de tabel te bepalen waarvoor de kolom is gedefinieerd.
- tabellen-geef één rij terug voor elke tabel die gebruikers in de huidige database kunnen gebruiken. Opmerking, zowel tabellen als weergaven worden geretourneerd met behulp van de TABLES view.
- VIEW_TABLE_USAGE-geef één rij terug voor elke tabel die wordt gebruikt in een weergave in de huidige database.
- weergaven-geef één rij terug voor weergaven die toegankelijk zijn met de machtigingen van de huidige database van de huidige gebruiker.
voorbeelden met behulp van INFORMATIE_SCHEMA weergaven
een lijst van alle tabellen die een bepaalde kolom bevatten
U kunt dit doen met behulp van INFORMATIE_SCHEMA.Kolommen bekijken. Bijvoorbeeld de volgende lijsten alle tabellen en weergaven bevatten de kolom Business Entityid
SELECT TABLE_NAMEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.COLUMNSWHERE COLUMN_NAME = 'BusinessEntityID'
zoals je je kunt voorstellen kan het data dictionary van pas komen! Kun je je voorstellen dat je elke definitie met de hand moet doorzoeken om het voorkomen van een veld in de database te vinden?
Toon alle tabellen in een database
gebruik het INFORMATION_SCHEMA.Tabellen view om dit te doen.
SELECT TABLE_NAME, TABLE_TYPEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESORDER BY TABLE_NAME
deze query geeft zowel basistabellen als weergaven Terug.
lijst het aantal tabellen in elk Schema
in dit voorbeeld worden elk schema en het aantal tabellen en weergaven erin weergegeven:
SELECT TABLE_SCHEMA, Count(TABLE_SCHEMA)FROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESGROUP BY TABLE_SCHEMA
SQL Server Catalogusweergaven
De catalogusweergaven zijn een andere manier om het gegevenswoordenboek te bekijken. Ik heb het gevoel dat de objectcatalogus views meer informatie geven en ik heb de neiging om deze views te gebruiken over de INFORMATION_SCHEMA views.
enkele van de meest bruikbare weergaven zijn:
- objecten – bevatten een rij voor elk object, zoals een FOREIGN KEY of primaire key constraint gedefinieerd in de database.
- kolommen-bevatten een rij voor elke kolom van een object, zoals weergave of tabellen.
- tabellen-geef een rij terug voor elk tabelobject
voorbeelden met Catalogusweergaven
De volgende voorbeelden gebruiken de catalogusweergaven van Microsoft SQL Server om dezelfde informatie te verkrijgen die hierboven werd gebruikt met behulp van het INFORMATION_SCHEMA.
een lijst van alle tabellen die een opgegeven kolom bevatten
om de namen van de tabellen te krijgen met behulp van een specifieke kolom, zowel de sys.tafels en systemen.kolomweergave moet samen worden gebruikt. Ze worden samengevoegd via de object_id, die wordt gebruikt om gemeenschappelijke databaseobjecten zoals tabellen en weergaven te identificeren.
SELECT t.name, t.type_descFROM AdventureWorks2012_Data.sys.columns AS cINNER JOIN sys.tables AS t ON c.object_id = t.object_idWHERE c.name = 'BusinessEntityID'
Toon alle tabellen in een database
het systeem.tables view kan worden gebruikt om namen van alle tabellen gedefinieerd in de database te krijgen. Deze weergave geeft zowel basistabellen als weergaven Terug.
SELECT name, type_descFROM AdventureWorks2012_Data.sys.tablesORDER BY Name
lijst aantal tabellen in elk Schema
het sys.tables view bevat geen schemanaam, dus de ingebouwde functie SCHEMA_NAAM wordt gebruikt om het te verkrijgen.
SELECT SCHEMA_NAME(schema_id), count(name)FROM AdventureWorks2012_Data.sys.tablesGROUP BY SCHEMA_NAME(schema_id)
zoals u kunt zien in het voorbeeld, is het iets technischer dan het gebruik van het INFORMATION_SCHEMA. Echter, Ik zeg uit ervaring dat er veel meer informatie in de catalogus weergaven… als u een bepaalde vraag over de structuur van een database, Dit zijn de tabel te raken.