Sunteți pe pagina 1din 5

Comanda SELECT

Comanda SELECT ne ajuta sa extragem informații din baza de date. O comanda SELECT
poate interoga una sau mai multe tabele. (Interogare de tip join este o comanda select pe 2
sau mai multe tabele).

Comanda SELECT pe o singura tabela

Forma generala

SELECT <lista coloane de afișat>


FROM <nume tabela>
[WHERE <condiții>]
[GROUP BY <condiții>]
[HAVING <condiții>]
[ORDER BY <criterii>]

obs. Clauzele SELECT, FROM sunt obligatorii, WHERE, GROUP BY, HAVING, ORDER BY 
sunt optionale.

Exemple

select *
from angajat

afișează conținutul tabelei angajat

select nume,meseria, salariu 


from angajat

afișează pentru fiecare salariat, din tabela angajat numele, meseria, salariu

Clauza WHERE se folosește pentru a afișa doar acele instanțe (rânduri) ale tabelei care
satisfac condiția specificata.

select *
from angajat
where salariu <=2500
 
 
Afișează salariatii cu salariul mai mic sau egal cu 2500

 
 
 
select * 
from angajat
where to_char(dataang,'yyyy') >= 1980 and to_char(dataang,'yyyy') <= 1982
Afiseaza salariati angajati intre anii (inclusiv) 1980 si 1982.

select upper(nume) || ' este ' ||lower(meseria)||' si are salariul de '||


salariu
from angajat
 
Obs. pentru redactarea unor condiții logice complexe putem utiliza:
 
1. operatorii logici AND, OR, NOT
2. operatorii relationali <, <=, >, >=, =, <> (diferit)
3. operatorul BETWEEN
4. operatorul IN
5. operatorul LIKE
6. operatorii IS NULL, IS NOT NULL
 
Operatorul BETWEEN
 
exp BETWEEN exp1 AND exp2 este adevărata dacă exp>=exp1  and exp<=exp2;
 
select *
from angajat
where salariu between 1500 and 2700
 
Afișează angajații cu salariul cuprins între 1500 si 2700.
 
select *
from angajat
where to_char(dataang,'yyyy') between 1980 and 1982
 
 
 
 
 
 
 
 
 
Operatorul IN
 
exp IN (exp1, exp2, ……..) este adevărată dacă exp=exp2 sau exp=exp2 sau …….
 
select * 
from angajat
where meseria='Inginer' or meseria = 'Contabil'
 
sau
 
select * 
from angajat
where meseria in ('Contabil', 'Inginer')
 
afișează toți inginerii sau contabilii din firma
 
 
select * 
from angajat
where to_char(dataang,'yyyy') in (1980,1981,1982)
 
afișează salariatii angajati între anii 1980 și 1982
 
Operatorul LIKE (asemanator), operează cu date de tip char / varchar2
 
exp LIKE ‘masca’ este adevărată dacă exp este asemănătoare cu masca
 
select * 
from angajat
where nume like 'I%' or nume like 'P%'
 
afiseaza salariatii ale caror nume incepe cu I sau P
obs. % - suplinește restul caracterelor
 
select * 
from angajat
where nume like '___e%'
 
afișează salariații care au in componenta numelui, pe poziția a patra litera e.
 
 
 
select * 
from angajat
where nume like '%e%'
 
afișează salariații care au in componenta numelui litera e.
 
 
 
Operatorii IS NULL, IS NOT NULL
 
select *
from angajat 
where email is not null
 
afișează salariații cu email
 
select *
from angajat 
where email is null
 
afișează  salariații fără email
 
Clauza ORDER BY - se utilizează pentru a ordona, la afișare, rezultatul interogării după
un anumit criteriu.
 
OBS. Ordonarea poate fi crescătoare (asc) sau descrescătoare (desc), implicit ordonare
este cea crescătoare.
 
select *
from angajati
order by sal desc
 
Afiseaza salariatii in ordine descrescatoare dupa salariu (sal).
 
select *
from angajati
order by sal
sau
select *
from angajati
order by sal asc
afișează salariații în ordine crescătoare după salariu (sal)
 
select * 
from angajati
order by to_char(dataang,'yyyy'), sal desc
 
afișează salariații în ordine crescătoare după anul angajării, în cadrul aceluiași an îi
afișează în ordine descrescătoare după salariu.
 
Clauza GROUP BY - se utilizează pentru a grupa instanțele (randurile) tabelei în funcție
de un criteriu.  De regula folosim clauza GROUP BY atunci cand utilizam așa numitele
funcții de grup: min(), max(), sum(), count(), avg().
 
Obs. Funcțiile de grup actioneaza fie asupra întregii tabele sau fie asupra unor grupuri
de instanțe din tabela.
 
 
select min(sal), max(sal), sum(sal), avg(sal), count(coda)
from angajati
 
afisam valoarea salariului minim, maxim, mediu, nr.salariaților, fond salarii
 
select codd, count(coda)
from angajati
group by codd
order by count(coda) desc
 
 
Afișează nr. angajaților din fiecare departament, rezultatul se afișează descrescător după nr.
angajaților.
 
select codd, count(coda), min(sal), max(sal), sum(sal), avg(sal)
from angajati
group by codd
 
afisam, pentru fiecare departament, nr. angajaților, salariul minim, maxim, fondul de salarii,
salariul mediu.
 
Clauza HAVING - se utilizează pentru a rafina (păstra, elimina) grupurile de instanțe create cu
clauza GROUP BY
OBS. GROUP BY fără HAVING se poate, HAVING fără GROUP BY nu se poate.
 
select codd, count(coda), min(sal), max(sal), sum(sal), avg(sal)
from angajati
group by codd
having count(coda) <=3
 
 
 

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