ce legatura are sql cu bazele de date

Upload: emanuela-marin

Post on 06-Jul-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    1/24

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    2/24

    Coloanan singur cimp dintr-un tabel.0oate tabelel sunt formate din una sau mai multe coloane.

    • Ce sunt tipurile de date?

    - Fiecare coloana dintr-o baza de date are asociat un tip de date.0ipul de date defineste ce fel de date poata sa contina

    coloana."e e(emplu,daca o coloana trebuie sa contina un numar&sa zicem numarul articolelor dintr-o comanda', datele

    vor fi de tip numeric. 0ip de date0ipul de date admis.Fiecare coloana dintr-un tabel are asociat un tip de date care

    interzice&sau perminte' coloanei sa contina anumite date 0ipul de date interzice stocarea anumitor date intr-o

    coloana&de e(emplu, interzice introducerea caracterelor alfanumerice intr-un cimp numeric '."e asemenea, el ajuta la

    sortarea corecta a datelor si joaca un rol important in optimizarea utilizarii hard-dis2ului."in acest considerent, in

     proiectarea tabelelor o atentie speciala trebuie acordata alegerii tipuli de date corect.

    • Ce sunt liniile?

    -3n tabele, datele sunt stocate pe linii$fiecare inregistrare este stocata pe linia ei"e e(emplu, un tabel cu cumparatori

     poate sa stocheze un singur cumparator pe o linie.1umarul de linii din tabel este egal cu numarul inregistrarilor din

    tabel.

    Linie! inregistrare dintr-un tabel .

    • Ce este cheia primara?

    -Fiecare linie din tabela trebuie sa aiba o coloana&sau o serie de coloane' care o identifica in mod unic. n tabel care

    contine cumparatori poate folosi in acest scop coloana cu identificatorii cumparatorilor, iar un tabel care contine

    comenzi poate folosi identificatorii comenzilor. 0abelul cu lista angajatilor poate folosi o coloana cu numerele de serie

    a legitimatiilor angajatilor sau cu numerele lor de asigurare sociala.

    Cheie primarana sau mai multe coloane ale caror valori identifica in mod unic toate liniile unui tabel.

    Coloana sau seria de coloane care identifica in mod unic toate liniile unui tabel se numeste cheie primara. Cheia

     primara este utilizata pentru a face referinte la o singura linie.Fara cheia primara, actualizarea sau stergerea de linii

    specifice devine foarte dificila, deoarece nu e(istanici o modalitate garantat sigura pentru a face referire numai la liniile

    ce vor fi afectate."esi cheile primare nu reprezinta o conditie necesara, cei mai multi designeri de baze de date se

    asigura ca toate tabelelel pe care le creaza au o cheie priamara, astfel incit viitoarea manipulare a datelor sa fie posibila

    si usor de efectuat. !rice coloana dintr-un tabel poate fi stabilata drept cheie primara, atita timp cit respecta urmatoarele

    conditii

    -"oua linii nu pot avea aceiasi valoare a cheii primare$

    -Fiecare linie trebuie sa aiba o valoare a cheii primare&coloana nu poate admite valori 1LL'$

    -Coloana care contine valorile cheilor primare nu poate fi niciodata modificata sau actualizata$

    -4alorile cheilor primare nu pot fi niciodata refolosite.&"aca o linie este stearsa din tabel, cheia ei nu poate fi atribuita

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    3/24

    altor linii noi.'

    "e obicei, cheile primare sunt definite intr-o singura coloana dintr-un tabel.5cest lucru nu este insa o conditie necesara

    si mai multe coloane pot fi utilizate impreuna drept cheie primara.5tunci cind se utilizeaza mai multe coloane, regulile

    enumerate mai sus trebuie aplicate tuturor coloanelor, iar valorile din toate coloanele considerate laolalta trebuie sa fie

    unice&coloanele individuale nu trebuie sa aiba valori unice'.

    • Ce inseamna SQL?

    -SQL este abrevierea de la la Structured Quer Language &Limbaj structurat de interogare', un limbaj conceput in mod

    special pentru comunicarea cu bazele de date. Spre deosebire de alte limbaje de programare, SQL se compune din

    foarte putine cuvinte.5cest fapt se e(plica prin faptul ca SQL este conceput pentru a face un lucru, si a-l face bine- sa

    asigure o modalitate simpla si eficienta de a citi si de a scrie o baza de date.

    • Care sunt avantajele limbajului SQL?

    -SQL nu este un limbaj brevetat, folosit de distributorii de baze de date individuale.5proape toate bazele de date

    importante accepta limbajul SQL, asa ca invatarea lui va permite sa interactionati cu ele.

    -SQL este usor de invatat.3nstructiunile lui sunt relativ putine si alcatuite din cuvinte descriptive&in limba engleza'.

    3n ciuda aparentei simplitati, SQL este un limbaj foarte puternic, cu care, daca-i utilizati cu inteligenta elementele,

     puteti efectua operatii comple(e si sofisticate cu bazele de date.

    C A P I T O L U L 2

    INTRODUCERE IN SQL

    5cest capitol realizeaza o introducere in limbajul de interogare utilizat pentru a accesa o baza dedate !racle. +ultimea comenzilor SQL sunt conturate ca blocuri de interogare de baza.3n

     particular, noi discutam declaratiile SQL folosite la

    • e(ecutia calculelor • specificarea alternativa a capetelor de coloana• concatenarea coloanelor • sortarea rindurilor • introducerea criteriilor de cautare.

    Priire de an!ambl" a!"pra SQL

    n sistem de management al bazei de date necesita un limbaj de interogare pentru a permiteutilizatorului sa acceseze datele.SQL &limbaj de interogare structurata' este limbajul utilizat demajoritatea sistemelor de baza de date relational.

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    4/24

    Limbajul SQL a fost dezvoltat intr-un prototip de sistem de management a bazelor de daterelationale - Sstem / -de 3%+ la mijlocul anilor 6789.3n 6787, Corporatia !racle introduce primaimplementare a SQL in varianta comerciala.

    Tra!at"ri #ara#teri!ti#e SQL

    • SQL este prezentat in limba engleza. Foloseste cuvintele select, insert,delete ca parti alesetului de comenzi.

    • SQL este un limbaj neprocedural specifica ce informatii doresti,nu cum sa le obtii.Cu altecuvinte SQL nu iti cere sa specifici metoda de acces la date.0oate cererile SQL folosescoptimizarea cererilor- o parte a /"%+S- pentru a determina rapid remedierea datelorspecifi- cate.5ceste trasaturi usureaza obtinerea rezultatelor dorite.

    • :rocesarea SQL asupra inregistrarilor nu se poate face decit asupra unei singure inregistrarila un moment dat.Cea mai comuna forma a unui set de inregistrari este un tabel.

    • SQL poate fi folosit de un sir de utilizatori incluzand "%5, programatori de aplicatii

    ,personal de management si multe alte tipuri de utilizatori.• SQL pune la dispozitie comenzi pentru o varietate de tascuri incluzand

    o date interogateo inserarea,e(tragerea si stergerea rindurilor intr-un tabel.o crearea,modificarea si stergerea obiectelor de tip baza de dateo controlul accesului la baza de date si la obiectele de tip baza de date.o garantarea consistentei bazei de date

    La inceput sistemele de management a bazei de date a utilizat un limbaj separat pentru fiecarecategorie in parte.SQL le-a unificat pe toate acestea intr-un singur limbaj.

    SQL a devenit un limbaj standard industrial pentru bazele de date relatio- nale . 3nstitutul 1ational5merican de Standarde&51S3' a adoptat SQL ca limbaj standard pentru /"%+S in anul67;

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    5/24

    5L0#/ utiliza si sterge orice structura de date,de e(emplu,tabele,

    "/!:e(puneri ,indecsi.le sunt cunoscute sub numele colectiv ""L sau comenzi ale limbajelorde definire a datelor'.

    /510aceste doua comenzi sunt utilizate pentru a da sau a lua

    /#4!>#drepturile de acces pentru bazele de date si structurile din !racle. 1.%. 5cestea sunt o parte a comenzilor SQL. :entru o lista mai completa de comenzi se recomanda- +anualul de /eferinta a Limbajului SQL- .

    S#rierea #omenzilor SQL

    Cand scriem comenzi SQL ,este important sa ne reamintim cateva reguli simple pentru construireaunor declaratii valide care sunt si usor de citit si de editat

    • Comenzile SQL pot fi pe una sau mai multe linii.• Clauzele sunt uzual plasate pe linii separate.• 0abelarea poate fi folosita.• Cuvintele de comanda nu pot fi separate pe mai multe linii.• Comenzile SQL nu sunt case sensitive.• ! comanda SQL este introdusa la promptul SQL si liniile subsecventelor sunt numarate.• ! singura declaratie poate fi considerata curenta cat timp ea este in buffer si poate fi rulata

    intr-un numar de moduri o  plasand un punct si virgula&$' la sfarsitul ultimei clauze.o  plasand un punct si virgula @slash la ultima linie in buffer.

    o  plasand un slash&@' la promptul SQL.o scriind un /A1B &comanda SQL' la promptul SQL.

     Fiecare din urmatoarele declaratii sunt valide:

      SELECT * FROM EMP;

      SELECT  *  FROM  EMP  ;

      SELECT *  FROM EMP;

      In acest manual comenzile SQL sunt sarte in clauze entru claritate! 

    Blo#"l de intero$are de baza

    "eclaratia S#L#C0 regaseste informatia din baza de date implementand toti operatorii din algebrarelationala .

    3n cele mai simple forme trebuie sa contina

    6. ! clauza S#L#C0 ,care listeaza coloanele pentru afisare astfel incat este esentiala o:roiectie.

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    6/24

    . ! clauza F/!+ care specifica tabela implicata.

     Pentru a lista toate numerele deartamentelor"numele an#a$atilor si

      numarul mana#erilor in ta%ela EMP introduceti urmatoarele:

      SELECT &EPT'O"E'(ME"M)R  FROM EMP;

      &EPT'O E'(ME M)R    +, SMIT- ./,+  0, (LLE' .1/2  0, 3(R& .1/2  +, 4O'ES .20/  0, M(RTI' .1/2  0, 5L(6E .20/  7, CL(R6 .20/  +, SCOTT .811  7, 6I')  0, T9R'ER .1/2  +, (&(MS ..22  0, 4(MES .1/2  +, FOR& .811  7, MILLER ..2+ 

    "e remarcat ca numele coloanelor sunt separate prin spatiu.

     Este osi%il sa selectam toate coloanele din ta%ela rin seciicarea

      unui asteri dua cuvantul SELECT !

      SELECT *  FROM EMP;

      EMP'O E'(ME 4O5 M)R -IRE&(TE S(L COMM &EPT'O    .01/ SMIT- CLER6 ./,+ 7049L20 2,,!,, +,  .?// (LLE' S(LESM(' .1/2 78(9)20 7"1,,!,, 0,,!,, 0,  .8+7 3(R& S(LESM(' .1/2 +1M(R2? 7"+8,!,, 8,,!,, 0,  .811 4O'ES M('()ER .20/ 07OCT20 +"/.8!,, +,  .18? M(RTI' S(LESM(' .1/2 ,8&EC20 7"+8,!,, 7!?,,!,, 0,  .1/2 5L(6E M('()ER .20/ 7749'2? +"28,!,, 0,  ..2+ CL(R6 M('()ER .20/ 7?M(@2? +"?8,!,, 7,  ..22 SCOTT ('(L@ST .811 ,8M(R2? 0",,,!,, +,  .20/ 6I') PRESI&E'T ,/49L2? 8",,,!,, 7,  .2?? T9R'ER S(LESM(' .1/2 ,?49'2? 7"8,,!,, !,, 0,

      .2.1 (&(MS CLER6 ..22 ,?49'2? 7"7,,!,, +,  ./,, 4(MES CLER6 .1/2 +049L2? /8,!,, 0,  ./,+ FOR& ('(L@ST .811 ,8&EC20 0",,,!,, +,

     

    Alte elemente in #la"za SELECT

    #ste posibil sa se includa si alte elemente in clauza S#L#C0.• #(presii aritmetice• 5lias-uri de coloane• Coloane concatenate• Literali

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    7/24

    0oate aceste optiuni ajuta utilizatorul sa ceara date si sa le manipuleze in functie de scopurileinterogarii $ de e(emplu,e(ecutia calculelor,legarea coloanelor impreuna,sau afisarea sirurilor delitere din te(t.

    E%pre!ii aritmeti#e

    ! e(presie este o combinatie de una sau mai multe valori,operatori si functii care sa evalueaza la ovaloare.

    #(presiile aritmetice pot contine nume de coloane ,valori numerice constante si operatoriaritmetici

      Oeratori &escriere    A adunare  scadere  * inmultire  B imartire

      SELECT E'(ME" S(L*7+" COMM  FROM EMP;

    "aca e(presia aritmetica contine mai mult decat un operator, prioritatile sunt D,@,la inceput,apoi =,-&de la stanga la dreapta pentru operatorii de aceeasi prioritate'.

    3n urmatorul e(emplu,inmultirea &E9D6' este evaluata prima$apoi valoarea salariului este adunatala rezultatul multiplicarii&999'. 5stfel pentru randul lui S+30G avem ;99=999H;99.

     

    SELECT E'(ME"S(L A +8, * 7+  FROM EMP; 

    :arantezele pot fi utilizate pIntru specificarea ordinii de e(ecutie a operatorilor ,daca,de e(emplu,adunarea e dorita inainte de inmultire

     SELECT E'(ME" * 7+

      FROM EMP; 

    Alia!"ri de #oloana

    Cand se afiseaza rezultatul unei interogari,SQLD:lus in mod normal utilizeaza numele coloanelorselectate ca titlu.3n multe cazuri acest nume poate fi criptic sau fara inteles.

    :uteti schimba un titlu de coloana utilizand un 5L35S.

    n alias de coloana da unei coloane un nume de titlu alternativ la iesire.

    Specificati aliasul dupa coloana in lista selectata.:rin default, titlurile alias vor fi fortate la litere

    mari si nu pot contine blan2uri,numai daca aliasul este inclus intre ghilimele&J J'.

    :entru a afisa titlul de coloana 511S5L pentru salariul anual insemnand S5LD6,utilizati un aliasde coloana

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    8/24

     SELECT E'(ME"S(L*7+ (''S(L"COMM

      FROM EMP; 

    !data definit ,un alias poate fi utilizat de comenzile SQL care sunt tratate in capitolele 69 si 66.

    Nota&

    Intr'o de#laratie SQL ("n ali! de #oloana poate )i "tilizat n"mai in #la"za SELECT*

    Operator"l de #on#atenare

    !peratorul de concatenare &KK' permite coloanelor sa fie legate cu alte coloane,e(presiilor aritmeticesau valorilor constante sa creeze o e(presie de caractere.

    Coloanele din cealalta parte a operatorului sunt combinate pentru a obtine o singura coloana.

    :entru a combina #+:1! si #15+# si sa se dea aliasul #+:L!## e(presiei, introduceti

     SELECT EMP'OE'(ME EMPLO@EE

      FROM EMP;

      EMPLO@EE    .01/SMIT-  .?//(LLE'  .8+73(R&  .8114O'ES  .18?M(RTI'  .1/25L(6E  ..2+CL(R6  ..22SCOTT  .20/6I')  .2??T9R'ER  .2.1(&(MS  ./,,4(MES  ./,+FOR&  ./0?MILLER 

    Literali

    n literal este orice caracter ,e(presie ,numar inclus in lista lui S#L#C0 care nu este un nume decoloana sau un alias de coloana.

    n literal in lista lui S#L#C0 este reprezentat de fiecare rand returnat la iesire.Sirurile de literalidintr-un te(t cu un format oarecare pot fi incluse in rezultatul interogarii si sunt tratate ca o coloanalista selectata.

    Literalii de tip data calendaristica si caracter pot fi inchisi intre ghilimele simple&'$literlalii de tipnumar nu au nevoie de ghilimele simple&'.

    rmatoarea declaratie contine literali selectati prin concatenare si printr-un alias de coloana

     SELECT EMP'O==E'(ME EMPLO@EE"

      =3OR6S I' &EP(RTME'T="

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    9/24

      &EPT'O  FROM EMP;

      EMPLO@EE =3OR6S I' &EP(RTME'T= &EPT'O    .01/SMIT- 3OR6S I' &EP(RTME'T +,  .?//(LLE' 3OR6S I' &EP(RTME'T 0,  .8+73(R& 3OR6S I' &EP(RTME'T 0,  .8114O'ES 3OR6S I' &EP(RTME'T +,

      .18?M(RTI' 3OR6S I' &EP(RTME'T 0,  .1/25L(6E 3OR6S I' &EP(RTME'T 0,  ..2+CL(R6 3OR6S I' &EP(RTME'T 7,  ..22SCOTT 3OR6S I' &EP(RTME'T +,  .20/6I') 3OR6S I' &EP(RTME'T 7,  .2??T9R'ER 3OR6S I' &EP(RTME'T 0,  .2.1(&(MS 3OR6S I' &EP(RTME'T +,  ./,,4(MES 3OR6S I' &EP(RTME'T 0,  ./,+FOR& 3OR6S I' &EP(RTME'T +,  ./0?MILLER 3OR6S I' &EP(RTME'T 7,

     

    Tratarea alorilor n"le

    "aca unui rand ii lipseste o valoare pentru o anumita coloana ,despre acea valoare se spune ca estenula.

    ! valoare nula este o valoare care este sau incorecta,sau necunoscuta,sau inaplicabila.! valoarenula nu este la fel ca zero.Mero este un numar.4aloarea nula ocupa un octet in reprezentareainterna.

    4aloarea nula este tratata corect de catre SQL.

    "aca orice valoare de coloana intr-o e(presie este nula atunci rezultatul este nul.3n urmatoareadeclaratie numai Salesman are un rezultat al salariului

     SELECT E'(ME"S(L*7+ A COMM (''9(LDS(L

      FROM EMP;

      E'(ME (''9(LDS(L    SMIT-

      (LLE' 7/8,,  3(R& 788,,  4O'ES  M(RTI' 71?,,  5L(6E  CL(R6  SCOTT  6I')  T9R'ER 72,,,  (&(MS  4(MES  FOR&  MILLER

     

    "aca dorim sa obtinem un rezultat pentru toti angajatii,este necesar sa convertim valoarea nula laun numar . 1oi folosim functia 14L pentru a converti o valoare nula la o valoare nenula.

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    10/24

    Folositi functia 14L pentru a converti valoarea nula de la declaratia precedenta la 9.

     SELECT E'(ME" S(L*7+A'L

      'L 

    Preenirea !ele#tiei rind"rilor d"pli#ate

    "aca nu se indica altfel, SQLD:lus afiseaza rezultatul unei interogari fara eliminarea intrarilor

    duplicate .:entru a lista toate numerele de departament din tabela #+:, introduceti

     SELECT &EPT'O

      FROM EMP;

      &EPT'O    +,  0,  0,  +,  0,  0,  7,  +,

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    11/24

      7,  0,  +,  0,  +,  7,

     

    Cla"za DISTINCT

    :entru eliminarea valorilor duplicate din rezultat, includeti restrictia "3S031C0 in comandaS#L#C0.

    :entru a elimina valorile duplicate afisate in e(emplul urmator introduceti

     SELECT &ISTI'CT &EPT'O

      FROM EMP;

      &EPT'O

        7,  +,  0, 

    Coloane multiple pot fi specificate dupa restrictia "3S031C0 si restrictia "3S031Ct afecteaza toatecoloanele selectate.

    :entru a afisa valorile distincte ale lui "#:01! si N!%,introduceti

      SELECT &ISTI'CT &EPT'O"4O5  FROM EMP;

      &EPT'O 4O5    7, CLER6  7, M('()ER  7, PRESI&E'T  +, ('(L@ST  +, CLER6  +, M('()ER  0, CLER6

      0, M('()ER  0, S(LESM(' 

    5ceasta afiseaza o lista a tuturor combinatiilor diferite de ocupatie si numere de departamente.

    "e notat ca restrictia "3S031C0 poate sa fie referita numai o singura data si trebuie sa urmezeimediat dupa cuvantul de comanda S#L#C0.

    Cla"za ORDER B+

    3n mod normal ordinea rindurilor intoarse in rezultatul unei cereri este nedefinita .Clauza !/"#/% poate fi utilizata pentru a sorta rindurile.

    "aca o folosim, clauza !/"# % trebuie sa fie intotdeauna ultima in declaratia S#L#C0.

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    12/24

    :entru a sorta dupa #15+#, introduceti

     SELECT E'(ME"4O5"S(L*7+"&EPT'O

      FROM EMP  OR&ER 5@ E'(ME;

      E'(ME 4O5 S(L*7+ &EPT'O    (&(MS CLER6 70+,, +,  (LLE' S(LESM(' 7/+,, 0,  5L(6E M('()ER 0?+,, 0,  CL(R6 M('()ER +/?,, 7,  FOR& ('(L@ST 01,,, +,  4(MES CLER6 77?,, 0,  4O'ES M('()ER 08.,, +,  6I') PRESI&E'T 1,,,, 7,  M(RTI' S(LESM(' 78,,, 0,  MILLER CLER6 781,, 7,  SCOTT ('(L@ST 01,,, +,  SMIT- CLER6 /1,, +,  T9R'ER S(LESM(' 72,,, 0,  3(R& S(LESM(' 78,,, 0, 

    Ordonarea de de)a"lt a datelor

    !rdinea sortarii de default este ascendenta• 4alorile numerice cele mai mici primele• 4alorile de tip date calendaristice cele mai mici primele.• 4alorile de tip caracter in ordinea alfabetica.

    Iner!area ordinii de de)a"lt

    :entru a inversa aceasta ordine cuvintul de comanda "#SC este specificat dupa numele coloanei inclauza !/"#/ %.

    :entru a inversa ordinea coloanei G3/#"50#, deci datele cele mai tirzii sa fie afisate primele,introduceti

     SELECT E'(ME"4O5"-IRE&(TE

      FROM EMP

      OR&ER 5@ -IRE&(TE &ESC;

      E'(ME 4O5 -IRE&(TE    4(MES CLER6 +049L2?  6I') PRESI&E'T ,/49L2?  5L(6E M('()ER 7749'2?  T9R'ER S(LESM(' ,?49'2?  (&(MS CLER6 ,?49'2?  CL(R6 M('()ER 7?M(@2?  3(R& S(LESM(' +1M(R2?  SCOTT ('(L@ST ,8M(R2?

      M(RTI' S(LESM(' ,8&EC20  FOR& ('(L@ST ,8&EC20  MILLER CLER6 +7'O20  4O'ES M('()ER 07OCT20  (LLE' S(LESM(' 78(9)20  SMIT- CLER6 7049'20

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    13/24

     

    Ordonarea d"pa mai m"lte #oloane

    #ste posibil sa se ordoneze dupa mai multe coloane.Limita este numarul de coloane din tabela.3nclauza !/"#/ % se specifica coloanele pentru ordonat separate prin virgula."aca una sau toatecoloanele trebuie sa fie inversate specificati "#SC dupa fiecare coloana.

    :entru a ordona dupa doua coloane si afisa in ordinea inversa a salariului, introduceti

     SELECT &EPT'O"4O5"E'(ME

      FROM EMP  OR&ER 5@ &EPT'O"S(L &ESC;

      &EPT'O 4O5 E'(ME    7, PRESI&E'T 6I')

      7, M('()ER CL(R6  7, CLER6 MILLER  +, ('(L@ST SCOTT  +, ('(L@ST FOR&  +, M('()ER 4O'ES  +, CLER6 (&(MS  +, CLER6 SMIT-  0, M('()ER 5L(6E  0, S(LESM(' (LLE'  0, S(LESM(' T9R'ER  0, S(LESM(' 3(R&  0, S(LESM(' M(RTI'  0, CLER6 4(MES

     

    :entru a ordona dupa o coloana nu este necesar sa o avem S#L#C0-ata.

    ORDER B+ !i alorile n"le

    3n !racle8,valorile nule sunt afisate ultimele pentru secventele ascendente si sint raportate primelecind rindurile sunt sortate in ordine descendenta.

    5tentie

    Clauza !/"#/ % este utilizata intr-o interogare cind se doreste sa se afiseze rindurile intr-oordine specifica .Fara clauza !/"#/ % randurile sunt returnate intr-o ordine convenita de!/5CL# si va trebui sa ne bazam pe el- ordinea determinata fiind consistenta de la cerere lacerere."e notat ca ordinea de afisare a rindurilor nu influenteaza ordinea interna a rindurilor asacum sunt stocate in tabela.

    Cla"za ,-ERE

    Clauza OG#/# corespunde operatorului /estrictie din algebra relationala.

    Contine o conditie pe care rindurile trebuie sa o indeplineasca in ordinea afisarii lor.

    Clauza OG#/# ,daca este folosita , trebuie sa urmeze clauzei F/!+

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    14/24

     SELECT coloane

      FROM ta%ela  3-ERE anumite conditii sunt intilnite 

    Clauza OG#/# poate compara valori in coloana ,valori literale,e(presii aritmetice sau functii.

    Clauza OG#/# asteapta trei elemente

    6. n nume de coloana. n operator de comparatie. n nume de coloana, constanta sau lista de valori.

    !peratorii de comparatie sunt utilizati in clauza OG#/# si pot fi impartiti in doua categorii logicisi SQL.

    Operatorii lo$i#i

    5cesti operatori verifica urmatoarele conditii

      Oerator Semniicatie    e#al cu  G mai mare decit  G mai mare sau e#al  H mai mic decit  H mai mic sau e#al

    Sir"rile de #ara#tere !i datele #alendari!ti#e in #la"za ,-ERE

    Coloanele din !/5CL# pot avea urmatoarele tipuricaracter,numar sau data calendaristica.

    Sirurile de caractere si datele calendaristice din clauza OG#/# trebuie sa fie inchise in ghilimelesimple&'. Sirurile de caractere trebuie sa se supra- puna cu valoarea coloanei daca nu, trebuiemodificate de o functie. tilizati JFunctii pe CaractereJ din capitolul P.

    :entru a afisa numele,numerele,ocupatia si departamentele tuturor functionarilor, introduceti

      SELECT E'(ME" EMP'O" 4O5" &EPT'O  FROM EMP  3-ERE 4O5 =CLER6=;

      E'(ME EMP'O 4O5 &EPT'O    SMIT- .01/ CLER6 +,  (&(MS .2.1 CLER6 +,  4(MES ./,, CLER6 0,  MILLER ./0? CLER6 7, 

    :entru a gasi toate numele de departamente cu numerele de departament mai mare ca 9,introduceti

     SELECT &'(ME" &EPT'O

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    15/24

      FROM &EPT  3-ERE &EPT'O G+,;

      &'(ME &EPT'O    S(LES 0,  OPER(TIO'S ?,

    Compararea "nei #oloane #" alta in #adr"l a#el"ia!i rand

    :uteti compara o coloana cu o alta coloana in acelasi rand,la fel ca si cu o valoare constanta.

    "e e(emplu ,presupunem ca dorim sa obtinem acei angajati al caror comision estI mai mare decatsalariul lor

    SELECT E'(ME" S(L" COMM  FROM EMP  3-ERE COMMG S(L;

      E'(ME S(L COMM    M(RTI' 7"+8,!,, 7"?,,!,, 

    Operatori SQL

    Sint patru operatori SQL care opereaza pe toate tipuril de date  Oeratori SQL

      Oerator Semniicatie    5ET3EE'!!('&!!! intre doua valori  I' comara cu o lista de valori  LI6E comara cu un model de ti caracter  IS '9LL est o valoare nula

    Operator"l BET,EEN

    /ealizeaza teste pentru valori intre,si inclusiv,o valoare minima si o valoare ma(ima.

    :resupunind ca dorim sa vedem angajatii ai caror salariu este intre 6999 si 999

     SELECT E'(ME"S(L

      FROM EMP  3-ERE S(L 5ET3EE' 7,,, ('& +,,,;

      E'(ME S(L    (LLE' 7"1,,!,,  3(R& 7"+8,!,,  M(RTI' 7"+8,!,,  T9R'ER 7"8,,!,,  (&(MS 7"7,,!,,

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    16/24

      MILLER 7"0,,!,, 

    "e notat ca valorile specificate sunt inclusive si ca limita minima trebuie specificata prima.

    Operator"l IN

    0esteaza valorile dintr-o lista specificata.

    :resupunem ca dorim sa gasim angajatii care au unul din cele trei numere de marca&+/'

     SELECT EMP'O" E'(ME" S(L" M)R

      FROM EMP  3-ERE M)R I' ;

      EMP'O E'(ME S(L M)R 

      .01/ SMIT- 2,,!,, ./,+  ..22 SCOTT 0",,,!,, .811  .2.1 (&(MS 7"7,,!,, ..22  ./,+ FOR& 0",,,!,, .811 

    "aca, caracterele sau datele calendaristice sunt utilizate,ele trebuie introduse intre ghilimele& '.

    Operator"l LI.E

    neori nu se cunosc valorile e(acte pe care le cautam.tilizand operatorul L3># este posibil saselectam randurile care se potrivesc cu un model specificat de caractere.!peratia de petter-

    matching a caracterelor poate fi asemanata cu o cautare *ild-card."oi simboli se pot utiliza laconstruirea sirului de cautare.  Sim%ol Rerezentare    J orice secventa de zero sau mai multe caractere  un sin#ur caracter oarecare

    :entru a lista toti angajatii al caror nume incepe cu un S,introduceti 

    SELECT E'(ME  FROM EMP  3-ERE E'(ME LI6E =SJ=;

      E'(ME    SMIT-  SCOTT

    Caracterul poate fi utilizat pentru cautarea unui anumit numar de carac- tere.

    "e e(emplu pentru a lista toti angajatii care au un nume e(act de patru caractere lungime

     SELECT E'(ME

      FROM EMP  3-ERE E'(ME LI6E =DDDD=;

      E'(ME    3(R&  6I')  FOR&

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    17/24

    Semnele R si pot fi utilizate in orice combinatie de caractere.

    Operator"l IS NULL

    !peratorul 3S 1LL face teste specifice pentru valorile care sunt 1LL. 

    SELECT E'(ME"M)R  FROM EMP  3-ERE M)R IS '9LL;

      E'(ME M)R    6I')

    Ne$area e%pre!iilor

      9rmatorii oeratori ac teste de ne#atie:

      Oerator &escriere

        K dierit de  dierit de  HG dierit de  'OT '9MECOL dierit de  'OT '9MECOLG mai mic sau e#al

      Oeratori SQL

      Oerator &escriere    'OT 5ET3EE' nu se ala intre doua valori date  'OT I' nu se ala intro lista data de valori  'OT LI6E dierit de sirul  IS 'OT '9LL nu este o valoare nula

    :entru a gasi angajatii ai caror salariu nu este intr-un interval,introdu- ceti 

    SELECT E'(ME"S(L  FROM EMP  3-ERE S(L 'OT 5ET3EE' 7,,, ('& +,,,;

      E'(ME S(L    SMIT- 2,,!,,  4O'ES +"/.8!,,  5L(6E +"28,!,,

      CL(R6 +"?8,!,,  SCOTT 0",,,!,,  6I') 8",,,!,,  4(MES /8,!,,  FOR& 0",,,!,,

     Pentru a ala acei an#a$ati a caror meserie nu incee cu M"introduceti:

     SELECT E'(ME"4O5

      FROM EMP  3-ERE 4O5 'OT LI6E =MJ=;

      E'(ME 4O5    SMIT- CLER6  (LLE' S(LESM('  3(R& S(LESM('  M(RTI' S(LESM('  SCOTT ('(L@ST

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    18/24

      6I') PRESI&E'T  T9R'ER S(LESM('  (&(MS CLER6  4(MES CLER6  FOR& ('(L@ST  MILLER CLER6 

    Pentru a ala toti an#a$atii care au un mana#er"introduceti:

    SELECT E'(ME"M)R  FROM EMP  3-ERE M)R IS 'OT '9LL;

      E'(ME M)R    SMIT- ./,+  (LLE' .1/2  3(R& .1/2  4O'ES .20/  M(RTI' .1/2  5L(6E .20/  CL(R6 .20/

      SCOTT .811  T9R'ER .1/2  (&(MS ..22  4(MES .1/2  FOR& .811  MILLER ..2+ 

    Nota&

    Da#a o aloare NULL e!te "tilizata intr'o #omparatie (at"n#i operator"l de #omparatie

    treb"ie !a )ie IS !a" IS NOT NULL* Da#a a#e!ti operatori n" !"nt "ti lizati !i aloarea NULL

    e!te #omparata(at"n#i rez"ltat"l e!te intotdea"na /ALSE

    De e%empl"( CO001NULL e!te intotdea"na )al!a*Rez"ltat"l e!te )al! deoare#e o aloare

    NULL poate !a n" )ie e$ala !a" di)erita #" ori#e alta aloare alta de#at NULL*

    De notat #a o a!t)el de eroare n" e!te !emnalata(rez"ltat"l )iind intotdea' "na )al!*

    Intero$area datelor #" #onditii m"ltiple

    !peratorii 51" sau !/ pot fi utilizati pentru a compune e(presii logice.

    :redicatul 51" este adevarat numai daca ambele conditii sunt adevarate$ predicatul !/ esteadevarat daca cel putin una din conditii este adevarata.

    3n urmatoarele doua e(emple,conditiile sunt aceleasi,dar predicatele difera :riviti cum rezultatuleste dramatic modificat.

     Pentru a #asi toti unctionarii care casti#a intre

      7,,, si +,,,"introduceti:

      SELECT EMP'O"E'(ME"4O5"S(L  FROM EMP  3-ERE S(L 5ET3EE' 7,,, ('& +,,,  ('& 4O5 =CLER6=;

      EMP'O E'(ME 4O5 S(L 

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    19/24

      .2.1 (&(MS CLER6 7"7,,!,,  ./0? MILLER CLER6 7"0,,!,,

      Pentru a ala toti an#a$atii care sunt si unctionari siBsau  unctionari care casti#a intre 7,,, si +,,,"introduceti:

      SELECT EMP'O"E'(ME"4O5"S(L  FROM EMP  3-ERE S(L 5ET3EE' 7,,, ('& +,,,  OR 4O5 =CLER6=;

      EMP'O E'(ME 4O5 S(L    .01/ SMIT- CLER6 2,,!,,  .?// (LLE' S(LESM(' 7"1,,!,,  .8+7 3(R& S(LESM(' 7"+8,!,,  .18? M(RTI' S(LESM(' 7"+8,!,,  .2?? T9R'ER S(LESM(' 7"8,,!,,  .2.1 (&(MS CLER6 7"7,,!,,  ./,, 4(MES CLER6 /8,!,,  ./0? MILLER CLER6 7"0,,!,,

    :uteti combina 51" sau !/ in acceasi e(presie logica. Cand 51" sau !/ apar in aceeasi clauzaOG#/#, toti operatorii 51" sunt evaluati mai intai si apoi toti operatorii !/. 4om spune caoperatorii 51" au o precedenta mai mare decat !/.

    "eoarece 51" are o precedenta mai mare decat !/ urmatoarea declaratie SQL intoarce totimanagerii cu salarii peste 6E99 si toti vanzatorii.

     SELECT EMP'O"E'(ME"4O5"S(L"&EPT'O

      FROM EMP  3-ERE S(LG 78,,  ('& 4O5 =M('()ER=

      OR 4O5 =S(LESM('=;

      EMP'O E'(ME 4O5 S(L &EPT'O    .?// (LLE' S(LESM(' 7"1,,!,, 0,  .8+7 3(R& S(LESM(' 7"+8,!,, 0,  .811 4O'ES M('()ER +"/.8!,, +,  .18? M(RTI' S(LESM(' 7"+8,!,, 0,  .1/2 5L(6E M('()ER +"28,!,, 0,  ..2+ CL(R6 M('()ER +"?8,!,, 7,  .2?? T9R'ER S(LESM(' 7"8,,!,, 0,

      &aca doriti sa selectati toti mana#erii si vanzatorii

      cu salarii este 78,,N uteti introduce:

      SELECT EMP'O"E'(ME"4O5"S(L"&EPT'O  FROM EMP  3-ERE S(L G78,,  ('& ;

      EMP'O E'(ME 4O5 S(L &EPT'O    .?// (LLE' S(LESM(' 7"1,,!,, 0,  .811 4O'ES M('()ER +"/.8!,, +,  .1/2 5L(6E M('()ER +"28,!,, 0,

      ..2+ CL(R6 M('()ER +"?8,!,, 7,

    :arantezele specifica ordinea in care operatorii vor fi evaluati. 3n al doilea e(emplu operatorul !/este evaluat inaintea operatorului 51".

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    20/24

    TIPURI DE DATE CARACTER SI CONDITII

      E'(ME    DDDDDDDDDDD

      3-ERE E'(ME =SCOTT=   SCOTT   DDD  SCOTTDDDD    MILLER    

      Oracle nu face umlerea cu %lancuri la comararea  cu coloanele (RC-(R+

      E'(ME        SCOTT   3-ERE E'(ME =SCOTT= !!!!  SCOTT   !   MILLER  

      Oracle face umlerea cu %lancuri la comararea  cu coloanele C-(R!

    Tip"rile de date #ara#ter !i #onditii

    0ipurile de baza ale datelor stocate intr-o tabela oracle suntcaracter, valoare numerica sau datacalendaristica.4om discuta toate variantele in detaliu mai tarziu."e cate ori rezultatele unei conditiiimplica date de tip caracter, acestea pot varia in functie de tipul coloanei$!/5CL# inzestreazacoloanela cu tipul CG5/ pentru valori de lungime fi(a si cu tipul 45/CG5/ pentru valori de

    lungime variabila.

    :entru coloanele cu tipul 45/CG5/ ,!racle nu umple sirul de comparare si de aceea va face o potrivire e(acta.3n primul e(emplu,doar un singur rand este intors pentru conditia

    3-ERE E'(ME =SCOTT=

    cand un alt rand stocat in coloana #15+e are mai multe caractere decat sirul de comparat.

    :entru coloanele cu tipul CG5/ ,oricum,!raclI face umplere cand valorile coloanelor sunt initialstocate,facandu-le pe toate de aceeasi lungime.

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    21/24

    5ceeasi conditie va intoarce ambele randuri pentru SC!00 ,indiferent de cate spatii de sfarsit aufost adaugate cand valorile au fost stocate in tabela.

    !racle umple cu blancuri sirul de comparat in cel deal doilea caz si de aceea spatiile stocate suntnesemnificative.

    Pre#edenta operatorilor

    0oti operatorii sunt aranjati intr-o ierarhie ceea ce le determina precedenta .3ntr-o e(presie operatiilesunt e(ecutate in ordinea precedentei lor de la mare la mica.

    Cand operatorii au precedenta egala atunci ei se evalueaza de la stanga la dreapta.

    6. 0oti operatorii de comparatie si SQL au precedenta egala H,)H,T,U,TH,UH,%#0O##1...51",31,L3>#,3S 1LL.

    . 1!0&pentru a inversa rezultatul unei e(presii logice."e e( OG#/# not&salU999''. 51"

    P. !/."e fiecare data cand sunteti in dubiu despre care dintre doua operatii vor fi e(ecutate mai intai cando e(presie este evaluata, sunteti liberi sa utilizati parantezele pentru a clarifica semnificatia dorita si

     pentru a va asigura ca SQLD:lus face ceea ce doriti.

    Sa presupunem ca doriti sa gasiti toti managerii, din orice departament,si toti functionarii dindepartamentul 69

     SELECT *

      FROM EMP  3-ERE 4O5=M('()ER= OR ; 

    :arantezele de deasupra sunt necesare, 51" are o precedenta mai mare decat !/ ,dar ele clarificasemnificatia e(presiei.

    SELECT'S"mar

    rmatoarele clauze sunt inchise in comanda S#L#C0

     SELECT &ISTI'CT *"coloana alias"!!!

      FROM ta%ela  3-ERE conditie  OR&ER 5@ coloana"er (SCB&ESC; 

    S#L#C0selecteaza cel putin o coloana5lias

     poate fi folosit pentru coloanele din lista selectataD

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    22/24

    desemneza toate coloanele"3S031C0

     poate fi utilizat pentru eliminarea duplicatelor F/!+ 0abela

    desemneaza tabela din care provin coloaneleOG#/#

    restrictioneaza cererea la randurile care indeplinesc o conditie.:oate contine valori de

    coloane,e(presii si literali51"@!/  poate fi utilizat intr-o clauza OG#/# pentru a construi conditii mai comple(e. 51" are prioritate peste !/.

    &' pot fi utilizate pentru a forta prioritatea

    !/"#/ %intotdeauna apare la sfarsit .Specifica ordinea de sortare.na sau mai multe coloane pot fispecificate aici.

    5SC

    ordinea ascendenta este ordinea de sortarI & implicita' si nu trebuie specificat."#SC

    inverseaza ordinea de sortare de default si trebuie specificat dupa un nume de coloana.

    Clauzele pot fi introduse pe linii separate in buffer si tabelarea este utilizata pentru claritate si ineditare.

    Lo$area la SQL3Pl"!

    5ceasta sectiune e(plica cum sa ne logam la SQLD:lus si liniile de iesire ale tipurilor de comenzi

    ce pot rezulta in cadrul sau.

    SQL3Pl"!

    SQLD:lus este un program scris de Corporatia !racle,ce produce un mediu pentru comenzile SQLce pot fi tastate direct sau rulate dintr-un fisier de comanda.3n plus ,comenzile SQL pot fiderivate.#le sunt folosite pentru

    • formatarea rezultatelor • setarea optiunilor • editarea si stocarea declaratiilor SQL

    !data ce v-ati logat la sistemul vostru de operare,sunt moduri pentru a va loga la SQLD:lus

    6. SQL:LSo 4eti vedea dupa aceasta un mesaj ca acestao SQLD:lus 4ersion .6.6 :roduction on +on !ct P 677 Copright &c' 677,!racle

    Corporation,California,S5. 5ll rights reserved. #nter sernameo 3ntroduceti numele vostru de user si apasati /#0/1 SQLD:lus va afisa

     promptul J#nter :ass*ordJ. 3ntroduceti parola voastra si apasati din nou /#0/1.

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    23/24

    o :entru protectia voastra ,parola nu va apare pe ecran. SQLD:lus va afisa promptulsau SQLU

    o 5ceasta indica linia de comanda .5colo sunt doua feluri de comenzi si putetiintroduce pe acesta linie de comandacomenzi SQL sau comenzi SQLD:lus.

    . SQL:LS usernameo 4eti fi indemnati sa va dati parola.

    . SQL:LS username@pass*ord

    o 4eti fi logati la SQLD:lus.3n acest caz parolz v a fi afisata.5legeti metoda pe care o preferati.

    Editarea de#laratiilor SQL "tilizand #omenzi SQL3Pl"!

    6. Cand veti introduce o comanda SQL,aceasta este stocata intr-o zona de memorie utilizata de buferul SQL si ramane acolo pana ce veti introduce o noua comanda.

    . "aca apasati A/#0/1B inainte de a completa o comanda,SQLD:lus va afisa un numar delinie.

    . 0erminatorul pentru declaratiile SQL este un $.P. Cat timp declaratia SQL este in bufer,sunt cateva operatii de editare directe care pot fie(ecutate utilizand comenzi SQLD:lus

      Comanda (%revierea ROL    (PPE'& tet ( tet adau#a =tet= la sarsitul liniei curente!  C-(')E CBoldBne scim%a veciul tet cu noul tet in linia

      curenta!  C-(')E CBtetB ster#e =tet=ul din linia curenta  CLE(R 59FFER CL 59FF ster#e toate liniile din %uerul SQL!  &EL ster#e linia curenta!  I'P9T I insereaza un numar nedeinit de linii!  I'P9T I tet insereaza o linie constituita din =tet=ul  resectiv  LIST L listeaza toate liniile din %uerul SQL!  LIST n Ln listeaza o linie   LIST m" n L m n listeaza un numar de linii!  R9' R aiseaza si eecuta comanda SQL curenta din  %uer!  B eecuta comanda SQL care este curenta in  %uer!

    Dier!itatea #omenzilor SQL3Pl"!

    Comenzile SQL &precum S#L#C0' sunt mijloace de acces la date prin 2ernelul !racle.ComenzileSQL sunt utilizate in special pentru controlul mediului, formatarea rezultatelor interogarilor sicontrolul fisierelor.Comenzile identificate aici sunt amestecate si trebuie sa le folositi inurmatoarele e(ercitii.

    Comenzile SQL sunt introduse la promptul SQLU pe o linie ,ele nu vor deschide un buffer.

    Comanda = "escriere

  • 8/17/2019 Ce Legatura Are SQL Cu Bazele de Date

    24/24

    S54# numefis permite salvarea intr-un fisier a continutului buferului SQL.

    #0 numefisincarca continutul unui fisier salvat in prealabil in buffer.

    S05/0 numefisruleaza un fisier de comanda salvat in prealabil. Fisierele de comanda sunt tratate in capitolul69.

    #" numefisutilizeaza un editor de default pentru a edita continutul unui fisier salvat.#V30

     paraseste SQLD:lus.

    tt:BB!marlo!netBmsUlB%azeDdeDdate!tml