Sunteți pe pagina 1din 9

SQL

Limbajul SQL (Structured Query Language) se bazeaz pe studiile lui E.F. Codd, prima
implementare a acestui limbaj datnd din !"#$.
SQL este un limbaj complet standardizat %i se poate utiliza pentru a accesa baze de date &racle,
SQL Ser'er, ()*, +ySQL %.a.
SQL utilizeaz o sinta, -oarte simpl %i u%or de -olosit. Comenzile SQL sunt grupate .n cinci
categorii, ast-el/
!) Limbajul de interogare 0 permite regsirea liniilor memorate .n tabelele bazelor de date.
Comanda utilizat este SELEC1.
*) Limbajul de manipulare a datelor 0 permite modi-icarea con2inutului tabelelor. Comenzile
utilizate sunt/
3 45SE61 0 pentru adugarea de noi linii .ntr3un tabel7
3 89(:1E 0 pentru modi-icarea 'alorilor memorate .ntr3un tabel7
3 (ELE1E 0 pentru %tergerea liniilor dintr3un tabel.
;) Limbajul de definire a datelor 0 permite de-inirea structurii tabelelor ce compun bazele de date.
Comenzile utilizate sunt/
3 C6E:1E 0 pentru crearea structurii unei baze de date sau a unui tabel7
3 :L1E6 0 pentru modi-icarea structurii unei baze de date sau a unui tabel7
3 (6&9 0 pentru %tergerea structurii bazei de date7
3 6E5:+E 0 pentru sc<imbarea numelui unui tabel7
=) Limbajul de control al tranzaciilor. Comenzile utilizate sunt/
3 C&++41 0 pentru ca modi-icrile e-ectuate asupra bazei de date s de'in permanente7
3 6&LL):C> 0 permite renun2area la ultimele modi-icri asupra bazei de date7
3 S:?E9&451 0 pentru de-inirea unui punct de sal'are la care se poate re'eni, renun2nd
la modi-icrile -cute dup acest punct asupra bazei de date.
@) Limbajul de control a datelor 0 permite de-inirea %i modi-icarea drepturilor asupra bazelor de
date. Comenzile utilizate sunt/
3 A6:51 0 pentru acordarea unor drepturi altor utilizatori asupra bazei de date7
3 6E?&>E 0 pentru anularea anumitor drepturi ale utilizatorilor.
9rincipalele elemente care compun o comand SQL
3 58+E 0 toate obiectele dintr3o baz de date, tabele, coloane, indec%i etc., au un nume.
5umele poate -i orice %ir de ma,imum ;$ de litere, ci-re %i caractere speciale (BCD, BED,
BFD), primul caracter -iind obligatoriu o liter.
3 C8?451E 6EGE6?:1E 0 la -el ca .n orice limbaj %i .n SQL e,ist o list de cu'inte
rezer'ate. :ceste cu'inte nu pot -i utilizate .n alt scop dect cel de-init ini2ial.
3 C&5S1:51E 0 o constant este o 'aloare -i, care nu poate -i modi-icat. E,ist/
constante numerice, de e,emplu =, !*.;=, ." (se obser' c dac un numr real
are partea .ntreag egal cu zero, atunci ea nu mai trebuie precizat)7
constante al-a3numerice (sau %ir de caractere). Constantele %ir de caractere sunt
scrise .ntre apostro-uri %i sunt case3sensiti'e (HabcI, Hbaza de dateI).
3 ?:64:)4LE 0 o 'ariabil este o dat care poate a'ea .n timp 'alori di-erite. & 'ariabil
are .ntotdeauna un nume pentru a putea -i re-erit. SQL accept * tipuri de 'ariabile/
'ariabile asociate numelor coloanelor7
'ariabile sistem.
3 EJ96ES44 0 o e,presie este -ormat din 'ariabile, constante %i -unc2ii. &peratorii care
pot -i utiliza2i sunt .mpr2i2i ast-el/
operatori aritmetici7
operatori al-a3numerici7
!K"
operatori de compara2ie7
operatori logici.
Cu ajutorul comenzii SELEC1 se pot realiza urmtoarele tipuri de opera2ii/
3 Selec2ia 0 const .n -iltrarea liniilor care 'or -i a-i%ate7
3 9roiec2ia 0 const .n alegerea doar a anumitor coloane pentru a -i a-i%ate7
3 8niune (L&45) 0 const .n prelucrarea datelor din dou sau mai multe tabele BlegateD
con-orm unor reguli precizate7

Sintaxa:
SELEC1 M(4S145C1N listCdeCe,presii
F6&+ numeCtabel
OPE6E condi2ie 0 clauz op2ional
&6(E6 )Q criteriiCsortareCrezultat 0 clauz op2ional7
Efectul:
Se parcurg rnd pe rnd liniile tabelului speci-icat .n clauza F6&+. (in -iecare linie,
con2innd date pentru care condi2ia a-lat .n clauza OPE6E este ade'rat, 'a rezulta o linie .n
rspunsul cererii.
Rn cazul .n care clauza OPE6E lipse%te, toate liniile tabelului din clauza F6&+ 'or a'ea o
linie corespondent .n rezultatul cererii. Linia de rezultat este compus pe baza listei de e,presii a-lat
pe clauza SELEC1.
*K"
(ac e,ist cu'ntul c<eie (4S145C1, din rezultat se elimin liniile duplicat.
Rnainte de a trimite rezultatul, ser'erul .l sorteaz .n -unc2ie de criteriile speci-icate de clauza
&6(E6 )Q. Rn cazul .n care clauza &6(E6 )Q lipse%te, liniile din rezultat sunt .ntr3o ordine
independent de con2inutul lor sau de ordinea .n care ele au -ost adugate .n tabel.
5umrul coloanelor din rezultat este egal cu numrul e,presiilor din lista clauzei SELEC1.
:ceste e,presii dau %i numele coloanelor din rezultat.
E'aluarea 'alorii de ade'r a condi2iei din OPE6E se -ace doar pe baza datelor a-late pe linia
respecti'. (eoarece parcurgerea liniilor speci-icat de o cerere SELEC1 se -ace dup un plan de
e,ecu2ie generat de ser'er, -olosirea clauzei &6(E6 )Q este obligatorie .n cazul .n care se dore%te un
rezultat sortat dup anumite criterii.
5ume de coloane sau S
Ex.1. SELEC1 nume, prenume, dataCnastere
F6&+ studentiCtabel
Ex.2. SELEC1 S
F6&+ studentiCtabel
E,presii aritmetice
Ex.3. SELEC1 tip, suma, (sumaT*$)S!.!
F6&+ bursaCtabel
E,presii concatenate
Ex.4. SELEC1 USpecializareaU VVnumeVVU are codulU,codCspec
F6&+ specializareCtabel
:lias de coloan
3 nu poate -i mai lung de ;$ de caractere7
3 .ncepe cu o liter %i con2ine litere, ci-re sau e pus .ntre g<ilimele7
3 nu poate -i -olosit dect .n cererea curent7
3 sistemul nu stoc<eaz .n baza de date sau altunde'a aceste nume alternati'e.
Ex.5. SELEC1 tip :S W1ip bursaD, Uare 'aloareaU VVsumaVV U.leiU :S (escriere
F6&+ bursaCtabel
1ip bursa (ESC64E6E
)ursaCsoc are 'aloarea !$$ .lei
)ursaCmer are 'aloarea X$$ .lei
Clauza OPE6E
Sintaxa: OPE6E e,presieClogica
Ex.6. SELEC1 nume, grupa, codspec
F6&+ studentiCtabel
OPE6E an Y =7
&peratori de comparare/ (Z )mai mic, (ZY) mai mic sau egal, ([) mai mare, ([Y) mai mare sau egal,
(Z[, \Y, ]Y) di-erit.
;K"
Condi2ii compuse/ (:5(, &6, 5&1).
&peratorul )E1OEE5
Sintaxa: e,presie )E1OEE5 'aloare.min :5( 'aloare.ma,
Ex. 7. SELEC1 nume, an, punctaj
F6&+ studentiCtabel
OPE6E punctaj )E1OEE5 *$$$ :5( =$$$7
&peratorul 45
Sintaxa: e,presie 45 ('alC!, 'alC*, 'alC;,..., 'alCn)
Ex. 8. SELEC1 nume, dataCnastere
F6&+ studentiCtabel
OPE6E grupa 45 (!!;, !!=, !!^)
&peratorul 45 ignor 'alorile nule din list.
9entru a putea -olosi .n clauza OPE6E %iruri de caractere %i date calendaristice, acestea trebuie
introduse .ntre g<ilimele simple (U U), singura e,cep2ie -iind constantele numerice.
Ex.9. 0 listeaz to2i angaja2ii care sunt pe pozi2ia de contabil/
SELEC1 S
F6&+ angajatiCtabel
OPE6E -unctie Y UC&51:)4LU
Ex.10. 0 listeaz to2i angaja2ii care au data de angajare !#3dec3!""$/
SELEC1 S
F6&+ angajatiCtabel
OPE6E dataCangajareYU!#3dec3!""$U
Ex.11. 0 listeaz to2i angaja2ii care sunt .n departamentul !$/
SELEC1 S
F6&+ angajatiCtabel
OPE6E nrCdept Y !$
&peratorul L4>E
(ac nu se cunoa%te 'aloarea e,act cutat, cu ajutorul condi2iei L4>E putem s selectm
rnduri care se potri'esc cu un model speci-icat de caractere. 9entru construirea modelului %irului
cutat pot -i -olosite dou simboluri/
_ 3 orice sec'en2 de $ sau mai multe caractere7
C 3 un singur caracter.
Ex.12. 0 listeaz to2i angaja2ii al cror nume .ncepe cu litera S/
SELEC1 S
F6&+ angajatiCtabel
OPE6E nume L4>E US_U
Ex.13. 0 listeaz to2i angaja2ii care au numele din = caractere/
SELEC1 S
F6&+ angajatiCtabel
OPE6E nume L4>E UC C C CU
Ex.14. 0 listeaz to2i angaja2ii care au al doilea caracter din nume U&U/
=K"
SELEC1 S
F6&+ angajatiCtabel
OPE6E nume L4>E UC&_U
Condi2ia 4S 58LL
9entru a 'eri-ica 'alori de tip 58LL e,ist condi2ia 4S 58LL sau negarea acesteia 4S 5&1
58LL.
& 'aloare nul nu este la -el cu $ care este un numr. (ac 'aloarea 58LL este utilizat .ntr3o
compara2ie, trebuie s se -oloseasc 4S 58LL sau 4S 5&1 58LL, alt-el rezultatul este .ntotdeauna
F:LSE.
Ex.15. 0 listeaz to2i angaja2ii care nu au comision/
SELEC1 S
F6&+ angajatiCtabel
OPE6E comision 4S 58LL
5egarea e,presiilor/
&perator Semni-ica2ie
\Y
di-erit de... ]Y
Z [
5&1 )E1OEE5 nu se a-l .ntre cele * 'alori...
5&1 45 nu se a-l .n lista...
5&1 L4>E di-erit de %irul ...
4S 5&1 58LL nu este o 'aloare nul
9rioritate de e,ecu2ie/
!. operatorii aritmetici7
*. operatorii de concatenare7
;. condi2iile de comparare7
=. 4S 58LL, L4>E, 457
@. )E1OEE57
^. operatorul logic 5&17
#. operatorul logic :5(7
X. operatorul logic &6.
(ar ordinea se poate modi-ica dac se -olosesc paranteze.
Clauza &6(E6 )Q
Cu ajutorul clauzei &6(E6 )Q rndurile 'or -i a-i%ate .n ordinea solicitat (cu toate acestea nu
se 'a modi-ica ordinea intern a rndurilor din baza de date). Ea trebuie s -ie ultima clauz din cerere.
Sintaxa: SELEC1 numeCcoloan
F6&+ numeCtabel
OPE6E condi2ie &6(E6 )Q `coloan, e,presiea
M:SCK(ESN7
Ex.16. 0 listeaz to2i angaja2ii ordonndu3i dup data angajrii (.n ordine descresctoare)
SELEC1 S
F6&+ angajatiCtabel
&6(E6 )Q dataCangajare (ESC7
@K"
6ndurile pot -i ordonate dup mai multe coloane. 5umrul ma,im de coloane dup care se pot ordona
rndurile este numrul ma,im de coloane e,istente .n tabel.
Comenzi pentru actualizarea bazelor de date
SQL prezint comenzi speci-ice pentru modi-icarea con2inutului unui tabel, .n2elegnd prin
aceasta trei ac2iuni prin care se actualizeaz baza de date/
3 adugarea de noi linii la cele e,istente .ntr3un tabel7
Comanda utilizat pentru adugarea de .nregistrri este 45SE61 cu -ormatul/
45SE61
451& numeCtabel (list de cmpuri)
?:L8ES (list de 'alori)
Ex.17. 45SE61
451& clientiCtabel (CodClient, 5umeClient, :dresaClient)
?:L8ES (!$$", B89)3S6LD, Dspl.4ndep.;!;D)
9entru o utilizare mai u%oar putem -olosi comanda (ESC64)E clientiCtabel care 'a a-i%a cmpurile
tabelului .n ordinea lor, precum %i tipul -iecrui cmp.
3 %tergerea unor linii e,istente7
btergerea uneia sau mai multor .nregistrri se realizeaz prin comanda (ELE1E care are
sinta,a/
(ELE1E
F6&+ numeCtabel
OPE6E condi2ie
Ex.18. (ELE1E
F6&+ clientiCtabel
OPE6E CodClientY!$$;
3 modi-icarea 'alorii unui atribut.
Comanda utilizat este 89(:1E care are -ormatul general/
89(:1E numeCtabel
SE1 atribut Y e,presie
OPE6E condi2ie
+odi-icarea se 'a produce pentru toate liniile tabelului care .ndeplinesc condi2ia speci-icat.
Ex.19. 89(:1E -acturiCtabel
SE1 ?aloare1otala Y ;$$$
OPE6E 5rFactura Y !!**
Func2ii
Func2iile se clasi-ic .n dou tipuri/
3 -unc2ii re-eritoare la o singur .nregistrare (LC:SE() 0 con'erte%te caracterele din mari
.n mici, 8C:SE() 0 con'erte%te caracterele din mici .n mari, C&5C:1() 0 ec<i'alent
cu operatorul de concatenare VV, LE5() 0 returneaz numrul de caractere etc.)7
3 -unc2ii re-eritoare la mai multe .nregistrri (:?A() 0 'aloarea medie, C&851() 0
numrul de rnduri, +:J(), +45(), S8+() etc).
^K"
Func2iile re-eritoare la o singur .nregistrare returneaz un singur rezultat pentru -iecare rnd al
tabelului, pe cnd -unc2iile re-eritoare la mai multe .nregistrri returneaz un singur rezultat pentru
-iecare grup de .nregistrri din tabel.
Ex.20. SELEC1 :?A(salariu), +:J (salariu), +45(salariu)
F6&+ angajatiCtabel
OPE6E -unctie Y U?:5G:1&6U
Comenzi pentru descrierea datelor
Comanda C6E:1E 1:)LE creeaz un tabel 'id, cu o anumit structur. (e e,emplu/
Ex.21.
C6E:1E 1:)LE CL4E514
(CodClient 451(#) 5&1 58LL,
5umeClient CP:6(*@) 5&1 58LL,
:dresaCLient CP:6(*@),
Cod9ostal 451(=) 5&1 58LL (EF:8L1 !!$$,
964+:6Q >EQ(CodClient)
:tributul CodClient este de tip 451, 'aloarea sa -iind reprezentat pe %apte pozi2ii. Celelalte
atribute con2in %iruri de caractere. ?alorile pentru CodClient, 5umeClient %i Cod9ostal nu pot -i nule.
9entru Cod9ostal 'aloarea implicit, pe care o ia automat la adugarea unei linii .n tabelul CL4E514,
este !!$$.
Rn calitate de c<eie primar a rela2iei a -ost in'estit atributul CodClient.
Cele mai multe dialecte SQL admit urmtoarele tipuri de date/
1EJ1
CP:6(S4GE) bir de caractere de lungime (S4GE)
?:6CP:6(S4GE) bir de caractere de lungime 'ariabil
145Q1EJ1 bir de caractere (Z*@@ caract.)
1EJ1 bir de caractere de lungime ma,im ^@@;@ caract.
)L&) )inary Large &)jects
+E(48+1EJ1
+E(48+)L&)
L&5A1EJ1
L&5A)L&)
E58+
58+E64C
145Q451(S4GE) 5umere .ntregi 3!*X/!*# ($/*@@ 85S4A5E()
S+:LL451(S4GE) 3;*#^X/;*#^# ($/^@@;@ 85S4A5E()
+E(48+451(S4GE)
451(S4GE)
)4A451(S4GE)
FL&:1(S4GE, () 5umere reale cu 'irgul mobil cu (S4GE) numr total de
pozi2ii, din care ( la partea -rac2ionar.
(&8)LE(S4GE, ()
(EC4+:L(S4GE, ()
(:1c
(:1E() Format QQQQ3++3((
(:1E14+E() Format QQQQ3++3(( PP/++/SS
14+E() PP/++/SS
QE:6()
#K"
E,ist posibilitatea adugrii ulterioare a unui nou atribut la cele e,istente, %tergerii unui atribut
sau de modi-icare a tipului sau lungimii sale. &pera2iunea nu este att de -rec'ent -iind recomandabil
s se des-%oare ct mai rar7 o bun analiz des-%urat .n -aza de proiectare a bazei de date elimin, de
obicei, acest gen de probleme.
(ac .n tabelul CL4E514 se dore%te pstrarea %i a codului -iscal al -iecrui -urnizor, este
necesar adugarea atributului CodFiscal, care este un %ir de caractere de lungime X. Comanda utilizat
este/
Ex.22.
:L1E6 1:)LE CL4E514
:(( CodFiscal CP:6(X)
C<eile strine sunt declarate cu ajutorul op2iunii F&6E4A5 >EQ. 9entru tabelul
F:C1864CE+4SE c<eie primar este atributul 5rFactura, .n timp ce CodClient este c<eie strin ctre
tabelul CL4E514.
Ex.23.
C6E:1E 1:)LE F:C1864CE+4SE
(5rFactura (EC4+:L(X) 5&1 58LL,
(ataFactura (:1E,
CodClient (EC4+:L(#) 5&1 58LL,
?aloare1otala (EC4+:L(!#) 5&1 58LL,
1?: (EC4+:L(!=),
964+:6Q >EQ(5rFactura)
F&6E4A5 >EQ(CodClienti) 6EFE6E5CES CL4E514)
btergerea unui tabel din baza de date este realizabil cu ajutorul comenzii (6&9 1:)LE. (e
obicei aceast comand se utilizeaz atunci cnd pe parcursul lucrului s3au creat tabele intermediare,
temporare.
L&453864
9entru a prelucra date din mai multe tabele, -orma de baz a unei instruc2iuni SELEC1 const
.n adugarea unei condi2ii de legtur (L&45) .n clauza OPE6E.
Ex.24.
SELEC1 table!.column, table*.column
F6&+ table!, table*
OPE6E table!.column Y table*.column
5umele coloanei trebuie pre-i,at de numele tabelului .n situa2iile cnd acela%i nume de coloan
apare .n mai multe tabele.
8n L&45 cu dou sau mai multe tabele care returneaz doar linii ce au 'alori ec<i'alente pentru
coloanele speci-icate este denumit S4+9LE L&45 sau 455E6 L&45.
Ex.25.
SELEC1 column.name
F6&+ tableCname! 455E6 L&45 tebleCname*
&5 tableCname!.columnCname Y tableCname*.column.name7
:tunci cnd un L&45 returneaz att liniile care se potri'esc ct %i cele care nu se potri'esc,
acesta se nume%te &81E6 L&45.
E,ist trei tipuri de &81E6 L&45/
3 LEF1 &81E6 L&45
XK"
Ex.26. 0 sunt a-i%a2i %i acei angaja2i care nu au desemnat un idCdept/
SELEC1 a.nume, a.idCdept, d.denumire
F6&+ angajati a
LEF1 &81E6 L&45 departament d
&5 a.idCdept Y d.idCdept7
3 64AP1 &81E6 L&45
Ex.27. 0 sunt a-i%ate %i acele departamente care nu au angaja2i/
SELEC1 a.nume, a.idCdept, d.denumire
F6&+ angajati a
64AP1 &81E6 L&45 departament d
&5 a.idCdept Y d.idCdept7
3 F8LL &81E6 L&45
Ex.28. 0 sunt a-i%a2i %i acei angaja2i care nu au un departament %i acele departamente care nu au
angaja2i/
SELEC1 a.nume, a.idCdept, d.denumire
F6&+ angajati a
F8LL &81E6 L&45 departament d
&5 a.idCdept Y d.idCdept7
"K"

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