Sunteți pe pagina 1din 14

Platform de e-learning i curricul e-content

pentru nvmntul superior tehnic

Proiect nr. 154/323 cod SMIS 4428 cofinanat de prin Fondul European de
Dezvoltare Regional Investiii pentru viitorul dumneavoastr.

Programul Operaional Sectorial Creterea Competitivitii Economice - POS CCE

Platform de e-learning i curricul e-content


pentru nvmntul superior tehnic

Baze de date

19. Interogri la un singur tabel

Introducere
Cererile de interogare SQL folosesc n exclusivitate comanda SELECT, fiind
utilizate att pentru interogarea obiectelor create de utilizator, ct i a celor
sistem. Sintaxa comenzii este urmtoarea :
SELECT [DISTINCT,ALL] [schema.table.]expresion expr_alias
FROM [schema.table@dblink] table_alias
[WHERE condition]
[START WITH condition][CONNECT BY condition]
[UNION,UNION ALL,INTERSECT,MINUS][SELECT command]
[GROUP BY expresion][ HAVING condition]
[ORDER BY expresion(position)] [ASC,DESC]
[FOR UPDATE OF schema.table.column] [NOWAIT]

Parametrii de interogare

Parametrii comenzii au urmtoarea semnificaie( cei din paranteze sunt


opionali):
DISTINCT - returneaz numai o nregistrare n cazul n care comanda gsete
rnduri duplicate
ALL returneaz toate nregistrrile simple i duplicate ( selecteaz de
asemenea toate coloanele tabelelor din clauza FROM)
schema.table reprezint shema de identificare a tabelei(view-lui)
specificat prin user.table_name
expresion reprezint un nume de coloan sau o expresie care poate folosi
funcii sistem.
expr_alias este un nume alocat unei expresii care va fi folosit n formatarea
coloanei ( apare n antetul listei)
dblink reprezint numele complet sau parial de identificare a unei baze de
date (database.domain@connection_qualifier)
table_alias este un nume alocat unei tabele(view) care va fi folosit n cereri
corelate
WHERE condition reprezint o clauz (nlnuire de condiii) care trebuie s
fie ndeplinit n criteriul de selecie a nregistrrilor

Parametrii de interogare- continuare


START WITH condition stabilete criteriul de selecie pentru prima
nregistrare
GROUP BY expresion stabilete criteriile de grupare a nregistrrilor(numele
coloanelor folosite n criteriul de grupare)
CONNECT BY condition stabilete o ierarhie de selecie a nregistrrilor
HAVING condition restricioneaz nregistrrile din grup la anumite condiii
UNION,UNION ALL,INTERSECT,MINUS combin rndurile selectate de mai
multe comenzi SELECT, prin aplicarea anumitor restricii
ORDER BY expresion(position) 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 blocat de un alt user

Interogri pe clauza WHERE

Clauza WHERE poate compara valori de coloan , valori literale,


expresii aritmetice (sau funcii ) i poate avea patru tipuri de
parametri:

nume de coloan
operator de comparaie
operator de negaie

lista de valori

Operatori de comparaie
operatori logici
Operator Semnificaie
--------

----------------

egal cu

>

mai mare dect

>=

mai mare sau egal

<

mai mic dect

<=

mai mic sau egal

operatori SQL
Operator
--------

Semnificaie
----------------------------------

BETWEEN..AND...

intre dou valori(inclusiv)

IN( list )

compar cu o list de valori

LIKE

compar cu un model de tip caracter

IS NULL

este o valoare nul

Operatori de negaie
operatori logici
Operator
------------------

Semnificaie
------------------------------

!=

diferit de(VAX,UNIX,PC)

^=

diferit de(IBM)

<>

diferit de(toate OS)

NOT NUMECOL=

diferit de

NOT NUMECOL>

mai mic sau egal

operatori SQL
Operator

Semnificaie

--------

-----------------------------------

NOT BETWEEN

nu se afl intre dou valori date

NOT IN

nu se afl intr-o list dat de valori

NOT LIKE

diferit de un ir

IS NOT NULL

nu este o valoare nul

Ordinea de preceden a operatorilor


Dac operatorii au precedena egal, atunci ei se evalueaz de la
stnga la dreapta.Precedena operatorilor logici este urmtoarea:
1. Operatorii de comparaie i operatorii SQL au precedena egal:
=, >= , <>, BETWEEN...AND, IN, LIKE, IS NULL.
2. NOT (pentru a inversa rezultatul unei expresii logice, de exemplu
SELECT .WHERE not(sal>2000) )
3. AND
4. OR.
Pentru a fi siguri de ordinea de execuie a dou operaii, se recomand
folosirea parantezelor rotunde.

Exemple:
SQL>SELECT * FROM angajati ;
SQL>SELECT id_dep,den_dep FROM departamente;
SQL>SELECT id_ang ecuson, nume,salariu*12+nvl(comision,0) venit_anual
FROM angajati;
SQL>SELECT id_ang ecuson, nume,data_ang,salariu FROM angajati WHERE
id_dep=10;
SQL>SELECT id_ang ecuson, nume,functie, salariu*12+nvl(comision,0) venit
FROM angajati WHERE id_ang IN (7499,7902,7876) ORDER BY nume;
SQL>SELECT id_ang ecuson, nume, functie, data_ang FROM angajati
WHERE data_ang LIKE %80;
SQL>SELECT id_ang ecuson, nume, functie, salariu FROM angajati
WHERE (comision=0 OR comision IS NULL) AND id_dep=20
ORDER BY nume;

Interogri cu variabile substituite n SQL*Plus

Cererile SQL pot fi executate folosind anumii parametri, care se mai


numesc i variabile substituite.
1. Variabile substituite cu un singur ampersand (&)

O astfel de variabil se defineste &nume_variabila i este un parametru


care se va introduce de la tastatur n timpul execuiei comenzii n care este
utilizat. Parametrul cu un singur ampersand trebuie introdus de fiecare
dat, chiar dac este folosit de mai multe ori n aceeai comanda SQL.

Exemplu:

SQL> SELECT id_ang,nume,functie,salariu FROM angajati


WHERE id_sef=&ecuson_sef;

Interogri cu variabile substituite n SQL*Plus- continuare

2. Variabile substituite cu dublu ampersand (&&)

Spre deosebire de variabila cu un singur ampersand, o variabil cu dublu


ampersand va fi stocat i va putea fi apelat pe toat sesiunea de lucru.

Definirea se face similar &&nume_variabila i va fi cerut o singur dat,


folosirea ei de mai multe ori, n cadrul comenzii, se face apelnd-o cu
&nume_variabila, aa cum se vede n exemplul urmtor :

Exemplu:

SQL> SELECT nume,functie,&& venit venit_lunar FROM


angajati WHERE &venit>2000;

Interogri cu variabile substituite n SQL*Plus- continuare


3. Variabile definite cu ACCEPT
Cnd definim o variabil cu ampersand, totdeauna promtul va fi numele
variabilei.
Folosind comanda ACCEPT, se poate redefini promtul i chiar se pot
ascunde caracterele introduse de la tastatur(facilitate util n cazul unei
parole).
n exemplul urmtor, se vor edita urmtoarele comenzi n fiierul
c:\temp\functia.sql :
SQL>ACCEPT functie_sef CHAR PROMPT Introduceti functia sefului: ;
SQL>SELECT nume,salariu,comision FROM angajati WHERE
functie=&functie_sef;
SQL>UNDEFINE functie_sef;
Fiierul se va rula n SQL*Plus :
SQL> @c:\temp\functia.sql

Interogri cu variabile substituite n SQL*Plus- continuare

4. Variabile definite cu DEFINE i resetate cu UNDEFINE

Variabilele astfel definite cu DEFINE nu vor mai afia promtul atunci cnd sunt
setate i rmn setate pn cnd vor fi resetate cu comanda UNDEFINE.
n exemplul urmtor, vom seta variabila procent_prima =15%;
SQL> DEFINE procent_prima= 1.15;
SQL>SELECT nume,salariu, salariu*&procent_prima prima FROM
angajati WHERE id_dep=20;
SQL> UNDEFINE procent_prima;

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