Sunteți pe pagina 1din 32

Universitatea

Politehnica
Bucureti

Facultatea de
Automatic i
Calculatoare

Catedra de
Calculatoare

Laborator 4
Cereri SQL
Autori
Conf. Dr. Ing. Alexandru Boicea
As. Drd. Ing. Ciprian-Octavian Truic

Cuprins
Cereri SQL
Cereri simple
Cereri cu clauza WHERE

12.03.2016

Laborator 4

Cereri SQL
Cererile de interogare SQL folosesc n exculsivitate
comanda SELECT;
Aceast comand este utilizat, att pentru
interogarea obiectelor create de utilizator, ct i a
obiectelor de la nivelul sistemului de gestiune.

12.03.2016

Laborator 4

Cereri SQL
Sintaxa comenzii:
SELECT [DISTINCT | ALL] [schema.table.]expression [[as]
expression_alias]
FROM [schema.]table[@dblink] [table_alias]
[WHERE conditions]
[[START WITH conditions] CONNECT BY [NOCYCLE] conditions]]
[{UNION [ALL]|INTERSECT|MINUS} SELECT command]
[[GROUP BY expressions] [HAVING conditions]]
[ORDER BY expressions|positions [ASC|DESC]]
[FOR UPDATE OF schema.table.column [NOWAIT]]

12.03.2016

Laborator 4

Cereri SQL
DISTINCT returneaz numai o nregistrare n cazul n care
exist valori duplicate pe o coloana ;
ALL returneaz toate nregistrrile simple i duplicate;
schema.table reprezint numele complet de indentificare a
tabelei/view-ului (schema are acelai nume cu user-ul) ;
expression repezint numele unei coloane sau o expresie
care folosete funcii de sistem (sau stocate);
expression_alias este un nume alocat unei expresii care va fi
folosit n formatarea coloanei (apare n antetul listei);
dblink reprezint numele de identificare, complet sau
parial, al unei baze de date.
12.03.2016

Laborator 4

Cereri SQL
table_alias este un nume alocat unei tabele/view care va fi
folosit n cererile corelate;
WHERE conditions reprezint o condiie (nlnuire de
condiii) care trebuie s fie ndeplinit n criteriul de selecie a
nregistrrilor;
START WITH conditions stabilete criteriul de selecie
pentru prima nregistrare pentru o ordonare ierarhic;
CONNECT BY conditions stabilete o ierarhie de selecie a
nregistrrilor;
GROUP BY expressions stabilete criteriile de grupare a
nregistrrilor (numele coloanelor folosite n criteriul de
grupare).
12.03.2016

Laborator 4

Cereri SQL
HAVING conditions restricionarea nregistrrilor din grup la
anumite condiii;
UNION [ALL] |INTERSECT |MINUS combin rndurile
selectate de mai multe comenzi SELECT prin aplicarea
operatorilor reuniune / intersecie / diferen;
ORDER BY expressions|positions ordoneaz nregistrrile
selectate dup coloanele din expresie sau n ordinea
coloanelor specificate prin poziie;
FOR UPDATE OF face o blocare (lock) a nregistrrilor n
vederea modificrii anumitor coloane;
NOWAIT returneaz controlul userului dac comanda
ateapt eliberarea unei nregistrri blocate de un alt user.
12.03.2016

Laborator 4

Cereri SQL
Mai multe informaii
http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements
_10002.htm#SQLRF01702
http://docs.oracle.com/cd/E16655_01/server.121/e17209/queries003.
htm#SQLRF52332
http://docs.oracle.com/cd/E16655_01/server.121/e17209/queries004.
htm#SQLRF52341
http://docs.oracle.com/cd/E16655_01/appdev.121/e18410/ch_seven.
htm#ZZPRE745

12.03.2016

Laborator 4

Cereri simple
Ex. 1. S se creeze o copie a tabelei DEPT care s se numeasc
departamente cu urmtoarele coloane:
id_dep number(2), den_dep varchar2(14), locatie
varchar2(13).

12.03.2016

Laborator 4

Cereri simple
Ex. 2. S se creeze o copie a tabelei EMP care s se numeasc
angajai folosind o cerere SELECT . Coloanele vor fi
redenumite.

Ex. 3. S se selecteze toate nregistrrile i toate coloanele din


tabela angajai.

12.03.2016

Laborator 4

10

Cereri simple
Ex. 4. S se selecteze ID-ul i numele departamentului din
tabela departamente.

Ex. 5. S se selecteze ID-ul, numele, funcia i data angajrii


pentru toi angajaii din firm, ordonai descresctor n
funcie de ID. Concatenai ID-ul cu numele.

12.03.2016

Laborator 4

11

Cereri simple
Observaie:
Operatorul de concatenare a irurilor de caractere este:
n Oracle ||
n Microsoft SQL Server +
n Oracle, MySQL, PostgreSQL i Microsoft SQL Server
exist funcia concat(diferite implementri) pentru
concatenarea irurilor de caractere (se va prezenta ca
funcie n laboratorul 6).

12.03.2016

Laborator 4

12

Cereri simple
Ex. 6. S se selecteze ID-ul, numele, funcia i venitul lunar
pentru toi angajatii din firm. S se adauge la lista o coloan
goal care s se numeasc semntura. Concatenai ID-ul cu
numele. Ordonai dup departament.

12.03.2016

Laborator 4

13

Cereri simple
Ex. 7. S se selecteze numele i funcia angajailor.

Ex. 8. S se fac o list cu numele departamentului i codul


acestuia. Ordonai dup numele departamentului .

12.03.2016

Laborator 4

14

Cereri cu clauza WHERE


Clauza WHERE este folosit pentru a compara
valorile unei coloane, valori literale, expresii
aritmetice sau funcii i poate avea patru tipuri de
parametri:
Nume de coloane
Operatori de comparaie
Operatori de negaie
List de valori

12.03.2016

Laborator 4

15

Cereri cu clauza WHERE


Operatorii de comparaie pot fi de dou feluri: operatori
logici i operatori SQL
Operatori Logici

Operatori SQL

Operator

Semnificaie

Operator

Semnificaie

Egal

BETWEEN
val1 AND val2

Verific daca o valoare se afl


ntre dou valori date (inclusiv)

>

Mai mare dect

IN (list)

Compar dac valoarea se afl


n lista de valori list

>=

Mai mare sau egal LIKE


dect

Compar cu un model de tip


caracter/ir de caractere

<

Mai mic dect

Verific dac este o valoare


NULL

<=

Ma mic sau egal


dect

12.03.2016

IS NULL

Laborator 4

16

Cereri cu clauza WHERE


Operatorii de negaie pot fi de dou feluri: operatori logici i
operatori SQL
Operatori Logici

Operatori SQL

Operator

Semnificaie

Operator

!=

Diferit de
(UNIX,
Windows)

NOT BETWEEN Verific daca o valoare nu se afl ntre


val1 AND val2 dou valori date (inclusiv)

^=

Diferit de IBM NOT IN (list)

Compar dac valoarea nu se afl n


lista de valori list

<>

Diferit de
toare OS

NOT LIKE

Compar dac este diferit de un


caracter/ir de caractere

NOT
column_name
{=|>|>=|<|<=}

Neag
operatorul de
comparaie

IS NOT NULL

Verific dac o valoare nu este NULL

12.03.2016

Laborator 4

Semnificaie

17

Cereri cu clauza WHERE


Observaii:
Pentru a compune expresii logice cu mai multe condiii se
folosesc operatorii logici AND i OR. Predicatul AND verifica
dac toate condiiile sunt adevrate, iar predicatul OR verifica
dac cel puin una dintre condiii este adevrat. Se pot
combina operatorii AND i OR n aceeai expresie logic n
clauza WHERE, iar n acest caz operatorii AND sunt evaluai
primii i apoi operatorii OR (precedena operatorului AND
este mai mare dect cea a operatorului OR)
Dac operatorii au preceden egal atunci ei se evalueaz de
la stnga la dreapta.

12.03.2016

Laborator 4

18

Cereri cu clauza WHERE


Precedena operatorilor logici este urmtoarea:
1. Operatorii de comparaie i operatorii SQL au
preceden egal (=,<,<=,>,>=,<>,!=,^=,
BETWEEN, IN, LIKE, IS NULL)
2. NOT (pentru inversarea rezultatului unei expresii
logice)
3. AND
4. OR
Pentru a fi siguri de ordinea de execuie a operaiilor
se recomand folosirea parantezelor rotunde.
12.03.2016

Laborator 4

19

Cereri cu clauza WHERE


Ex. 9. S se listeze toi angajaii din departamentul 10.

12.03.2016

Laborator 4

20

Cereri cu clauza WHERE


Ex. 10. S se selecteze toi angajaii care au funcia MANAGER.
Ordonai lista dup ID-ul departamentului.

12.03.2016

Laborator 4

21

Cereri cu clauza WHERE


Observaii:
Dei comenzile SQL nu sunt case sensitive, datele de tip ir de
caractere sunt. Atenie cnd se folosesc operatorii de
comparaie i negaie pe iruri de caractere.
Funcia lower(parameter) este o funcie de sistem care
transform toate caracterele din irul de caractere parameter
n litere mici. Funcia invers este upper(parameter) care
transform toate caracterele din parameter n litere mari.
Parametrul poate s fie un ir de caractere, o expresie(funcie)
care ntoarce un ir de caractere sau un nume de coloan n
care se in valori de tip ir de caractere.

12.03.2016

Laborator 4

22

Cereri cu clauza WHERE


Ex. 11. Selectai toate persoanele care s-au angajat intr-o
anumit perioad.

12.03.2016

Laborator 4

23

Cereri cu clauza WHERE


Ex. 12. S se listeze ID-ul, numele, funcia, venitul lunar pentru
angajaii care au urmtoarele ID-uri: 7499,7902, 7876.

12.03.2016

Laborator 4

24

Cereri cu clauza WHERE


Ex. 13. S se selecteze toate persoanele care au fost angajate
n anul 1980.

12.03.2016

Laborator 4

25

Cereri cu clauza WHERE


Ex. 14. S se selecteze toate persoanele al cror nume ncepe
cu litera F i numele funciei are 7 caractere.

12.03.2016

Laborator 4

26

Cereri cu clauza WHERE


Observaie:
Operatorul LIKE poate fi folosit cu simbolurile _ i % pentru
a selecta rndurile care se portrivesc cu un caracter sau un
subir de caractere.
Simbol

Semnificaie

_ (underline)

nlocuit ntr-un ir, poate s fie orice caracter

Orice secven de mai multe caractere

12.03.2016

Laborator 4

27

Cereri cu clauza WHERE


Ex. 15. S se listeze angajaii din departamentul 20 care nu au
primit comision.

12.03.2016

Laborator 4

28

Cereri cu clauza WHERE


Ex. 16. S se listeze angajaii care au primit comision i au
funcia SALESMAN.

12.03.2016

Laborator 4

29

Cereri cu clauza WHERE


Observaii:
Dac se compar o coloan sau expresie cu NULL,
atunci operatorul de comparaie trebuie s fie IS
[NOT] NULL.
Dac se folosete orice alt operator rezultatul va fi
ntotdeauna FALSE. Dac pentru exerciiile 15 i 16,
n loc de IS [NOT] NULL se utilizau expresiile
comision = NULL sau comision <> NULL rezultatul ar
fi fost FALSE.

12.03.2016

Laborator 4

30

Cereri cu clauza WHERE


Ex. 17. S se selecteze toi angajaii care au funcia MANAGER
i salariul peste 1500, sau toi angajaii care au funcia
ANALYST.

12.03.2016

Laborator 4

31

Exerciii
1. Selectai toi angajaii care s-au angajat nainte de anul 1982
i nu au primit comision.
2. Selectai toi angajaii care au salariul peste 3000 i nu au
efi, ordonai dup departament.
3. Selectai numele, funcia i venitul anual al angajailor care
nu au funcia MANAGER, pentru un departament introdus de
la tastatur.
4. Selectai departamentul, numele, data angajrii i salariul
tuturor persoanelor angajate n anul 1981, din dou
departamente care se introduc de la tastatur.

12.03.2016

Laborator 4

32

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