- ce este un dicționar de date?
- cum SQL Server utilizează dicționarul de date
- alte utilizări pentru dicționarul de date
- Vizualizări INFORMATION_SCHEMA
- Exemple folosind vizualizările INFORMATION_SCHEMA
- listarea tuturor tabelelor care includ o coloană specificată
- enumerați toate tabelele dintr-o bază de date
- lista Numărul de tabele din fiecare schemă
- Vizualizări catalog SQL Server
- Exemple folosind vizualizări de Catalog
- listează toate tabelele dintr-o bază de date
- lista Numărul de tabele în fiecare schemă
ce este un dicționar de date?
în SQL Server dicționarul de date este un set de tabele de baze de date utilizate pentru a stoca informații despre definiția unei baze de date. Dicționarul conține informații despre obiectele bazei de date, cum ar fi tabele, indici, coloane, tipuri de date și vizualizări.
dicționarul de date este utilizat de SQL Server pentru a executa interogări și este actualizat automat ori de câte ori obiectele sunt adăugate, eliminate sau modificate în baza de date.
toate exemplele pentru acest articol se bazează pe Microsoft SQL Server Management Studio și baza de date AdventureWorks2012. Puteți începe să utilizați aceste instrumente gratuite folosind ghidul meu Noțiuni de bază folosind SQL Server.
cum SQL Server utilizează dicționarul de date
SQL Server utilizează dicționarul bazei de date pentru a verifica instrucțiunile SQL. Când executați o instrucțiune SQL SGBD (sistem de gestionare a bazei de date) analizează instrucțiunea și apoi determină dacă tabelele și câmpurile la care faceți referire sunt valide. Pentru a face acest lucru rapid se face referire la dicționarul de date.
în plus față de testarea valabilității declarațiilor, SQL Server utilizează dicționarul de date pentru a ajuta la generarea planului de interogare și pentru a face referire la informațiile care definesc structura bazei de date.
dicționarul de date devine un ghid, în sine, pentru SQL Server de a utiliza pentru a accesa datele. Pur și simplu pune, fără dicționarul de date, deși SQL Server ar cunoaște și înțelege limbajul SQL, nu ar ști despre tabelele bazei de date și coloane; prin urmare, nu ar fi în măsură să le interoga.
alte utilizări pentru dicționarul de date
deoarece dicționarul de date conține definiția bazei de date, este o resursă foarte bună pentru tine de a utiliza pentru a obține informații despre baza de date. Lucrul foarte interesant este că dicționarul de date este alcătuit din tabele și vizualizări SQL. Acest lucru înseamnă că puteți obține informații despre DB prin interogări!
dicționarele de date sunt utilizate de designeri și dezvoltatori pentru a înțelege structura bazei de date. Vă puteți gândi la dicționar ca la un document de referință actualizat.
instrumente de proiectare, cum ar fi SQL Server Management Studio afișează informații despre bazele de date prin exploratorul de obiecte folosind dicționarul de date.
tabelele enumerate mai sus nu sunt cunoscute Magic, mai degrabă, obiectul explorer a emis o interogare la dicționarul de date pentru a prelua toate tabelele de utilizator.
dicționarul de date este stocat într-o serie de tabele de sistem. Deși puteți interoga direct aceste tabele, Microsoft își rezervă dreptul de a modifica tabelele de sistem care alcătuiesc dicționarul de date. Din acest motiv, vă recomandă să interogați vizualizările INFORMATION_SCHEMA, spre deosebire de accesarea directă a tabelelor.
deoarece puteți interoga singur dicționarul de date, puteți răspunde la câteva întrebări care altfel ar necesita multă vânătoare și ciugulire prin object explorer. De exemplu, cum puteți găsi cu ușurință toate tabelele și vizualizările folosind coloana BusinessEntityID? Fără dicționarul de date, va trebui să utilizați object explorer și să deschideți fiecare tabel și să vizualizați și să căutați definițiile pentru coloană. Cu toate acestea, folosind dicționarul de date Acest lucru se poate face folosind o interogare simplă.
Vizualizări INFORMATION_SCHEMA
vizualizările INFORMATION_SCHEMA incluse în SQL Server respectă standardul ISO SQL-92. Aceasta înseamnă că alți furnizori de baze de date care respectă standardul ISO vor furniza același set de vizualizări.
iată câteva dintre cele mai utilizate vizualizări și descrierile lor:
- coloane – returnați un rând pentru fiecare coloană pe care utilizatorul curent are acces să o utilizeze în baza de date curentă. Această vizualizare poate fi utilizată pentru a determina tipul de date și tabelul coloana este definită pentru utilizare.
- tabele-returnați un rând pentru fiecare tabel pe care utilizatorii au acces să îl utilizeze în baza de date curentă. Notă, atât tabelele, cât și vizualizările sunt returnate utilizând vizualizarea tabele.
- VIEW_TABLE_USAGE – returnați un rând pentru fiecare tabel care este utilizat într-o vizualizare din Baza de date curentă.
- VIEWS-returnați un rând pentru vizualizările care pot fi accesate folosind permisiunile utilizatorului currents din Baza de date curentă.
Exemple folosind vizualizările INFORMATION_SCHEMA
listarea tuturor tabelelor care includ o coloană specificată
puteți face acest lucru utilizând INFORMATION_SCHEMA.Coloane vezi. De exemplu, următoarele liste toate tabelele și vizualizările conțin coloana BusinessEntityID
SELECT TABLE_NAMEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.COLUMNSWHERE COLUMN_NAME = 'BusinessEntityID'
după cum vă puteți imagina dicționarul de date poate veni la îndemână! Vă puteți imagina având pentru a căuta fiecare definiție de mână pentru a găsi toate apariția unui câmp în baza de date?
enumerați toate tabelele dintr-o bază de date
utilizați INFORMATION_SCHEMA.Tabele vezi pentru a face acest lucru.
SELECT TABLE_NAME, TABLE_TYPEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESORDER BY TABLE_NAME
această interogare returnează atât tabelele de bază, cât și vizualizările.
lista Numărul de tabele din fiecare schemă
în acest exemplu, fiecare schemă și numărul de tabele și vizualizări definite în cadrul acestora sunt listate:
SELECT TABLE_SCHEMA, Count(TABLE_SCHEMA)FROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESGROUP BY TABLE_SCHEMA
Vizualizări catalog SQL Server
vizualizările catalog sunt un alt mod de a vizualiza dicționarul de date. Simt că vizualizările catalogului de obiecte oferă mai multe informații și tind să folosesc aceste vizualizări peste vizualizările INFORMATION_SCHEMA.
unele dintre vizualizările pe care le – am găsit cele mai utile includ:
- obiecte-conțin un rând pentru fiecare obiect, cum ar fi o cheie străină sau o constrângere cheie primară definită în baza de date.
- coloane-conține un rând pentru fiecare coloană a unui obiect, cum ar fi vizualizare sau tabele.
- tabele – returnați un rând pentru fiecare obiect de tabel
Exemple folosind vizualizări de Catalog
următoarele exemple folosesc vizualizările de catalog Microsoft SQL Server pentru a obține aceleași informații utilizați acest lucru mai sus folosind INFORMATION_SCHEMA.
listarea tuturor tabelelor care includ o coloană specificată
pentru a obține numele tabelelor folosind o coloană specifică, ambele sys.tabele și sys.vizualizarea coloanelor trebuie utilizată împreună. Acestea sunt unite prin object_id, care este utilizat pentru a identifica obiecte de bază de date comune, cum ar fi tabele și vizualizări.
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'
listează toate tabelele dintr-o bază de date
sistemul.vizualizarea tabelelor poate fi utilizată pentru a obține numele tuturor tabelelor definite în baza de date. Această vizualizare returnează atât tabelele de bază, cât și vizualizările.
SELECT name, type_descFROM AdventureWorks2012_Data.sys.tablesORDER BY Name
lista Numărul de tabele în fiecare schemă
sistemul.vizualizarea tabele nu include un nume de schemă, deci funcția încorporată NUME_LOCAȚIE este utilizată pentru a o obține.
SELECT SCHEMA_NAME(schema_id), count(name)FROM AdventureWorks2012_Data.sys.tablesGROUP BY SCHEMA_NAME(schema_id)
după cum puteți vedea din exemplu, este un pic mai tehnic decât utilizarea INFORMATION_SCHEMA. Cu toate acestea, spun din experiență că există mult mai multe informații conținute în vizualizările catalogului… dacă aveți o anumită întrebare despre structura unei baze de date, acestea sunt tabelul de lovit.