Sunteți pe pagina 1din 45

@Algebra relațională

@Interogarea BD utilizând interfaţa


QBE din Access
Algebra relațională
● Este formată dintr-un set de operatori, care
prelucrează relaţii/tabele în scopul obţinerii altor
relaţii/tabele.

● Operatori relaționali:
○ operatori unari, care se aplică unei singure relații/
tabele;
○ operatori binari, care se aplică pentru două realții/
tabele.
Interogarea bazei de date
● are la bază algebra relațională ➜operatorii relaționali;
într-o interogare se pot aplica unul sau mai mulți operatori
● permite regăsirea și extragerea informațiilor din baza de
date;
● asigură ordonarea datelor după anumite criterii;
● efectuarea de calcule;
● actualizarea bazei de date (prin interogări de tip acţiune);
● pregătirea datelor în vederea prezentării lor în interfața
cu utilizatorul (formulare sau rapoarte);
● etc.
Interogarea bazei de date în Microsoft Access
● Sursa unei interogări: unul sau mai multe tabele și/sau
alte interogări
● Interogarea nu stochează date – rezultatele sunt
generate dinamic și dispar din memorie după
închiderea interogării
● În baza de date se stochează doar definiția interogării
● Există și interogări speciale care acționează asupra
datelor/tabelelor în sensul creării/modificării/ștergerii.
Acestea nu furnizează rezultate explicite către utilizator
Interogări Microsoft Access - categorii de bază
● Interogări/cereri de selecție – extragerea datelor din
una sau mai multe tabele și/sau interogări realizate
anterior precum și efectuarea de calcule
● Interogări/cereri de analiză încrucișată – sintetizarea
datelor și a rezultatelor obţinute din calcule, sub
forma unei foi de calcul tabelar (asemănător cu
tabelul pivot din Excel)
● Interogări/cereri de tip acțiune – creare de noi tabele
și de actualizare a bazei de date
Interogări/cereri de selecție Microsoft Access
● Sunt cele mai întâlnite în exploatarea unei baze de
date

● Modalități creare/modificare în Access:


○ prin interfața QBE (Query By Example)
○ direct în limbajul SQL (Structured Query Language)
○ varianta mixtă QBE + SQL
A. Interogări/cereri de selecție – interfața QBE
● QBE utilizează o interfața grafică pentru descrierea unei
interogări
● QBE permite învățarea rapidă a modului de interogarea a
unei BD și a limbajului SQL – QBE generează automat
codul aferent unei interogări în limbajul SQL
● Anumite interogări complexe scrise direct în limbajul SQL
nu pot fi generate cu QBE, datorită limitelor pe care le are
interfața grafică în exprimarea facilă a codului SQL – care
este foarte flexibil
Baza de date pentru exemple curs
Interfața QBE - Query Design
Interfața QBE - Query Design

2
Interfața QBE - Query Design
Interfața QBE - rezultatele
Operatorii relaţionali de bază - operatori unari
● Proiecția
● Selecția
Operatori unari - proiecția
● Proiecţia unei relaţii/tabele T cu o anumită structură de
atribute, după un set de atribute din cadrul acesteia este
o altă relaţie/tabelă T1, care va avea ca structură setul de
atribute aplicate prin proiecție. Înregistrările/tuplurile
relației/tabelei T1, obținute prin proiecție, sunt cele din
relația/tabela inițială T, mai puțin atributele și valorile
care nu fac parte din criteriul de proiecție. Înregistrările/
tuplurile duplicat pot fi eliminate sau nu, în funcție de
scop.

T= PROIECTIEC (T1)
Operatori unari - exemplu proiecție Access
Proiecție aplicată pe tabelul Client, după atributele
DenumireClient, OrasClient
Operatori unari - exemplu proiecție Access
Proiecție aplicată pe tabelul Client, după atributele
DenumireClient, OrasClient
Operatori unari - rezultat proiecție Access
Proiecție aplicată pe tabelul Client, după atributele
DenumireClient, OrasClient
Query1= PROIECTIEDenumireClient, OrasClient (Client)
Operatori unari - selecția
● Selecția aplicată unei relaţii/tabele T cu o anumită
structură de atribute, înseamnă aplicarea unui criteriu C
asupra valorilor atributelor specificate în criteriu. În urma
aplicării selecției rezultă o altă relaţie/tabelă T1, care va
avea ca structură aceleași atribute ca în relația/tabela
inițială T. Înregistrările/tuplurile relației/tabelei T1,
obținute prin selecție, sunt cele din relația/tabela inițială T,
rezultate prin aplicarea criteriului C.

T= SELECTIEC (T1)
Operatori unari - exemplu selecție Access
● Selecție aplicată tabelului Client, după criteriul
OrasClient="Bucuresti" or OrasClient="Brasov"

● Atributele din rezultat


sunt aceleași ca în tabelul
Client.
● Criteriul aplicat este cel
care stabilește ce
înregistrări se vor afișa în
rezultat.
Operatori unari - rezultat selecție Access
● Selecție aplicată tabelului Client, după criteriul
OrasClient="Bucuresti" or OrasClient="Brasov"
Query1= SELECTIEOrasClient="Bucuresti" or OrasClient="Brasov" (Client)
Definirea criteriilor de selecţie (zona CRITERIA)
Constante
Numerice (ex: 200,0)
De tip text (ex: ”Bucuresti”,”SC ALFA SRL”)
Dată calendaristice(ex: #01/03/2009#)
Operatori
aritmetici - +,-,*,/,=,<>,<=,>=,
logici: AND, OR, NOT
alţi operatori: IN, IS NULL, LIKE, BETWEEN
IN – precizează mulţimea de valori admise pentru un atribut;
Exemplu: pentru atributul Localitate se poate impune criteriul de selecție
IN (“Bucuresti”, “Ploiesti”, “Arad”)
IS NULL – selectează înregistrările care nu au introduse valori;
Definirea criteriilor de selecţie (zona CRITERIA)
•LIKE – permite căutarea unui şir într-un text.
•Exemplu: pentru atributul NumeClient criteriul de selecţie LIKE ”SC *” va
determina afişarea tuturor clientilor al căror nume începe cu SC, iar
•Exemplu: pentru atributul NumeClient criteriul de selecţie LIKE ”SC *” va
determina afişarea tuturor clientilor al căror nume începe cu SC, iar
•Simbolul * înlocuieşte un şir de caractere de orice dimensiune.
•Simbolul ? înlocuieşte un caracter numeric sau alfanumeric.
•Simbolul # înlocuieşte un caracter numeric (cifră)
• BETWEEN val1 AND val2– precizează mulţimea de valori cuprinse în intervalul

val1 şi val2.
• Exemplu: pentru atributul Pret criteriul de selecţie BETWEEN 100 AND 700 va

determina afişarea mărfurilor ce au pretul cuprins între 100 şi 700.


Definirea criteriilor de selecţie (zona CRITERIA)
Funcții
•Date() – returnează data curenta,
•Now() – returnează data și ora curentă,
•Month(data calendaristica) – extrage luna dintr-o data
calendaristica,
•Year(data calendaristica)- extrage anul dintr-o data calendaristica
•Len(X)- returnează lungimea unui șir.
•Trim(X)- elimina spaţiile de la începutul și sfârșitul unui șir.
Definirea criteriilor de selecţie (zona CRITERIA)
•Left(X,n)- returnează primele n caractere de la începutul unui șir
•IIF(conditie, Valoare-adevar,Valoare-fals) – returnează Valoare-
adevar dacă este adevarată condiția altfel Valoare-fals.

Exemplu
ADAOS: IIF(PRET >100, PRET*10/100, PRET*5/100) definește un
câmp calculat ADAOS cu valori de 10% din preţ, pentru mărfurile
ce au preţul mai mare de 100 si valori de 5% din preţ, pentru
mărfurile ce au preţul mai mic sau egal cu 100.
Operatorii relaţionali - operatori binari
● Produsul cartezian
● Reuniunea
● Intersecția
● Diferența
● Compunerea (join)
● Diviziunea (împărțirea)
Operatori binari- produsul cartezian
● Produsul cartezian a două relaţii/tabele T1 şi T2
(T1xT2) este o relaţie/tabelă T care stochează mulţimea
perechilor obţinute prin concatenarea înregistrărilor
aparţinând lui T1 cu cele aparţinând lui T2.

● Produsul cartezian conține practic toate combinațiile


posibile dintre întregistrările tabelelor T1 și T2.
T= T1 x T2
Operatori binari- exemplu produs cartezian
● Produsul cartezian a dintre tabelele Client și Produs.

Client x Produs = ?
5x4=?
Operatori binari- exemplu produs cartezian
● Pentru a obține produs cartezian, în QBE tabelele se
plasează fără legături
● Dacă se aplică condiția
CodProdus=1, ce combinție de
operatori avem?
Operatori binari- exemplu produs cartezian
Operatori binari- compunerea
● Compunerea (join) a două relaţii/tabele T1 şi T2, unde
T1 este formată din n atribute/coloane şi T2 este formată
din m atribute/coloane, are ca rezultat o a treia relaţie/
tabelă T, produsul cartezian al celor două tabele sursă,
fiind alese doar acelea care îndeplinesc o anumită
condiţie specificată în cadrul compunerii. Numărul de
atribute/coloane ale rezultatul compunerii este m+n.

T=T1 JOINC T2 sau T = SELECTC (T1 x T2)


Operatori binari- Compunerea

JOINCifraAfaceri Between MinCifraAfaceri


AND MaxCifraAfaceri

=
Operatori binari- Compunerea

SELECT CifraAfaceri Between


MinCifraAfaceri

= AND MaxCifraAfaceri
Operatori binari- exemplu compunere
● Pentru a obține produs cartezian, în QBE tabelele se
plasează fără legături
Operatori binari- echicompunerea
● EchiCompunerea este compunerea pentru care condiţia
este alcătuită numai din egalităţi, putând conţine una sau
mai multe egalităţi. În cazul echicompunerii, în tabela
rezultat apar două câmpuri ce au valori identice.
Operatori binari- EchiCompunerea

JOINClient.codClient=Comanda.CodClient
=
Operatori binari- exemplu echicompunere
● Pentru a obține produs cartezian, în QBE tabelele se
plasează fără legături
Operatori binari- exemplu echicompunere
● Pentru a obține echicompunere, în QBE tabele vor fi legate
Operatori binari- compunerea externă
● Compunerea externă este o echicompunere dar care,
spre deosebire de aceasta, afişează şi tuplurile care nu
au corespondent în cadrul celor două tabele sursă
LEFT JOINClient.OrasClient=
Oras.Oras

=
Operatori binari- exemplu compunerea externa
(LEFT JOIN)
Operatori binari- compunerea externă
● Compunerea externă este o echicompunere dar care,
spre deosebire de aceasta, afişează şi tuplurile care nu
au corespondent în cadrul celor două tabele sursă
RIGHT JOINClient.OrasClient=
Oras.Oras

=
Operatori binari- exemplu compunerea externa
(RIGHT JOIN)
Tipuri de legaturi (JOIN) in ACCESS - INNER JOIN
Tipuri de legaturi (JOIN) in ACCESS - LEFT JOIN
Tipuri de legaturi (JOIN) in ACCESS - RIGHT JOIN
QBE Exemple - Legături între tabele
Să se afișeze clienții care nu au comenzi.

S-ar putea să vă placă și