Vad är en SQL Server Data Dictionary?

Vad är en dataordlista?

i SQL Server är dataordlistan en uppsättning databastabeller som används för att lagra information om en databass definition. Ordlistan innehåller information om databasobjekt som tabeller, index, kolumner, datatyper och vyer.

dataordlistan används av SQL Server för att utföra frågor och uppdateras automatiskt när objekt läggs till, tas bort eller ändras i databasen.

alla exempel på den här artikeln är baserade på Microsoft SQL Server Management Studio och AdventureWorks2012-databasen. Du kan komma igång med dessa gratis verktyg med min Guide komma igång med SQL Server.

hur SQL Server använder Dataordboken

SQL Server använder databasordlistan för att verifiera SQL-satser. När du kör en SQL-sats analyserar DBMS (databashanteringssystem) uttalandet och avgör sedan om tabellerna och fälten du refererar till är giltiga. För att göra detta snabbt refererar det till dataordlistan.

förutom att testa giltigheten av uttalanden använder SQL Server dataordlistan för att hjälpa till med generering av frågeplan och för att referera till information som definierar databasens struktur.

dataordboken blir i sig en guidebok för SQL Server att använda för att komma åt dina data. Enkelt uttryckt, utan dataordlistan, även om SQL Server skulle känna till och förstå SQL-språket, skulle det inte veta om dina databastabeller och kolumner; därför skulle det inte kunna fråga dem.

andra användningsområden för Dataordboken

eftersom dataordboken innehåller definitionen av databasen är det en riktigt bra resurs för dig att använda för att få information om databasen. Det riktigt coola är att dataordlistan består av SQL-tabeller och vyer. Detta innebär att du kan få information om DB genom frågor!

dataordböcker används av designers och utvecklare för att förstå databasens struktur. Du kan tänka på ordlistan som ett aktuellt referensdokument.

designverktyg som SQL Server Management Studio visar information om databaserna genom objektutforskaren med hjälp av dataordlistan.

SSMS Object Explorer
SQL Server Management Studio Object Explorer

tabellerna ovan är inte magiskt kända, snarare utfärdade object explorer en fråga till dataordlistan för att hämta alla användartabeller.

dataordlistan lagras i en serie systemtabeller. Även om du direkt kan fråga dessa tabeller förbehåller Microsoft sig rätten att ändra systemtabellerna som utgör dataordlistan. På grund av detta rekommenderar de att du frågar information_schema-vyerna i motsats till att direkt komma åt tabellerna.

eftersom du själv kan fråga dataordlistan kan du svara på några frågor som annars skulle kräva mycket jakt och picka genom object explorer. Till exempel, hur kan du enkelt hitta alla tabeller och vyer med kolumnen BusinessEntityID? Utan dataordlistan måste du använda object explorer och öppna varje tabell och visa och titta igenom definitionerna för kolumnen. Men med hjälp av dataordlistan kan detta göras med en enkel fråga.

Information_schema-vyer

de information_schema-vyer som ingår i SQL Server överensstämmer med SQL-92 ISO-standarden. Detta innebär att andra databasleverantörer som uppfyller ISO-standarden kommer att leverera samma uppsättning visningar.

Här är några av de vanligaste vyerna och deras beskrivningar:

  • kolumner – returnera en rad för varje kolumn som den aktuella användaren har tillgång till i den aktuella databasen. Den här vyn kan användas för att bestämma datatypen och tabellen som kolumnen definieras för användning.
  • tabeller-returnera en rad för varje tabell som användarna har tillgång till i den aktuella databasen. Obs! både tabeller och vyer returneras med tabellvyn.
  • VIEW_TABLE_USAGE-returnera en rad för varje tabell som används i en vy i den aktuella databasen.
  • VIEWS-returnera en rad för vyer som kan nås med hjälp av currents användarens behörigheter från den aktuella databasen.

exempel med hjälp av information_schema visningar

lista alla tabeller som innehåller en angiven kolumn

Du kan göra detta genom att använda INFORMATION_SCHEMA.Kolumner visa. Till exempel följande listor alla tabeller och vyer innehåller kolumnen BusinessEntityID

SELECT TABLE_NAMEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.COLUMNSWHERE COLUMN_NAME = 'BusinessEntityID'

som ni kan föreställa er data ordboken kan komma till hands! Kan du tänka dig att behöva söka varje definition för hand för att hitta alla förekomsten av ett fält i databasen?

lista alla tabeller i en databas

använd INFORMATION_SCHEMA.Tabellvy för att göra detta.

SELECT TABLE_NAME, TABLE_TYPEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESORDER BY TABLE_NAME

denna fråga returnerar både bastabeller och vyer.

lista antalet tabeller i varje Schema

i det här exemplet listas varje schema och antalet tabeller och vyer som definieras inom dem:

SELECT TABLE_SCHEMA, Count(TABLE_SCHEMA)FROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESGROUP BY TABLE_SCHEMA

SQL Server Katalogvisningar

katalogvisningarna är ett annat sätt att visa dataordlistan. Jag känner att objektkatalogvisningarna ger mer information och jag brukar använda dessa vyer över information_schema-vyerna.

några av de vyer som jag har hittat mest användbara inkluderar:

  • objekt – innehåller en rad för varje objekt, till exempel en främmande nyckel eller PRIMÄRNYCKELBEGRÄNSNING definierad i databasen.
  • kolumner-innehåller en rad för varje kolumn i ett objekt som vy eller tabeller.
  • tabeller-returnera en rad för varje tabellobjekt

exempel med Katalogvyer

följande exempel använder katalogvyn Microsoft SQL Server för att få samma information Användning gjorde det ovan med hjälp av INFORMATION_SCHEMA.

lista alla tabeller som innehåller en angiven kolumn

för att få namnen på tabellerna med en specifik kolumn, både sys.tabeller och sys.kolumnvyn måste användas tillsammans. De förenas via object_id, som används för att identifiera vanliga databasobjekt som tabeller och vyer.

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'

lista alla tabeller i en databas

sys.tabellvy kan användas för att få namn på alla tabeller som definieras i databasen. Den här vyn returnerar både bastabeller och vyer.

SELECT name, type_descFROM AdventureWorks2012_Data.sys.tablesORDER BY Name

lista antal tabeller i varje Schema

sys.tabellvyn innehåller inte ett schemanamn, så den inbyggda funktionen SCHEMA_NAME används för att få det.

SELECT SCHEMA_NAME(schema_id), count(name)FROM AdventureWorks2012_Data.sys.tablesGROUP BY SCHEMA_NAME(schema_id)

som du kan se från exemplet är det lite mer tekniskt än att använda INFORMATION_SCHEMA. Men jag säger av erfarenhet att det finns mycket mer information i katalogvyn… om du har en viss fråga om strukturen i en databas, är det här tabellen att träffa.

Related Posts

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *