Download - Curs 4 5 Baze de Date

Transcript
  • * Curs nr.4-5-Interogarea bazei de date-QBEO cerere de interogare Access poate fi utilizat pentru:regsirea i ordonarea datelor dup anumite criterii;efectuarea de calcule;actualizarea bazei de date (prin cereri de tip aciune): creare de noi tabele, adaugare de noi inregistrari, stergere de inregistrari, actualizarea inregistrarilorpregtirea datelor n vederea afirii lor n formulare sau rapoarte; Tipuri de interogriInterogri de selecie -permit extragerea de date din una sau mai multe tabele i/sau cereri (SELECT Query) precum i efectuarea de calcule ;Interogri de tip analiz ncruciat (Crosstab Query) - permit sintetizarea datelor i a rezultatelor obinute din calcule,matriceal, sub forma unei foi de calcul tabelar;Interogri tip aciune - cu funcia de creare de noi tabele i de actualizare a bazei de date:MAKE-TABLE Query;DELETE QUERY;Append Query; Update Query

  • *Interogarea de seleciePentru cererea de selecie se alege tab CREATE->grupul Other-> Query Design din bara de meniuriCaseta Show Table ofer posibilitatea precizrii sursei de date pentru construirea cererii

  • *Fereastra QuerySursa de date pentru o cerere (Query) poate fi reprezentat de:una sau mai multe tabele;una sau mai multe interogri;tabele i interogri.Se vor selecta tabela/tabelele i/sau cererile surs i se va aciona butonul Add pentru a realiza aducerea acestora n fereastra de proiectare a cererii.Fereastra Select Query este mprit n dou zone: Zona superioar, n care se vizualizeaz tabelele/interogrile surs de date precum i relaiile definite ntre acestea; Grila Query Design.

  • *Cererea de selecieQuery Design este structurat astfel:Linia Field: rezervat pentru definirea numelui atributului selectat;Linia Table: destinat precizrii sursei de date;Linia Sort: permite precizarea sensului sortrii pentru atributul din coloana respectiv;Linia Show: permite inhibarea afirii realizrilor cmpului respectiv;Linia Criteria: pentru precizarea criteriilor de selecie, prin introducerea expresiilor Access corespunztoare;Liniile Or: permite precizarea mai multor criterii de selecie n cazul expresiilor Access utiliznd operatorul OR.Cererile de selecie cu surs mai multe tabele utilizeaz implicit operaia de echicompunere, fapt ce conduce la selectarea nregistrrilor ce au corespondent n ambele tabele (interogri de tip Inner Join).Ex. O cerere asupra tabelelor Produse i Continut Comanda, fr a se specifica vreun criteriu, va conduce la afisarea n lista rezultatelor doar a produselor pentru care s-a efectuat cel puin o comand. Dac se dorete realizarea unei interogri de tip Outer Join (folosind operaia de compunere extern) se va efectua dublu click asupra liniei de legtur dintre tabele i, n caseta Join Properties se poate preciza selectarea tuturor nregistrrilor din una dintre tabele, indiferent dac au sau nu corespondent n cealalt tabel.

  • Exemplu de echicompunere

  • Compunere externa la stanga

  • Compunere externa la dreapta

  • *Executarea interogriiO cerere de interogare se execut:

    utiliznd butonul Run din bara de instrumente; utiliznd opiunea Datasheet din meniul View;Pentru realizarea operaiei de compunere pe baza unei relaii de inegalitate (, ) a cmpurilor de legtur dintre tabele se poate folosi limbajul SQL. O cerere ce are ca surs dou tabele ntre care nu exist nici o relaie va avea ca rezultat produsul cartezian al nregistrrilor din cele dou tabele.

  • *Expresii Access O expresie const ntr-un numr de elemente posibile care pot fi utilizate individual sau n combinaii pentru a produce un rezultat. Aceste elemente includ:Identificatori(numele cmpurilor, a controalelor din formulare sau rapoarte, a proprietilor acelor cmpuri sau controale) Operatori; Funcii;Constante valori care nu se schimb cum ar fi un ir text sau numere care nu sunt calculate printr-o expresie. O expresie poate fi utilizat pentru a efectua calcule, pentru a regsi valoarea unui cmp, a furniza criterii pentru o interogare sau pentru a crea cmpuri calculate.

  • Campuri calculate*Sunt cmpuri care returneaz, la executarea interogrii, valoarea expresiilor Access asociate.Creare: Se tasteaz numele campului calculat ntr-o nou coloan din grila Query Design, i apoi se completeaz expresia . Valoare:[cantitate]*[pret]Se pot folosi operatori: aritmetici: +, - , * , / , Mod (returneaz restul mpririi la un ntreg), ^ (ridicare la putere). de atribuire i comparare: =, , =, < >. logici: And, Or, Not. Se pot utiliza pentru construirea expresiilor Access compuse. de concatenare a irurilor de caractere: +, &. de identificare: ! i . (punct). ali operatori specifici Access: LIKE, IN, BETWEEN.

  • Functii AccessAvg(CmpNum) - calculeaz media aritmetic a valorilor de pe campul argumentSum(CmpNum) - calculeaz suma valorilor de pe campul argumentMax(CmpNum) - calculeaz valoarea maxim a valorilor de pe campul argumentMin(CmpNum) - calculeaz valoarea minim a valorilor de pe campul argumentVar(CmpNum) - calculeaz variaia (dispersia) valorilor de pe campul argumentCount(Camp) - calculeaz numrul valorilor nenule.Left(CmpText,n) - extrage primele n caractere (din stnga).Right(CampText,n) - extrage ultimele n caractere (din dreapta).Len(CmpTexi) - calculeaz lungimea expresiei.Mid(CampText;n{;m}) - extrage primele m caractere, ncepnd cu al n-lea. n cazul cnd m lipsete - extrage toate caracterele, ncepnd cu al n-lea.Date() - returneaz data curent.Now() - returneaz data i ora curente.

    *

  • DateAdd(interval; i; CmpDate) - adun/scade la/din CmpDate intervale de tipul data (i poate lua i valori negative). interval poate avea una din urmtoarele valori: "q" - trimestre; ex.: DateAdd("q";7;Date()) - peste 7 trimestre din ziua curent. "m" - luni; ex.: DateAdd("m ";-9;Date()) - cu 9 luni n urm fa de ziua curent. "d" - zile; ex.: DateAdd("d";25;[DataImpr]) - peste 25 de zile de la data DataImpr data mprumutului. "yyyy" - ani; ex.: DateAdd("yyyy";-4;Date()) - cu 4 ani n urm de la data curent. "ww" - sptmni; ex.: DateAdd("ww";2;[DataRestit]) - peste 2 sptmni de la DataRestit -data restituirii "h" - ore; ex.: DateAdd("h"; -27;Now()) - cu 27 de ore n urm.

    *

  • Funcia DateDiffReturneaz un numar intreg care specific numrul de intervale de timp dintre dou date specificate. SintaxaDateDiff(interval, dat1, dat2)Are aceleasi valori pentru interval ca si DateAddExemplu: DATEDIFF("yyyy" , #1/1/2005# , #2/2/2007#) returneaza 2 ani diferentaFunctia Month()-extrage luna dintr-un camp DateFunctia Year()-extrage anul dintr-un camp DateFunctia Datepart-extrage o anumita parte dintr-un camp DateSintaxa:Datepart(interval;[campDate])

    *

  • *Parametrizarea interogrilorn grila de proiectare, pe coloana dorit (ex. Nrcomanda), n linia Criteria, se va preciza ntre paranteze drepte un mesaj ce urmeaz a fi afiat la executarea cererii permind ca utilizatorul s introduc criteriul de selecie dorit (de ex. [Tastati nr. comanda: ]).Parametrii pot fi utilizai nu doar n rndul de criterii, ci i n formulele cmpurilor calculate, dac se dorete introducerea unui termen variabil n expresii.

  • *Interogri de sintetizareAccess permite utilizatorilor realizarea unor cereri prin intermediul crora se pot aplica funcii agregate unor nregistrri grupate dup criterii prestabilite. Prin intermediul acestor query cu rol de sintetizare a datelor se pot construi cu uurin cereri care s returneze totalul, media, minimul sau maximul unor grupuri de tupluri.Pentru a realiza o cerere de sintetizare a datelor se va elabora interogarea de selecie aducndu-se n grila Query Design cmpurile necesare i adugndu-se eventualele cmpuri calculate, dup care se va apsa butonul Totals din bara de instrumente. Ca rezultat al acestei operaii, n grila Query Design, va fi disponibil un nou rnd intitulat Total. n cazul n care mai multe coloane au selectat n linia Total opiunea Group By, gruparea se va face nti dup primul cmp din stnga, apoi dup al doilea, .a.m.d

  • *

  • *

  • *

  • *

  • *Interogri de analiz ncruciatCrosstab Query sunt utile n scopul analizei multidimensionale a datelor permind obinerea unor situaii sintetice asemntoare tabelelor pivot consacrate de procesoarele de tabele.

    Etape:1. n modul Design View se aleg tabelele ce conine datele i se vor selecta cmpurile dorite pentru afiare i eventualele cmpuri pentru care se vor impune restricii.2. Din bara de meniuri, grupul Query Type se va selecta opiunea Crosstab => afiarea liniilor Total i Crosstab.3. Se va specifica modul de agregare a datelor, respectiv funciile totalizatoare n linia Total.4. n linia Crosstab se va opta pentru Row Heading n cazul cmpurile ce vor fi afiate pe liniile tabelului, Column Heading pentru cmpul ce va fi afiat pe vertical, i Value pentru valorile ce vor fi afiate la intersecia liniilor cu coloanele. Este permis existena mai multor cmpuri ordonate pe orizontal (Row Heading), dar a unui singur cmp Column Heading i a unui singur cmp Value.

  • *

  • *

  • *

  • *

  • *Interogri de tip aciuneAu ca rezultat o aciune:Crearea de noi tabele (Make Table Query)Actualizarea datelor (Update Query)Adugarea de noi nregistrri (Append Query)tergerea nregistrrilor (Delete Query).

    Etapele de creare a unei interogri tip aciune sunt similare celor prezentate n cazul interogrilor de selecie, presupunnd ca etap suplimentar specificarea explicit prin intermediul grupului Query Type a tipului de cerere dorit.

  • *Interogri pentru crearea de tabeleMakeTable QueryEtape:1. n modul Design View se alege tabelul care conine datele i se vor selecta cmpurile dorite pentru noul tabel marcate n linia Show a grilei QBE.2. Din grupul Query Type se va selecta opiunea Make Table i se specific n caseta Make Table numele noii tabele (se poate opta pentru crearea noii tabele ntr-o alt baz de date bifnd opiunea Another Database i specificnd numele fiierului).3. Lansarea n execuie a interogrii si confirmarea operatiei de creare a noii tabele.

    Tabela rezultat va moteni doar tipurile de date i dimensiunile cmpurilor din tabelele surs, nu i cheia primar sau eventualele proprieti la nivel de cmp ori tabel.

  • *Interogri pentru actualizarea datelorUpdate Query permite modificarea valorilor datelor din unul sau mai multe cmpuri ale nregistrrilor ce satisfac restriciile impuse de utilizator.

    Etape:1. n modul Design View se alege tabelul care conine datele i se vor selecta cmpurile ce suporta modificari si eventualele campuri de criteriu.2. Din grupul Query Type se va selecta opiunea Update i n grila QBE va fi disponibil linia Update To n care se va putea completa formula de calcul sau valoarea dorit pentru actualizare.3. Lansarea n execuie a interogrii si confirmarea operatiei de actualizare

  • *

  • *Interogri pentru tergerea datelorDelete Query permite eliminarea nregistrrilor ce satisfac restriciile impuse de utilizator.Etape:1. n modul Design View se alege tabelul care conine datele.2. Din grupul Query Type se va selecta opiunea Delete i n grila QBE ce va face disponibil linia Delete completata in mod automat cu Where; se vor specifica in linia Criteria eventualele criterii se stergere.3. Lansarea n execuie a interogrii si confirmarea operatiei de stergere.Aciunea interogrilor de tergere acompaniat de opiunea de tergere n cascad configurat n fereastra Relationships poate conduce la tergerea simultan a datelor din mai multe tabele.

  • *Interogari de tip APPEND QUERYEtape:Se creeaza o interogare de selectie, aducandu-se in linia Field campurile sursa din care vor fi preluate datele si eventualele campuri de criteriu.Din grupul Query Type se selecteaza optiunea APPEND. In caseta APPEND se va specifica numele tabelei in care vor fi adaugate datele. Linia APPEND To ce devine vizibila in grila de proiectare va fi completata in mod automat cu numele campurilor destinatie (atunci cand au acelasi nume cu campurile sursa de date) sau vor fi selectate din listele derulante disponibile pe linia Append To.Se ruleaza interogarea (optiunea RUN) si se confirma operatia de adaugare.

  • *

  • *

  • *