Vizualizare vizualizare sql. Un exemplu de creare a unei vizualizari într-o bază de date MS SQL Server folosind MS Visual Studio. Creați un câmp calculat

Este dat conceptul de reprezentări. Este definit rolul vederilor în problemele de securitate a datelor. Este descris procesul de gestionare a vizualizărilor: crearea, modificarea, aplicarea, ștergerea vizualizărilor.

Definirea unei vederi

Vizualizările, sau vizualizările (VIEW), sunt tabele temporare, derivate (cunoscute și sub denumirea de virtuale) și sunt obiecte de bază de date în care informațiile nu sunt stocate permanent, ca în tabelele de bază, ci se formează dinamic la accesarea acestora. Tabelele obișnuite sunt clasificate ca de bază, adică care conțin date și se află permanent pe un dispozitiv de stocare. O vedere nu poate exista de la sine, ci este definită doar în termeni de unul sau mai multe tabele. Utilizarea vizualizărilor permite proiectantului bazei de date să ofere fiecărui utilizator sau grup de utilizatori cel mai potrivit mod de a lucra cu datele, ceea ce rezolvă problema ușurinței în utilizare și a securității. Conținutul vizualizărilor este preluat din alte tabele prin rularea unei interogări, iar atunci când valorile din tabele se modifică, datele din vizualizare se schimbă automat. O vizualizare este în esență aceeași interogare care este executată de fiecare dată când participați la orice comandă. Rezultatul acestei interogări la fiecare moment în timp devine conținutul vizualizării. Utilizatorul are impresia că lucrează cu o masă reală, existentă.

SGBD-ul are două opțiuni implementarea ideilor. Dacă definiția sa este simplă, atunci sistemul generează fiecare înregistrare de vizualizare după cum este necesar, citind treptat datele sursă din tabelele subiacente. În cazul unei definiții SGBD complexe, trebuie mai întâi să efectuați o operațiune precum materializarea vizualizării, de ex. stocați informațiile care formează vizualizarea într-un tabel temporar. Sistemul continuă apoi să execute comanda utilizatorului și să genereze rezultatele acesteia, după care tabelul temporar este șters.

O vizualizare este o interogare predefinită stocată în baza de date care arată ca masa obisnuitași nu necesită depozitare memorie pe disc. Folosit doar pentru a stoca vizualizarea RAM. Spre deosebire de alte obiecte de bază de date, o vizualizare nu ocupă spațiu pe disc, cu excepția memoriei necesare pentru a stoca definiția vizualizării în sine.

Crearea și modificarea reprezentărilor în standardul lingvistic și implementarea în SM SQL Server se potrivesc și sunt reprezentate de următoarea comandă:

<определение_просмотра>::= ( CREATE| ALTER) VIEW view_name [(nume_coloană [,...n])] AS instrucțiune_SELECT

Să luăm în considerare scopul parametrilor principali.

În mod implicit, numele coloanelor din vizualizare se potrivesc cu numele coloanelor din tabelele sursă. Este necesar un nume explicit de coloană pentru coloanele calculate sau când se unesc mai multe tabele care au coloane cu același nume. Numele coloanelor sunt enumerate separate prin virgule, în conformitate cu ordinea în care apar în vizualizare.

Opțiunea WITH CRYPTION instruiește serverul să cripteze codul SQL al interogării, ceea ce asigură că acesta nu poate fi vizualizat sau utilizat de către persoane neautorizate. Dacă doriți să ascundeți numele de tabel și coloane sursă și algoritmul de îmbinare a datelor atunci când definiți o vizualizare, trebuie să utilizați acest argument.

OPȚIUNEA WITH CHECK indică serverului să verifice modificările efectuate prin vizualizare în raport cu criteriile specificate în instrucțiunea SELECT. Aceasta înseamnă că nu puteți face modificări care ar duce la dispariția rândului din vizualizare. Acest lucru se întâmplă dacă vizualizarea are un filtru orizontal și modificarea datelor face ca rândul să nu se potrivească filtre instalate. Utilizarea argumentului WITH CHECK OPTION asigură că modificările efectuate sunt reflectate în vizualizare. Dacă utilizatorul încearcă să facă modificări care determină excluderea unui rând din vizualizare, dacă este specificat WITH CHECK OPTION, serverul va emite un mesaj de eroare și toate modificările vor fi eliminate.

Exemplul 10.1. Spectacol în prezentarea clienților din Moscova.

Crearea unei vizualizări:

Preluarea datelor dintr-o vizualizare:

SELECTAȚI * DIN vizualizarea1

Vederea este accesată folosind instrucțiunea SELECT ca și cum ar fi un tabel obișnuit.

O vizualizare poate fi folosită într-o comandă la fel ca orice alt tabel. Puteți să construiți o interogare pe o vizualizare, să o modificați (dacă îndeplinește anumite cerințe) și să o conectați cu alte tabele. Conținutul vizualizării nu este fix și este actualizat de fiecare dată când este referit în comandă. Vizualizările vă îmbunătățesc semnificativ capacitățile de gestionare a datelor. În special, aceasta este o modalitate excelentă de a permite accesul la informații dintr-un tabel în timp ce ascundeți unele dintre date.

Deci, vizualizarea limitează pur și simplu accesul utilizatorului la datele din tabelul Client, permițându-i să vadă doar o parte din valori.

Să rulăm comanda:

INSERT INTO view1 VALUES (12, „Petrov”, „Samara”)

Aceasta este o comandă validă în vizualizare și rândul va fi adăugat de view1 la tabelul Client. Cu toate acestea, atunci când informațiile sunt adăugate, rândul va dispărea din vedere deoarece numele orașului este diferit de Moscova. Uneori, această abordare poate deveni o problemă, deoarece... datele sunt deja în tabel, dar utilizatorul nu le vede și nu le poate șterge sau modifica. Pentru a exclude astfel de momente, utilizați WITH CHECK OPTION în definiția vizualizării. Expresia este plasată în definiția vizualizării și toate comenzile de modificare vor fi supuse validării.

Pentru o astfel de reprezentare, inserarea valorii de mai sus va fi respinsă de sistem.

Astfel, o vizualizare poate fi modificată prin comenzi de modificare DML, dar modificarea afectează de fapt tabelul de bază, mai degrabă decât vizualizarea în sine.

Vizualizarea este ștearsă cu comanda:

DROP VIEW view_name [,...n]

Actualizarea datelor în vizualizări

Nu toate vizualizările din SQL pot fi modificate. Vizualizare modificabilă determinat de urmatoarele criterii:

  • se bazează pe un singur tabel de bază;
  • conţine cheia principala aceasta masa;
  • nu conține DISTINCT în definiția sa;
  • nu folosește GROUP BY sau HAVING în definiția sa;
  • dacă este posibil, nu utilizează subinterogări în definiția sa;
  • nu folosește constante sau expresii valorice printre câmpurile de ieșire selectate;
  • Fiecare coloană de tabel care are atributul NOT NULL trebuie inclusă în vizualizare;
  • Instrucțiunea de vizualizare SELECT nu utilizează funcții de agregare (total), îmbinări de tabel, proceduri stocate sau funcții definite de utilizator;
  • se bazează pe o singură interogare, deci UNION nu este permisă.

Dacă o vizualizare îndeplinește aceste condiții, i se pot aplica instrucțiunile INSERT, UPDATE, DELETE. Diferențele dintre și reprezentări, numai pentru citire, nu sunt aleatorii. Scopurile pentru care sunt folosite sunt diferite. CU reprezentări modificabile practic se ocupă cu exact la fel ca cu mesele de bază. De fapt, utilizatorii s-ar putea să nu realizeze nici măcar dacă obiectul pe care îl interoghează este un tabel sau o vizualizare subiacentă, de exemplu. este în primul rând un mijloc de protecție pentru ascunderea nevoilor confidențiale sau irelevante utilizator dat părți ale mesei. Vizualizări în modul<только для чтения>vă permit să primiți și să formatați datele mai rațional. Ei creează un întreg arsenal interogări complexe, care poate fi efectuat și repetat din nou, salvând informațiile primite. Rezultatele acestor interogări pot fi apoi utilizate în alte interogări, evitând predicate complexe și reducând probabilitatea acțiunilor eronate.

CREATE VIEW view2 AS SELECT Client.LastName, Client.Company, Deal.Quantity FROM Client INNER JOIN Deal ON Client.ClientCode=Transaction.ClientCode Exemplul 10.3. O vizualizare nemodificabilă cu date din diferite tabele.

CREATE VIEW view3(Type, Total_remaining) AS SELECT Type, Sum(Remaining) FROM Product GROUP BY Tip Exemplul 10.4. Reprezentare nemodificabilă cu funcții de grupare și rezumat.

De obicei, vizualizările folosesc nume derivate direct din numele câmpurilor din tabelul principal. Cu toate acestea, uneori este necesar să se dea coloanelor denumiri noi, cum ar fi în cazul funcțiilor de rezumat sau al coloanelor calculate.

CREATE VIEW view4(Cod, Nume, Tip, Pret, Taxa) AS SELECT Cod produs, Nume, Tip, Pret, Pret*0,05 FROM Product Exemplul 10.5. Reprezentare modificabilă cu calcule.

Avantajele și dezavantajele vizualizărilor

Mecanismul de prezentare este un instrument puternic DBMS care vă permite să ascundeți structura reală a bazei de date de unii utilizatori prin definirea vizualizărilor. Orice implementarea vederii trebuie să se asigure că starea relației reprezentate se potrivește exact cu starea datelor pe care este definită reprezentarea. De obicei, o vizualizare este evaluată de fiecare dată când este utilizată. Când este creată o vizualizare, informațiile despre aceasta sunt scrise în directorul bazei de date sub propriul nume. Orice modificare a datelor va fi reflectată în mod adecvat în vizualizare - aceasta este diferența față de o interogare de bază de date foarte similară. În același timp, cererea este, parcă,<мгновенную фотографию>date și la modificare ultima cerere la baza de date trebuie repetat. Prezența vizualizărilor în baza de date este necesară pentru a asigura independența logică a datelor. Dacă sistemul asigură independența datelor fizice, atunci modificările în structura fizică a bazei de date nu afectează funcționarea programelor utilizatorului. Independența logică implică faptul că atunci când structura logică a datelor se modifică, impactul asupra programe de utilizator nici nu apare, ceea ce înseamnă că sistemul trebuie să fie capabil să rezolve problemele asociate cu creșterea și restructurarea bazei de date. Evident, odată cu creșterea cantității de date stocate în baza de date, este nevoie de extinderea acesteia prin adăugarea de noi atribute sau relații - aceasta se numește creșterea bazei de date. Restructurarea datelor presupune păstrarea acelorași informații, dar schimbarea aranjamentului acestora, de exemplu prin rearanjarea atributelor în relații. Să presupunem că un anumit raport, dintr-un motiv oarecare, trebuie împărțit în două. Concatenarea relațiilor rezultate în vizualizare recreează relația originală, lăsând utilizatorului impresia că nu a fost făcută nicio restructurare. Pe lângă rezolvarea problemei de restructurare, vizualizarea poate fi utilizată pentru a permite utilizatorilor diferiți să vizualizeze aceleași date în moduri diferite. Cu ajutorul vizualizărilor, utilizatorul are capacitatea de a limita cantitatea de date pentru ușurință în utilizare. În cele din urmă, mecanismul de prezentare vă permite să ascundeți datele de serviciu care nu sunt interesante pentru utilizatori.

Dacă DBMS rulează pe o unitate separată calculator personal Utilizarea vizualizărilor este de obicei destinată doar să simplifice structura interogărilor bazei de date. Cu toate acestea, în cazul unui SGBD de rețea multi-utilizator, vizualizările joacă un rol cheie în determinarea structurii bazei de date și în organizarea securității informațiilor. Să ne uităm la principal avantajele utilizării reprezentărilorîntr-un astfel de mediu.

Independenta datelor

Cu vizualizări, puteți crea o imagine consistentă, imuabilă a structurii bazei de date, care va rămâne stabilă chiar dacă formatul tabelelor sursă se schimbă (de exemplu, adăugarea sau eliminarea coloanelor, modificarea relațiilor, împărțirea tabelelor, restructurarea sau redenumirea lor) . Dacă adăugați sau eliminați coloane dintr-un tabel care nu sunt utilizate într-o vizualizare, nu este necesar să modificați definiția vederii respective. Dacă structura tabelului original este reordonată sau tabelul este împărțit, puteți crea o vizualizare care vă permite să lucrați cu tabelul virtual în formatul anterior. Dacă tabelul original este împărțit, formatul anterior poate fi recreat virtual folosind o vizualizare construită dintr-o îmbinare a tabelelor nou create - desigur, dacă acest lucru se dovedește a fi posibil. Ultima condiție poate fi atinsă prin plasarea cheii primare a tabelului precedent în toate tabelele nou create.

Relevanţă

Modificările aduse datelor din oricare dintre tabelele bazei de date specificate în interogarea definitorie se reflectă imediat în conținutul vizualizării.

Securitate crescută a datelor

Drepturile de acces la date pot fi acordate numai printr-un set limitat de vizualizări, care conține doar subsetul de date de care utilizatorul are nevoie. Această abordare ne permite să înăsprim semnificativ controlul asupra accesului anumitor categorii de utilizatori la informațiile din baza de date.

Reducerea costurilor

Vizualizările vă simplifică designul interogărilor combinând datele din mai multe tabele într-un singur tabel virtual. Ca rezultat, interogările cu mai multe tabele sunt reduse la cereri simple la o prezentare.

Facilități suplimentare

Crearea vizualizărilor poate oferi utilizatorilor o comoditate suplimentară - de exemplu, capacitatea de a lucra doar cu partea de date de care au nevoie cu adevărat. Ca rezultat, puteți obține o simplificare maximă a modelului de date de care va avea nevoie fiecare utilizator final.

Personalizat

Vizualizările sunt mijloace convenabile configurarea unei imagini individuale de bază de date. Ca rezultat, aceleași tabele pot fi prezentate utilizatorilor în forme complet diferite.

Asigurarea integritatii datelor

Dacă clauza WITH CHECK OPTION este specificată în instrucțiunea CREATE VIEW, DBMS se va asigura că nu sunt introduse rânduri în tabelele bazei de date sursă care nu satisfac clauza WHERE din interogarea definitorie. Acest mecanism garantează integritatea datelor din vizualizare.

Practica restricționării accesului unor utilizatori la date prin crearea de vederi specializate are cu siguranță avantaje semnificative față de acordarea acestora acces direct la tabelele bazei de date.

Cu toate acestea, utilizarea vizualizărilor într-un mediu SQL nu este lipsită de dezavantaje.

Opțiuni limitate de actualizare

În unele cazuri, vizualizările nu vă permit să modificați datele pe care le conțin.

Limitări structurale

Structura unei vederi este stabilită în momentul creării ei. Dacă interogarea definiției este de forma SELECT * FROM_, atunci simbolul * se referă la toate coloanele care există în tabelul sursă în momentul creării vizualizării. Dacă ulterior sunt adăugate coloane noi la tabelul original al bazei de date, ele nu vor apărea în această vizualizare până când vizualizarea este abandonată și recreată.

Performanță scăzută

Există o penalizare de performanță asociată cu utilizarea vizualizărilor. În unele cazuri, influența acestui factor este complet nesemnificativă, în timp ce în altele poate provoca probleme semnificative. De exemplu, o vizualizare definită folosind o interogare complexă multi-tabel poate necesita un timp de procesare semnificativ, deoarece rezolvarea acesteia va necesita îmbinări de tabel de fiecare dată când datele sunt accesate. această transmitere. Efectuarea rezoluției vizualizării implică utilizarea unor resurse de calcul suplimentare.

Vizualizările pot fi manipulate în Editorul de interogări prin executarea de scripturi SQL care utilizează comenzile DDL CREATE, ALTER și DROP. Sintaxa de bază pentru crearea unei vizualizări este:

CREATE VIEW view_name AS SELECT_statement

De exemplu, pentru a crea o vizualizare v_Customer care returnează o listă de clienți cu orașul de reședință, în mod programatic, următoarea comandă ar trebui să fie executată în fereastra de interogare.

CREATE VIEW.

SELECTAȚI dbo.Customer.IdCust, dbo.Customer.FName, dbo.Customer.LName, dbo.City.CityName

DE LA dbo.Customer INNER JOIN

dbo.City ON dbo.Customer.IdCity = dbo.City.IdCity

Încercarea de a crea o vizualizare care există deja va genera o eroare. Odată creată vizualizarea, instrucțiunea SELECT poate fi editată cu ușurință folosind comanda ALTER:

ALTER view_name AS modificated_SELECT_statement

Dacă schimbarea unei vizualizări înseamnă și modificarea permisiunilor de acces, este de preferat să o ștergeți și să o creați din nou, deoarece ștergerea unei vizualizări șterge și permisiunile de acces care au fost setate anterior.

Pentru a elimina o vizualizare din baza de date, utilizați comanda DROP:

DROP VIEW view_name

ordonați după clauză și vederi

Vizualizările servesc ca sursă de date pentru alte interogări și nu acceptă sortarea internă. De exemplu, următorul cod preia date din vizualizarea v_Customer și le organizează după câmpurile LName și FName. Clauza ORDER BY nu face parte din vizualizarea v_Customer, dar este aplicată acesteia prin apelarea instrucțiunii SQL:

SELECTează IdCust, FName, LName, CityName

DE LA dbo.v_Customer

ORDENAȚI DUPĂ LName, FName

Executarea vizualizărilor

Spectacolul nu poate fi realizat de unul singur. Instrucțiunea SELECT din care este creată vizualizarea poate fi executată, dar în această formă, din punct de vedere tehnic, Declarație SQL nu este o reprezentare. O vizualizare este utilă doar ca sursă de date într-o interogare.

De aceea, meniul contextual Open View al ManagementStudio generează automat o interogare simplă care preia toate coloanele din vizualizare. Vizualizarea afișează doar rezultate. Cu toate acestea, activarea celorlalte panouri Query Designer vă permite să vedeți interogarea în sine extrasă din vizualizare.

Panoul SQL va afișa vizualizarea în clauza FROM a instrucțiunii SELECT. Aceasta este forma în care utilizatorii se referă la vizualizare:

SELECTAȚI * FROM v_Customer

Misiunea pentru muncă independentă: Creați o vizualizare care returnează o listă de comenzi, indicând numele clientului și numărul de articole din fiecare comandă. Astfel, rezultatul ar trebui să includă următoarele atribute: IdOrd, OrdDate, IdCust, FName, LName, Numărul de tipuri de produse din comandă.

Laboratorul #7: programarea t-sql sintaxa și convențiile t-sql

Reguli pentru generarea identificatorilor

Toate obiectele din SQLServer au nume (identificatori). Exemple de obiecte sunt tabele, vederi, proceduri stocate etc. Identificatorii pot avea până la 128 de caractere, inclusiv litere, _@$# și cifre. Primul caracter trebuie să fie întotdeauna alfabetic. Variabilele și tabelele temporare folosesc scheme speciale de denumire. Numele obiectului nu poate conține spații și nu poate fi același cu cuvântul cheie rezervat SQLServer, indiferent de majuscule utilizate. Prin includerea identificatorilor în paranteza patrata, puteți folosi caractere interzise în numele obiectelor.

Completarea instrucțiunilor

Standardul ANSISQL necesită ca un punct și virgulă să fie plasat la sfârșitul fiecărei instrucțiuni. În același timp, la programarea în T-SQL, punctul și virgulă nu este necesar.

Comentarii

Limbajul T-SQL permite două stiluri de comentarii: ANCI și C. Primul dintre ele începe cu două cratime și se termină la sfârșitul rândului:

Acesta este un comentariu în stil ANSI de o linie

Comentariile în stil ANSI pot fi de asemenea inserate la sfârșitul liniei de instrucțiune:

SELECT CityName – coloane de preluat

FROM City – tabel sursă

WHERE IdCity = 1; -- limita de linie

Editorul SQL poate aplica și elimina comentarii pe toate liniile selectate. Pentru a face acest lucru, selectați comenzile corespunzătoare din meniu Editați | × sau pe bara de instrumente.

Reprezentare

Vizualizările sunt denumite interogări pentru a prelua date (instrucțiunile SELECT pe Limbajul T-SQL) stocate în baza de date. Vizualizările pot fi folosite în interogări la fel ca tabelele, indiferent de complexitatea instrucțiunilor SELECT ale acestora. La fel ca tabelele, vizualizările constau și din câmpuri și înregistrări. Cu toate acestea, spre deosebire de tabele, acestea nu conțin date (cu excepția vizualizărilor materializate (indexate)).

Vizualizările se bazează întotdeauna pe tabele și sunt folosite pentru a prelua datele stocate în acele tabele în vederi specifice. Vizualizările permit o mai mare securitate a datelor și, de asemenea, oferă designerului un mijloc de a personaliza modelul utilizatorului.

Motorul de vizualizare poate fi utilizat din mai multe motive.

  • Acesta oferă un mecanism de securitate puternic și flexibil care vă permite să ascundeți anumite părți ale bazei de date de anumiți utilizatori. Utilizatorul nu va avea cunoștință de existența oricăror atribute sau tupluri care nu sunt prezente în vizualizările disponibile. (Diviziunea orizontală și verticală a mesei).
  • Vă permite să organizați accesul utilizatorilor la date în modul cel mai convenabil pentru aceștia, astfel încât aceleași date în același timp să poată fi vizualizate de utilizatori complet diferiți. căi diferite. (În special, redenumirea atributelor).
  • Vă permite să simplificați operațiuni complexe cu relații de bază. De exemplu, dacă o vedere este definită pe baza conexiunii a două relații, atunci utilizatorul va putea efectua operații simple de selecție unară și de proiecție pe ea, care vor fi convertite automat de SGBD în operațiuni echivalente care realizează conectarea relații de bază. Unul dintre cele mai importante motive Utilizarea vizualizărilor este o dorință de a simplifica interogările cu mai multe tabele. Odată ce definiți o vizualizare care unește mai multe tabele, puteți utiliza interogări simple cu un singur tabel față de acea vizualizare în loc de interogări complexe care efectuează aceeași îmbinare cu mai multe tabele.

Toate aceste exemple demonstrează un anumit grad de independență logică a datelor obținută prin utilizarea vizualizărilor. Cu toate acestea, de fapt, reprezentările vă permit să obțineți mai mult tip important independență logică față de datele asociate cu protejarea utilizatorilor de reorganizările schemei conceptuale. De exemplu, dacă un nou atribut este adăugat unei relații, utilizatorii nici măcar nu vor fi conștienți de existența acestuia până când definițiile vizualizării lor includ acel atribut. Dacă o relație existentă este reorganizată sau împărțită în părți, vizualizarea care o folosește poate fi redefinită, astfel încât utilizatorii să poată continua să lucreze cu datele în același format.

Crearea vizualizărilor în Management Studio

În SQL Server Management Studio, vizualizările pot fi create, editate, executate și inserate în alte interogări. Deoarece o vizualizare nu este altceva decât o instrucțiune SELECT stocată, crearea ei începe cu proiectarea acelei instrucțiuni. Instrucțiunea SELECT, dacă este validă, poate fi tăiată și lipită într-o vizualizare din aproape orice instrument. În Management Studio, vizualizările sunt listate sub propriul nod în fiecare bază de date.

Comanda „Creare View” în meniul contextual vă va permite să lansați designerul de interogări în modul de creare a vizualizării.

Generatorul de interogări de la Management Studio este capabil să afișeze simultan mai multe panouri selectate din Bara de instrumente.

Codul SQL real este afișat și editat în panoul Cod SQL. Coloanele pot fi adăugate la vizualizare în diagramă, grilă și panouri de cod SQL. Funcția de adăugare a tabelelor este disponibilă în meniul contextual, precum și în bara de instrumente. Aici puteți adăuga tabele, alte vizualizări, sinonime și funcțiile tabelului.

Tabelele și alte vizualizări pot fi adăugate trăgându-le pe panoul diagramei din fereastra Object Browser sau utilizând comanda Adăugare tabel din bara de instrumente sau meniul contextual.

Caracteristica Adăugare tabele derivate poate adăuga o subinterogare la clauza FROM a unei vizualizări ca sursă de date. Codul SQL pentru această subinterogare poate fi introdus manual în panoul SQL. Butonul „Verifică”. Sintaxa SQL» vă permite să verificați sintaxa instrucțiunilor SQL introduse. Cu toate acestea, nu verifică numele tabelelor, coloanelor și vizualizărilor din instrucțiunea SELECT.

Odată ce o vizualizare a fost creată, o puteți edita în Management Studio evidențiind titlul și alegând Proiect din meniul contextual.

Pentru a testa instrucțiunea SELECT a unei vizualizări în Query Designer, faceți clic pe butonul Run SQL Code sau apăsați o tastă.

Meniul contextual al vizualizării conține, de asemenea, comenzi pentru a o controla indexarea textului integralși redenumirea acesteia. Proprietățile aplicației conțin setări avansate și permisiuni de securitate. Pentru a șterge o vizualizare din baza de date, pur și simplu selectați-o, selectați comanda „Ștergere” din meniul contextual sau apăsați tasta cu același nume.

Crearea vizualizărilor utilizând codSQL

Vizualizările pot fi manipulate în Editorul de interogări prin executarea de scripturi SQL care utilizează comenzile DDL CREATE, ALTER și DROP. Sintaxa de bază pentru crearea unei vizualizări este:

CREATE VIEW view_name

instruction_SELECT

De exemplu, pentru a crea în mod programatic o vizualizare v_Customer care returnează o listă de clienți și orașul lor de reședință, ați rula următoarea comandă în fereastra de interogare.

CREATE VIEW.

SELECTAȚI dbo.Customer.IdCust, dbo.Customer.FName, dbo.Customer.LName, dbo.City.CityName

DE LA dbo.Customer INNER JOIN

dbo.City ON dbo.Customer.IdCity = dbo.City.IdCity

Încercarea de a crea o vizualizare care există deja va genera o eroare. Odată creată vizualizarea, instrucțiunea SELECT poate fi editată cu ușurință folosind comanda ALTER:

ALTER view_name

declarație_SELECT_modificată

Dacă schimbarea unei vizualizări înseamnă și modificarea permisiunilor de acces, este de preferat să o ștergeți și să o creați din nou, deoarece ștergerea unei vizualizări șterge și permisiunile de acces care au fost setate anterior.

Pentru a elimina o vizualizare din baza de date, utilizați comanda DROP:

DROP VIEW view_name

OferiORDIN DEși prezentări

Vizualizările servesc ca sursă de date pentru alte interogări și nu acceptă sortarea internă. De exemplu, următorul cod preia date din vizualizarea v_Customer și le organizează după câmpurile LName și FName. Clauza ORDER BY nu face parte din vizualizarea v_Customer, dar este aplicată acesteia prin apelarea instrucțiunii SQL:

SELECTează IdCust, FName, LName, CityName

DE LA dbo.v_Customer

ORDENAȚI DUPĂ LName, FName

Executarea vizualizărilor

Spectacolul nu poate fi realizat de unul singur. Instrucțiunea SELECT din care este creată vizualizarea poate fi executată, totuși, în această formă, cu latura tehnica, instrucțiunea SQL nu este o reprezentare. O vizualizare este utilă doar ca sursă de date într-o interogare.

De aceea, meniul contextual Open View al Management Studio generează automat o interogare simplă care preia toate coloanele din vizualizare. Vizualizarea afișează doar rezultate. Cu toate acestea, activarea celorlalte panouri Query Designer vă permite să vedeți interogarea în sine extrasă din vizualizare.

Panoul SQL va afișa vizualizarea în clauza FROM a instrucțiunii SELECT. Aceasta este forma în care utilizatorii se referă la vizualizare:

SELECTAȚI *

DE LA v_Client

Misiunea pentru muncă independentă: Creați o vizualizare care returnează o listă de comenzi, indicând numele clientului și numărul de articole din fiecare comandă. Astfel, rezultatul ar trebui să includă următoarele atribute: IdOrd, OrdDate, IdCust, FName, LName, Numărul de tipuri de produse din comandă.

Un exemplu de creare a unei vizualizari într-o bază de date MS SQL Server folosind MS Visual Studio. Creați un câmp calculat

Acest subiect descrie procesul detaliat pas cu pas de creare a unei vizualizări folosind exemplul bazei de date Education.mdf, care se află în fișier local. Baza de date este proiectată să funcționeze sub control DBMS Microsoft SQL Server.

Folosind acest exemplu, poți învăța să creezi proprii reprezentare date care se obțin din tabele. Pe baza vizualizărilor, puteți crea rapoarte pentru a afișa rezultatele programului într-o formă convenabilă (de hârtie).

Sarcina

Să fie dată o bază de date, care se află în fișierul Education.mdf. Baza de date conține două tabele înrudite: Student și Session.

Tabelele sunt legate între ele prin câmpul ID_Book.

Folosind mijloace Microsoft Visual Studio creează o vizualizare numită View1 care va avea următoarea structură:

Numele domeniului Masa
Num_Carte Student
Nume Student
Matematică Sesiune
Informatica Sesiune
Filozofie Sesiune
In medie Câmp calculat

Execuție (instrucțiuni pas cu pas)

1. Descărcați Microsoft Visual Studio
2. Conectați baza de date Education.mdf la lista de baze de date din utilitarul Server Explorer

Pentru a nu pierde timpul cu dezvoltarea și conectarea tabelelor bazei de date Education.mdf, puteți descărca baza de date gata făcută. După descărcarea și salvarea într-un anumit folder, baza de date trebuie conectată la lista de baze de date din utilitarul Server Explorer.

Conectarea unei baze de date este implementată într-unul din mai multe moduri standard:

  • selectând comanda „Conectare la baza de date...” din meniul Instrumente;
  • selectând butonul (comandă) „Conectează-te la baza de date...” din utilitarul Server Explorer.

Ca urmare, se va deschide o fereastră de expert în care trebuie să configurați baza de date.

Orez. 1. Metode de adăugare/conectare a unei baze de date

Procesul de configurare a bazei de date se realizează secvenţial, cu perfecţiuni. Se deschid ferestrele în care sunt specificate setările corespunzătoare.

O descriere detaliată a modului de conectare a unei baze de date Microsoft SQL Server în Microsoft Visual Studio este dată în subiect:

După conectare, fereastra utilitarului Server Explorer va arăta ca în figura 2.

Orez. 2. Utilitar Server Explorer cu baza de date Education.mdf conectată

3. Adăugarea unei noi vizualizări (Vizualizare). Adăugați o comandă Vizualizare nouă

Sistemul Microsoft Visual Studio vă permite să creați reprezentări de date (vizualizări). Vizualizările în sine afișează numai date din tabel într-un format ușor de citit. Nu sunt date direct din tabel (Tabele). În cazul nostru, trebuie să creăm o vizualizare în conformitate cu condiția sarcinii.

Vizualizarea este creată folosind comanda „Add New View”, care este apelată din meniul contextual (Figura 3).

Orez. 3. Comanda „Adăugați o vizualizare nouă...”

Ca urmare, se va deschide fereastra „Adăugați tabel”, în care trebuie să selectați tabelele ale căror date vor fi utilizate în vizualizare (Figura 4).

Orez. 4. Selectarea tabelelor care vor fi utilizate în interogare

Pentru cazul nostru, trebuie să selectăm ambele tabele.

Ca rezultat, fereastra Microsoft Visual Studio va arăta așa cum se arată în Figura 5.

Orez. 5. Fereastra Microsoft Visual Studio după crearea vizualizării

În tabele, trebuie să selectați câmpurile care vor fi utilizate în vizualizare. Ordinea în care sunt selectate câmpurile poate corespunde cu afișarea lor în interogare, în conformitate cu condițiile sarcinii. Aceasta înseamnă că mai întâi sunt selectate câmpurile din tabelul Student (NumBook, Nume), iar apoi sunt selectate câmpurile din tabelul Session (Matematică, Informatică, Filosofie).

Pentru cazul nostru, alegerea câmpurilor este prezentată în Figura 6.

Orez. 6. Selectarea câmpurilor pentru prezentare

După cum se poate vedea din Figura 6, în partea de jos a ferestrei este afișată o vedere Limbajul SQL, generat de sistem

SELECTAȚI dbo.Student.Num_Book, dbo.Student.Name, dbo.Session.Mathematics, dbo.Session.Informatics, dbo.Session.Philosophy DIN
4. Adăugați un câmp calculat Media

Pentru a crea un câmp calculat Media , trebuie să modificați textul interogării SQL pentru vizualizarea din partea de jos (vezi Figura 6, Partea de jos). De exemplu:

SELECTAȚI dbo.Student.Num_Book, dbo.Student.Name, dbo.Session.Mathematics, dbo.Session.Informatics, dbo.Session.Philosophy, (dbo.Session.Mathematics + dbo.Session.Informatics + dbo.Session.Philosophy)/ 3.0 AS Medie DIN dbo.Session INNER JOIN dbo.Student ON dbo.Session.ID_Book = dbo.Student.ID_Book

Se adaugă câmpul calculat Media, care este media aritmetică (Figura 7).

Orez. 7. Adăugarea unui câmp mediu calculat

5. Rulați o interogare SQL pentru a afișa vizualizarea

În partea de jos a ferestrei, Figura 7 arată rezultatul executării unei interogări SQL pentru vizualizare. Interogarea este executată apelând comanda „Execute SQL” din meniul „Query Designer” sau făcând clic pe butonul ‘!’ , așa cum se arată în Figura 8).

Orez. 8. Apelați pentru a rula o interogare SQL

6. Salvarea vizualizării

După apelarea comenzii

Fișier->Salvați tot

Se va deschide fereastra „Alege nume” (Figura 9), în care trebuie să specificați numele vizualizării nou create. În cazul nostru, putem lăsa numele ( View1 ), care este sugerat de sistem în mod implicit.

Orez. 9. Fereastra pentru setarea unui nume pentru vizualizare

7. Afișați vizualizarea în fereastra Server Explorer

După salvarea vizualizării, fereastra utilitar Server Explorer va arăta așa cum se arată în Figura 10. După cum se poate vedea din figură, View1 este afișată în fereastra Server Explorer.

Articolele anterioare au discutat instrucțiunile DDL și DML în legătură cu tabelele de bază. Datele tabelului de bază sunt stocate pe disc. Spre deosebire de tabelele de bază, vizualizările implicite nu există fizic, de exemplu. conținutul lor nu este salvat pe disc. Acest lucru nu se aplică așa-numitelor vizualizări indexate, care sunt discutate mai târziu. Vizualizări sunt obiecte de bază de date care sunt întotdeauna create din unul sau mai multe tabele de bază (sau alte vizualizări) folosind informații despre metadate. Aceste informații (inclusiv numele vizualizării și modul în care sunt preluate rândurile din tabelele subiacente) este tot ceea ce este stocat fizic pentru vizualizare. Din acest motiv, vizualizările sunt numite și tabele virtuale.

Crearea unei vizualizări

O vedere este creată printr-o declarație CREATE VIEW, a cărui sintaxă este următoarea:

CREATE VIEW view_name [(column_list)] AS select_statement Convenții de sintaxă

Instrucțiunea CREATE VIEW trebuie să fie singura instrucțiune din pachet. (Aceasta înseamnă că această instrucțiune ar trebui să fie separată de alte instrucțiuni din grup prin utilizarea unei instrucțiuni GO.)

Parametrul view_name specifică numele vizualizării care urmează să fie definită, iar parametrul column_list specifică o listă de nume care urmează să fie utilizate ca nume de coloană a vizualizării. Dacă acest parametru opțional este omis, se folosesc numele coloanelor din tabelele din care este creată vizualizarea. Parametrul select_statement specifică o instrucțiune SELECT care preia rânduri și coloane din tabele (sau din alte vizualizări). CU opțiunea de criptare specifică criptarea instrucțiunii SELECT, crescând astfel nivelul de securitate al sistemului de baze de date.

Clauza SCHEMABINDING leagă vizualizarea la schema tabelului sub care este creată. Când se specifică această clauză, numele obiectelor bazei de date din instrucțiunea SELECT trebuie să fie în două părți, de exemplu. sub forma schema.db_object, unde schema este proprietarul și db_object poate fi un tabel, o vizualizare sau o funcție definită de utilizator.

Orice încercare de a modifica structura vederilor sau tabelelor la care face referire o vedere creată în acest mod va eșua. Înainte ca astfel de tabele sau vederi să poată fi modificate (cu o instrucțiune ALTER) sau șterse (cu o instrucțiune DROP), vizualizarea trebuie ștearsă sau clauza SCHEMABINDING trebuie eliminată din ea.

Când creați o vizualizare pe care o specificați parametrul VIEW_METADATA, toate coloanele sale pot fi actualizate (cu excepția coloanelor cu un tip de date cu marca temporală) dacă vizualizarea are declanșatoare INSERT sau UPDATE INSTEAD OF.

O instrucțiune SELECT dintr-o vizualizare nu poate conține o clauză ORDER BY sau un parametru INTO. În plus, interogările nu pot fi executate pe tabele temporare.

Vizualizările pot fi utilizate în diferite scopuri:

    Pentru a restricționa utilizarea anumitor coloane și/sau rânduri de tabele. Astfel, vizualizările pot fi folosite pentru a controla accesul la o anumită parte a unuia sau mai multor tabele.

    Pentru a ascunde detaliile interogărilor complexe. Dacă aplicația dumneavoastră de bază de date necesită interogări cu operațiuni complexe de îmbinare, crearea de vizualizări adecvate poate simplifica acele interogări.

    Pentru a limita valorile care sunt inserate sau actualizate la un anumit interval.

Exemplul de mai jos arată cum să creați o vizualizare:

Interogarea din acest exemplu selectează rânduri din tabelul Works_on care îndeplinesc condiția Job="Consultant". View_Consultant este definit de rândurile și coloanele returnate de această interogare. Figura de mai jos arată tabelul Works_on cu rândurile selectate în vizualizarea view_Consultant evidențiate cu roșu:

Interogarea din acest exemplu specifică o selecție de rânduri, de ex. creează un subset orizontal al tabelului de bază Works_on. De asemenea, este posibil să creați o vizualizare cu restricții asupra coloanelor și rândurilor pe care le include. Exemplul de mai jos arată cum să creați o astfel de vizualizare:

UTILIZAȚI SampleDb; GO CREATE VIEW view_WithoutBudget AS SELECT Number, ProjectName FROM Project;

Interogarea din acest exemplu selectează toate coloanele din tabelul Proiect, cu excepția coloanei Buget, pentru a fi incluse în vizualizarea view_WithoutBudget.

După cum am menționat mai devreme, în formatul general al instrucțiunii CREATE VIEW, nu este necesar să specificați numele coloanelor de vizualizare. Cu toate acestea, pe de altă parte, în următoarele două cazuri, este obligatoriu să specificați în mod explicit numele coloanelor:

    dacă coloana de vizualizare este creată dintr-o expresie sau o funcție de agregare;

    dacă două sau mai multe coloane de vizualizare au același nume în tabelul de bază.

Exemplul de mai jos arată cum să creați o vizualizare în care numele coloanelor sunt specificate în mod explicit:

UTILIZAȚI SampleDb; GO CREATE VIEW view_Count(projectNumber, countProject) AS SELECT ProjectNumber, COUNT(*) FROM Works_on GROUP BY ProjectNumber;

Aici numele de coloane view_Count trebuie specificate în mod explicit deoarece instrucțiunea SELECT conține functie de agregat count(*), care necesită ca toate coloanele vizualizării să fie numite.

Nu trebuie să enumerați în mod explicit coloanele din instrucțiunea CREATE VIEW dacă aplicați antete de coloane, așa cum se arată în exemplul de mai jos:

UTILIZAȚI SampleDb; GO CREATE VIEW view_Count1 AS SELECT ProjectNumber, COUNT(*) countProject FROM Works_on GROUP BY ProjectNumber;

O vizualizare poate fi creată dintr-o altă vizualizare, așa cum se arată în exemplu:

Vizualizarea view_project_p2 din exemplul de mai jos este creată din vizualizarea view_Consultant. Toate interogările care utilizează vizualizarea view_project_p2 sunt convertite în interogări echivalente față de tabelul Works_on subiacent.

Vizualizările pot fi create și folosind Managementul Mediului Studio. Pentru a face acest lucru, selectați baza de date în Object Explorer în care doriți să creați o vizualizare, faceți clic în ea Click dreapta mouse-ul peste nodul Vizualizări și selectați Vizualizare nouă din meniul contextual care se deschide. Se va deschide Editorul de vizualizare, permițându-vă să faceți următoarele:

    selectați tabele de bază și rânduri din acele tabele pentru a crea vizualizarea;

    Dați un nume vizualizării și definiți condiții în clauza WHERE a interogării corespunzătoare.

Editarea sau ștergerea vizualizărilor

Pentru a modifica definiția unei vizualizări în Transact-SQL, utilizați instrucțiunea ALTER VIEW. Sintaxa acestei instrucțiuni este similară cu sintaxa instrucțiunii CREATE VIEW utilizată pentru a crea o vizualizare.

Utilizarea instrucțiunii ALTER VIEW evită reatribuirea permisele existente pentru prezentare. În plus, modificarea unei vizualizări folosind această instrucțiune nu afectează obiectele bazei de date care depind de acea vizualizare. Dacă modificați o vizualizare ștergând-o mai întâi (instrucțiunea DROP VIEW) și apoi creând o nouă vizualizare cu proprietățile necesare (instrucțiunea CREATE VIEW), atunci toate obiectele bazei de date care fac referire la această vizualizare nu vor funcționa conform așteptărilor, deoarece macar, perioada de timp dintre ștergerea unei vizualizări și recrearea acesteia.

Utilizarea instrucțiunii ALTER VIEW este prezentată în exemplul de mai jos:

În acest exemplu, instrucțiunea ALTER VIEW extinde instrucțiunea SELECT în view_WithoutBudget cu o nouă condiție în clauza WHERE.

Instrucțiunea DROP VIEW elimină definiția vederii specificate în ea din tabelele de sistem. Aplicarea acestei instrucțiuni este prezentată în exemplul de mai jos:

UTILIZAȚI SampleDb; GO DROP VIEW view_Count;

Când ștergeți o vizualizare cu instrucțiunea DROP VIEW, toate celelalte vizualizări bazate pe cea ștearsă sunt, de asemenea, șterse, așa cum se arată în exemplul de mai jos:

UTILIZAȚI SampleDb; GO DROP VIEW view_Consultant;

Aici, instrucțiunea DROP VIEW elimină în mod explicit view_Consultant, în timp ce elimină implicit view_project_p2, care se bazează pe view_Consultant. Acum, încercarea de a interoga view_project_p2 va returna un mesaj de eroare.

Când aruncați un tabel de bază, vizualizările care se bazează pe acesta nu sunt șterse automat. Aceasta înseamnă că toate vizualizările pentru tabelul eliminat trebuie să fie eliminate în mod explicit folosind instrucțiunea DROP VIEW. Pe de altă parte, vizualizările tabelului șters pot fi folosite din nou pe masa noua, având la fel structura logica, precum și la distanță.