SGBD Access 2016 Flashcards

SGBD Access 2016: Interogarea bazelor de date

Interogări (Query)

O interogare în Access este un obiect care permite vizualizarea informațiilor obținute prin selectarea și prelucrarea datelor din una sau mai multe tabele (sau interogări).

Utilizări ale interogărilor Access:

  • Regăsirea și ordonarea datelor conform anumitor criterii de selecție.
  • Efectuarea de calcule.
  • Actualizarea bazei de date (interogări de acțiune).
  • Pregătirea datelor pentru afișarea lor prin formulare și/sau rapoarte.

Rezultatul unei interogări:

Se prezintă sub forma unei foi de răspuns dinamice. Această foaie nu are o existență proprie după închiderea interogării. Dacă interogarea este salvată, definiția cererii este salvată sub forma unui șir SQL.

Tipuri de interogări:

Interogările pot fi de mai multe tipuri, incluzând:

  • Selecție
  • Calcule
  • Acțiune

Crearea unei interogări:

Interogarea bazei de date se poate realiza fie utilizând o grilă de proiectare (QBE - Query By Example), fie cu ajutorul limbajului SQL.

Crearea unei interogări de selecție utilizând Expertul (Query Wizard):

  1. Meniul Create + butonul Query Wizard
  2. În fereastra New Query sunt afișate mai multe tipuri de asistenți pentru generarea interogărilor:
    • Asistentul pentru cereri simple de interogare (Simple Query Wizard)
    • Asistentul pentru interogări încrucișate (Crosstab Query Wizard)
    • Asistentul pentru căutarea înregistrărilor duplicat (Find Duplicates Query Wizard)
    • Asistentul pentru căutarea înregistrărilor care nu au corespondent în cele două tabele sursă (Find Unmatched Query Wizard)

Crearea unei interogări în modul Proiectare (Design View):

  1. Se alege meniul Create + butonul Query Design.
  2. Se alege sursa de date în fereastra Show Table (tabelă, interogare sau ambele tipuri de obiecte).
  3. Se selectează tabela sau tabelele sursă participante la interogare, apăsând butonul Add pentru inserare.
  4. Se închide fereastra Show Table prin Close.

Fereastra Select Query conține:

  • Zona superioară: vizualizează sursele de date, precum și relațiile dintre acestea (tehnica Drag&Drop).
  • Zona inferioară (grila Query Design): conține atributele interogării.

Grila Query Design

Grila Query Design conține următoarele elemente:

  • Field: precizează numele atributului selectat (din lista derulantă sau adus prin Drag&Drop).
  • Table: precizează tabela participantă la interogare (sursa de date).
  • Sort: precizează sensul sortării pentru atributul în cauză.
  • Show: permite sau inhibă afișarea câmpului.
  • Criteria: permite precizarea criteriilor pe care se bazează interogarea.
  • Or: operator logic de selecție.

Exemplu de interogare:

„Să se afișeze lista facturilor emise pe anul 2001, către clienții din București sau Ploiești, cărora li s-au livrat cărți de programare”

Executarea și Modificarea Interogărilor:

  • Executarea interogării: Pentru a vizualiza rezultatul interogării, se acționează butonul Run sau butonul View.
  • Modificarea unei interogări: Se pot insera coloane noi sau se pot șterge coloane existente.

Criterii (Criteria)

Operatori:

  • Aritmetici: +, -, *, /, Mod, ^
  • De atribuire și comparare: =, >,
  • Logici: and, or, not
  • De concatenare a șirurilor de caractere: \&
  • Alți operatori: IS NULL, IS NOT NULL, LIKE ”*escu”, IN (“a”, “b”, “c”), BETWEEN 10 and 20

Constante:

  • Numerice (125, 45.36)
  • Text (“Popescu”)
  • Dată calendaristică (#12/31/2002#) - Atenție! Criteriile care implică specificarea unei constante calendaristice trebuie incluse între simbolurile #.

Ce se poate include în linia Criteria?

  • Operatori
  • Constante
  • Identificatori
  • Funcții

Identificatori:

Forms![Selectie carti]![Denumire carte]

În cazul în care denumirea preluată în interogare trebuie să fie denumirea preluată dintr-un câmp al unui formular, se utilizează identificatorul de câmp din sintaxa de mai sus.

Funcții:

  • Iif(Condiție;Acțiune_If_True;Acțiune_If_False)
  • Date(), Now(), Month(), Year(), Day()
  • DateAdd(“șablon_dată”;număr;câmp_dată/”constantă_dată”)
  • DateDiff(“șablon_dată”;dată_1;dată_2;prima_zi)
  • WeekDay(câmp_data;prima_zi)
  • DateSerial(an;lună;zi)
  • DateValue(dată)
  • DatePart(“șablon_dată”;dată)
  • Format(dată;”șablon_dată”)
    • yyyy - An
    • q - Trimestru
    • m - Luna
    • y - Nr.zi dintr-un an
    • d - Zi
    • w - Zi din săptămână
    • ww - Nr. săptămână
  • Sum(), Avg(), Max(), Min(), Count(), Abs(), Int(), Round(camp, zec), DMax(câmp; tabela[;criteriu]), DMin, DCount, DAvg
  • Len(), Trim(), Val(), Str()
  • Left(câmp,nrcar), Right(câmp,nrcar), Mid(câmp;start;dimensiune)
  • IsNumeric(), IsNull(), IsBlank()
  • First(), Last()

Funcții Access

  • Avg(CâmpNum) - calculează media aritmetică a valorilor de pe câmpul argument
  • Sum(CâmpNum) - calculează suma valorilor de pe câmpul argument
  • Max(CâmpNum) - calculează valoarea maximă a valorilor de pe câmpul argument
  • Min(CâmpNum) - calculează valoarea minimă a valorilor de pe câmpul argument
  • Var(CâmpNum) - calculează variația (dispersia) valorilor de pe câmpul argument
  • Count(Camp) - calculează numărul valorilor nenule.
  • Left(CâmpText,n) - extrage primele n caractere (din stânga).
  • Right(CampText,n) - extrage ultimele n caractere (din dreapta).
  • Len(CâmpTexi) - calculează lungimea expresiei.
  • Mid(CampText;n{;m}) - extrage primele m caractere, începând cu al n-lea. În cazul când m lipsește - extrage toate caracterele, începând cu al n-lea.
  • Date() - returnează data curentă.
  • Now() - returnează data și ora curente.
  • DateAdd(“interval”; i; CâmpDate) - adună/scade la/din CâmpDate intervale de tipul data (i poate lua și valori negative).
    • "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" - săptămâni; ex.: DateAdd("ww";2;[DataRestit]) - peste 2 săptămâni de la „DataRestit” -data restituirii
    • "h" - ore; ex.: DateAdd("h"; -27;Now()) - cu 27 de ore în urmă.
  • DateDiff(interval, dată1, dată2) - Returnează un număr întreg care specifică numărul de intervale de timp dintre două date specificate. Are aceleași valori pentru interval ca și DateAdd
    • Exemplu: DATEDIFF("yyyy" , #1/1/2005# , #2/2/2007#) returnează 2 ani diferența
  • Month() - extrage luna dintr-un câmp Date
  • Year() - extrage anul dintr-un câmp Date
  • Datepart(“interval”;[campDate]) - extrage o anumită parte dintr-un câmp Date

Exemple de interogări

Câmpuri calculate (pe linie) în interogări de selecție:

  • Se aplică o majorare a prețului de 25% pentru cărțile apărute după data de 01 ianuarie 2001 (se va crea un nou câmp, calculat, care va fi introdus in linia Field)
    • Sintaxa câmpuri calculate “în linie”: Atrib\_calculat:[Atr.1]op[Atr.n]opConstantă
  • Iif: “Se calculează valoarea fiecărei “linii de factură”, la care se aplică o reducere comercială de 15% pentru valorile de peste 5.000.000 lei”
    • IIF(conditie;actiune\_1\_True;actiune\_2\_False)
  • Iif, IsNull: “Se înlocuiește valoarea de Null a prețului de bază cu zero”
  • Month, Year “Se afișează valoarea cărților facturate în luna mai 2001”
  • “Se afișează facturile emise în anul curent si in luna curenta”
  • DatePart; Year “Se afișează facturile emise în al doilea trimestru al anului 2001”
  • WeekDay “Se afișează facturile emise în weekend"
    • Weekday([Data facturii];2)=6 Or Weekday([Data facturii];2)=7
  • DateDiff “Se afișează facturile pentru care termenul de grație este mai mare decât 2 săptămâni”
  • DateAdd “Se afișează facturile pentru care termenul de grație este de 1 săptămână”
  • DateSerial “Se afișează facturile scadente în ultima zi a fiecărei luni”
  • LEFT/RIGHT / MID / VAL / STR
    • Val(Left([Numar Factura];3))=121
    • Mid([Numar Factura];3;3)="121"

Interogări de selecție și sintetizare

Access permite utilizatorilor realizarea unor cereri prin intermediul cărora se pot aplica funcții agregate unor înregistrări grupate după criterii prestabilite. Prin intermediul acestor interogari cu rol de sintetizare a datelor se pot construi cu ușurință 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 selecție aducându-se în grila Query Design câmpurile necesare și adăugându-se eventualele câmpuri calculate, după care se va apăsa butonul Totals din bara de instrumente. Ca rezultat al acestei operații, în grila Query Design, va fi disponibil un nou rând intitulat Total, ce prezintă într-o listă derulantă principalele funcții agregat disponibile (AVG; MIN; MAX; FIRST; LAST,etc.)

În cazul în care mai multe coloane au selectată în linia Total opțiunea Group By, gruparea se va face întâi după primul câmp din stânga, apoi după al doilea, ș.a.m.d

Exemple de câmpuri calculate (pe coloană) în interogări de selecție prin sinteză:

  • “Se calculează valoarea facturilor emise în 2012, in fiecare luna”
FieldTableTotalSortShowCriteriaor
Anul: Year([Data Facturii])Group By2012
Luna: Month([Data Facturii])Group By
Valoare: [Cantitate]\[Pret baza]*(1-[Discount])Sum