Filtrarea datelor
- Utilizarea clauzei WHERE
De obicei, tabele baze de date contin volume mari de date si rareori trebuie sa regasiti toate liniile dintr-un tabel.Frecvent ,veti dori sa extrageti din datele tabelului un subset de care aveti nevoie pentru operatii sau rapoarte specifice.Regasirea numai a datelor dorite implica specificarea criteriilor de cautare ,cunoscuta si drept conditie de filtrare .
Intr-o instructiune SELECT ,datele sunt filtrate prin specificarea criteriilor de cautare in clauza WHERE.Aceasta este precizata imediat dupa numele tabelului (clauza FROM),ca in exemplul urmator:
SELECT prod_nume, prod_pret
FROM Produse
WHERE prod_pret =3.49;
Instructiunea aceasta regaseste doua coloane din tabelul produse,dar nu returneaza toate liniile,ci numai pe cele cu valoarea prod_pret de 3.49, dupa cum urmeaza:prod_nume prod_pret
Exemplul acesta foloseste o simula testare a egalitatii-verifica daca o coloana are o valoare specificata si filtreaza datele in conformitate.Limbajul SQL va permite sa realizzati insa mai multe
...........................................
Jucarie tip peste 3.4900
Jucarie tip pasare 3.4900
Jucarie tip impure 3.4900
Limbajul SQL si filtrarea aplicatiilor. Datele pot fi de asemenea filtrate la nivelul aplicatiilor.Pentru aceasta,instructiunea SELECT regaseste mai multe date decat sunt realmente necesare pentru aplicatia client, iar codul client parcurge ciclic datele returnate,pentru a extrage numai liniile necesare.
Ca regula generala,pratica aceasta nu este deloc recomandabila.Bazele de date sunt optimizate pentru a efectua filtrari rapide si eficiente.Daca aplicatiile client sau limbajul de programmare sunt silite sa faca treaba bazelor de date,performantele aplicatiei vor fi afectate vizibil si se vor crea aplicatii care nu pot avea randamentul scontat.In plus,daca datele sunt filtrate la client,serverul trebuie sa expedieze date inutile prin conexiunile retelei,ceea ce duce la irosirea folosirii latimii de banda a retelei.
Pozitia clauzei WHERE Atunci cand folositi atat clauza ORDER BY,cat si clauza WHERE,asigurati-va ca ORDER BY este pozitionata dupa WHERE,astfel va fi generata o eroare.(Pentru mai multe informatii privind folosirea clauzei ORDER BY consultati lectia 3 "Sortarea datelor regasite"
- Operatorii clauzei WHERE Prima clauza WHERE pe care am examinat-o testa egalitatea-determina daca o coloana contine o valoare specificata.Limbaju SQL accepta mai multi operatori condizionali,enumerati in tabelul 4.1
Operatorii clauzei WHEREOperator Descriere
= Egalitate
<> Non-egalitate
!= Non egalitate
< Mai mic decat
<= Mai mic sau egal cu
!< Nu mai mic decat
> Mai mare decat
>= Mai mare sau egal cu
!> Nu mai mare decat
BETWEEN Intre doua valori specificate
IS NULL Este o valoare NULLCompatibilitatea operatorilor Unii dintre operatorii enumerati in tabelul 4.1sunt redundanti;de exemplu ,<> este acelas lucru cu !=,iar !<(nu mai mic decat) are acelas efect ca >=(mai mare sau egal cu).Nu toti acesti operatori sunt acceptati de toate SGBD-urile.Pentru a determina exact ce anume accepta sistemul dumneavoastra de gestionale a bazei de date ,consultati-i documentatia.
- Testarea cu o singura valoare
Am vazut deja un exemplu de testare a egalitatii.Sa trecem in revista cateva exemple pentru a demonstra utilizarea altor operatori.Primul dintre aceste exemple returneaza toate prodursele care costa mai putin de 10$.SELECT prod_nume, prod_pret
FROM Produse
WHERE prod_pret <10;
prod_nume prod_pret
............................................
Jucarie tip peste 3.4900
Jucarie tip pasare 3.4900
Jucarie tip impure 3.4900
Ursulet 8 inch 5.9900
Ursulet 12 inch 8.9900
Papusa fata 4.9900
Papusa rege 9.4900
Papusa regina 9.4900
Urmatoarea instructiune regaseste toate prodursele care costa 10$ sau mai putin (desi rezultatul va fi acelas ca in exemplul anterior,deoarece nu exista nici un articol care sa aiba pretul de exact 10$:SELECT prod_nume, prod_pret
FROM Produse
WHERE prod_pret <=10: - Testarea pentru non- corespondente
Urmatorul exemplu enumera toate articoele care nu apartin vanzatorului DLL01
SELECT vanz _id, prod_nume
FROM Produse
WHERE vanz_id <> ,DLL01, ;
vanz_id prod_nume
............................................
BRS01 Ursulet 8 inch
BRS01 Ursulet 12 inch
BRS01 Ursulet 18 inch
FNGO01 Papusa rege
FBGO01 Papusa regina - Testarea pentru un domeniu de valori
Pentru a cauta intr-un domeniu de valori, puteti folosi operatorul BETWEEN. Sintaxa lui difera de a altor operatori ai clauzei WHERE,deoarece necesita doua valori:inceputul si sfarsitul domeniului de testare.Operatorul BETWEEN poate fi utilizat,de exemplu,pentru ca sa caute toate prodursele ce costa intre 5 si 10 $ sau toate datele calendaristice care se afla intre data iniziala si cea finala specificate.
Folosirea apostrofurilorDaca examinati cu atentie conditiile folosite in clauzele WHERE de mai sus ,veti observa ca unele valori sunt incluse intre apostrofuri,dar nu toate.Apostrofurile delimitatoare sunt necesare atunci cand comparati o valoare cu o coloana care contine date de tip sir.Apostrofurile nu sunt utiliz ate pentru delimitarea valorilor folosite in coloanele numerice.
Urmatorul exemplu demonstreaza folosirea operatorului BETWEEN prin regasirea tuturor produselor cu preturi intre 5 si 10 $:
SELECT prod_nume, prod_pret
FROM Produse
WHERE prod_pret BETWEEN 5 AND 10;
prod_nume prod_pret
............................................
Ursulet 8 inch 5.9900
Ursulet 12 inch 8.9900
Papusa rege 9.4900
Papusa regina 9.4900
Dupa cum se vede in exemplul acesta,la folosirea operatorului BETWEEN trebuie specificate doua valori :inceputul si sfarsitul domeniului dorit.Cele doua valori trebuie de asemenea separate prin cuvantul cheie AND. Operatorul BETWEEN cauta corespondentele cu toate valoriale din domeniu,incluzand valoriale de inceput si de sfarsit specificate. - Testarea pentru nici o valoare Proiectantul unui tabel poate sa specifice daca in coloanele individuale pot sa nu existe valori.Daca o coloana nu contine nici o valoare,se spune ca ea contine o valoare NULL.
NULL.Nici o valoare ,spre deosebire de campurile ce contin 0 sau spatii albe.
Instructiunea SELECT are o clauza WHERE speciala care poate fi folosita pentru cautarea coloanelor cu valori NULL este vorba despre clauza IS NULL. Sintaxa arata astfel:
SELECT vanz_id
FROM Vanzatori
WHERE vanz_stat IS NULL;
vanz_id
.....
FNH01
JTS01
Operatori specifici SGBD-ului..Multe SGBD-uri isi extind setul standard de poperatori ,oferind optiuni de filtrare avanzate.Pentru mai multe imformatii, consultati-va documentatia sistemului de gestionale a bazei de date.
- Sinteza
In lectia aceasta ati imvatat cum sa filtrati datele returnate ,folosind clauza WHERE a instructiunii SELECT.Ati aflat de asemenea cum sa testati pentru egalitate ,non-egalitate,pentru mai mare decat sau mai mic decat valori specificate din domeniu ,si pentru valori NULL.
Link-ul autorului:
www.avasilcaidaniel.com/
Comentarii
Voteaza acest articol!
Trimite un comentariu!