Recapitulare SQL ase

Embed Size (px)

Citation preview

  • 8/17/2019 Recapitulare SQL ase

    1/37

    Interogarea

    bazelor

    de date

    utiliz

    ând

    limbajul SQL

    Lect. Univ. Dr. Cătălin Tudor

  • 8/17/2019 Recapitulare SQL ase

    2/37

    Vocabularul SQL:

    Instruc ţiuni   – permit execuţia   anumitor acţiuni(CREATE, ALTER, SELECT, UPDATE, DELETE , etc.)

    Clauze   – specifică   argumentele unei instrucțiuni

    (FROM, WHERE, ORDER BY , etc.)

    Funcții   – efectuează prelucrări   asupra datelor (care

    devin argumente sau parametrii) în scopul afișării unor

    rezultate specifice (SUM, ROUND, UCASE, LEFT, DATE,

    IIF, etc.).Operatori   – acționează   asupra datelor (care devin

    operanzi), permițând   definirea unor expresii, calcule,

    etc. (aritmetici, de comparare, logici, de concatenare,

    etc.).

  • 8/17/2019 Recapitulare SQL ase

    3/37

    instrucţiuni de definire a datelor (permit descrierea

    structurii bazei de date):

      CREATE, ALTER, DROP 

    instrucţiuni de selecţie a datelor (permit consultarea

    bazei de date):

      SELECT 

    instrucțiuni   de manipulare a datelor (permit

    adăugarea, modificarea și ștergerea înregistrărilor):

      INSERT, UPDATE, DELETE 

    instrucţiuni   privind controlul accesului la date(permit acordarea sau revocarea drepturilor de

    acces pe utilizatori):

      GRANT, REVOKE 

  • 8/17/2019 Recapitulare SQL ase

    4/37

    Formatul general al frazei SQL de selecție:

    SELECT [ALL / DISTINCT / DISTINCTROW / TOP N]

    FROM [WHERE ]

    [GROUP BY ]

    [HAVING ]

    [ORDER BY [ASC|DESC]];

    unde:•   Lista de  selecţie   precizează  atributele sau expresiile ale  căror  valori

    vor fi returnate;

    •   listă-tabele  specifică   tabelele din care se vor extrage datele  înlănţuite

    prin condiţii de compunere;

    • WHERE   permite exprimarea criteriului de   selecţie   înaintea   efectuăriioricărei grupări în vederea sintetizării informaţiei;

    • GROUP BY   folosit pentru a  partiţiona  o  tabelă   în grupuri după  câmpul

    specificat;

    • HAVING specifică criterii de selecţie pentru date agregate;

    • ORDER BY   precizează   atributul/atributele   după   care se va faceordonarea.

  • 8/17/2019 Recapitulare SQL ase

    5/37

    Precizarea domeniului de selecțiePredicatele ALL, DISTINCT

    și TOP:

    ALL   – permite selectarea tuturor  înregistrărilor, afişând

    valorile câmpurilor specificate din tabelul selectat;

    DISTINCT  – permite excluderea valorilor dublură  pentru

    fiecare câmp selectat (doar  înregistrări   unice la nivelul

    atributelor vizibile);

    TOP ”n”  – permite afișarea  primelor ”n”  înregistrări  din

    lista rezultatului interogării, ordonată după valorile unor

    câmpuri.

  • 8/17/2019 Recapitulare SQL ase

    6/37

    Instrucțiuni de selecție

    -

    ExempleExemple de utilizare a predicatelor din clauza SELECT:

    1. Să se afișeze toți angajații cu numele Ionescu:

    SELECT ALL * FROM Angajati WHERE Nume=“Ionescu”

    sau

    SELECT * FROM Angajati WHERE Nume=“Ionescu”

    Rezultat:

    Marca angajat Nume Prenume Salariu

    M120 Ionescu Paul 1230

    M432 Popescu Ion 1760

    M431 Ionescu Marcel 3300

    Marca angajat Nume Prenume Salariu

    M120 Ionescu Paul 1230

    M431 Ionescu Marcel 3300

  • 8/17/2019 Recapitulare SQL ase

    7/37

    Instrucțiuni de selecție – rezultate unice

    Să se afișeze, în mod unic, doar numele angajaților:

    Utilizare DISTINCT:SELECT DISTINCT Nume FROM Angajați

    Marca angajat Nume Prenume Salariu

    M120 Ionescu Paul 1230M432 Popescu Ion 1760

    M431 Ionescu Marcel 3300

    Nume

    Ionescu

    Popescu

    Valori unice ale câmpului

  • 8/17/2019 Recapitulare SQL ase

    8/37

    Instrucțiuni de selecție

    Utilitatea predicatului TOP n/procent:

     Afișați numele și prenumele primilor 2 angajați cu salariile celemai mari:

    SELECT TOP 2 Nume, Prenume

    FROM Angajati

    ORDER BY Salariu DESC

    Nume Penume

    Ionescu Marcel

    Popescu Ion

    Marca angajat Nume Prenume Salariu

    M120 Ionescu Paul 1230

    M432 Popescu Ion 1760

    M431 Ionescu Marcel 3300

    A i i j SQL I i ii

  • 8/17/2019 Recapitulare SQL ase

    9/37

    Asocierea ta e e or n im aju SQL I – con iţii   ecompunere

    Să se afișeze toate denumirile de produse facturate după data de 12.05.2008.

    Soluția 1: Compunerea condiționată prin clauza WHERE:SELECT DenumireProdus

    FROM Produs, ProduseFacturate, Facturi

    WHERE Facturi.IDFactura=ProduseFacturate.IDFacturaand ProduseFacturate.CodProdus=Produs.CodProdus

    and DataFactura>#12.05.2008#

    Condiții de compunere

    Enumerare

    tabele

  • 8/17/2019 Recapitulare SQL ase

    10/37

    Asocierea tabelelor în limbajul SQL (II) - Compunerea internă

    Să se afișeze toate denumirile de produse facturate după data de 12.05.2008.

    Soluția 2: Combinarea tabelelor în clauza FROM:

    Select DenumireProdus

    FROM (Facturi INNER JOIN ProduseFacturate

    ON  Facturi.IdFactura=ProduseFacturate.IdFactura)INNER JOIN Produs ON Produs.CodProdus=ProduseFacturate.CodProdus

    WHERE DataFactura>#12.05.2008#

    Compunere internă

    Asociere tabele

  • 8/17/2019 Recapitulare SQL ase

    11/37

    Asocierea tabelelor în limbajul SQL (III) - Compunerea externă

    Să se afișeze toate denumirile denumirile furnizorilor care nu au emis nici o factură.

    Soluția 2: Combinarea tabelelor în clauza FROM:

    Select DenumireFz

    FROM (Furnizori LEFT JOIN Facturi

    ON Furnizori.CodFiscal=Facturi.CodFiscal)Where Facturi.IdFactura is NULL

    Condiţie de joncţiune

    Asociere tabele

    Eliminare înregistrări cu valori nule

  • 8/17/2019 Recapitulare SQL ase

    12/37

    Câmpuri calculate în limbajul SQL

    Marca angajat Nume Prenume Salariu

    M120 Ionescu Paul 1230

    M432 Popescu Ion 1760

    M431 Ionescu Marcel 3300

    Să se afișeze cât reprezintă prima de 10% din salariu pentru

     fiecare salariat 

    SELECT Nume, (Salariu * 10/100) AS Prima FROM Angajati

    Nume Prima

    Ionescu 123

    Popescu 176

    Ionescu 330

    ă d d f d

  • 8/17/2019 Recapitulare SQL ase

    13/37

    Grupări de date şi funcţii de grup

    Să se afișeze câte facturi au fost emise în luna februarie , anul 2008.

    1. Funcții   de agregare aplicate tuturor  înregistrărilor, fără   a fi

    necesară gruparea:

    SELECT Count(*) AS [Numar de facturi]

    FROM Facturi

    WHERE Month([DataFactura])=2 AND Year([DataFactura])=2008

    2. Funcții de agregare aplicate pe grupuri de înregistrări:

    Să se afișeze pentru fiecare denumire de furnizor câte facturi au fost emise de

    acesta.

    SELECT DenumireFz, Count(*) AS [Numar de facturi]

    FROM Facturi INNER JOIN Furnizori

    ON Furnizori.CodFiscal=Facturi.CodFiscal

    GROUP BY DenumireFz

    ă i d d i f ii d

  • 8/17/2019 Recapitulare SQL ase

    14/37

    Grupări de date şi funcţii de grup

    Să se afișeze câte facturi  au fost emise în luna februarie , anul 2008  ,

    de fiecare furnizor.

    3. Funcții de agregare aplicate grupurilor, cu criterii de filtrare:

    SELECT Count(*) AS [Numar de facturi]

    FROM Facturi INNER JOIN Furnizori

    ON Furnizori.CodFiscal=Facturi.CodFiscal

    WHERE Month([DataFactura])=2 AND Year([DataFactura])=2008

    GROUP BY DenumireFz

    4. Funcții de agregare aplicate pe grupurilor, cu filtrare pe expresii:Să se afișeze care sunt furnizorii care au emis mai mult de 3 facturi în luna

     februarie a anului 2008.

    SELECT DenumireFzFROM Facturi INNER JOIN Furnizori

    ON Furnizori.CodFiscal=Facturi.CodFiscal

    WHERE Month([DataFactura])=2 AND Year([DataFactura])=2008

    GROUP BY DenumireFzHAVING Count(*)>3

  • 8/17/2019 Recapitulare SQL ase

    15/37

    Utilizarea sub-interogărilor în limbajul SQL

    Sub-interogare=structură   SQL al cărei   rezultat ajută   în

    rezolvarea unei alte interogări (interogări imbricate)Predicate utilizate pentru sub-interogări:

     ANY  – compară partea stângă a sa cu oricare dintre rezultateleunei sub-interogări situate în partea dreaptă

     ALL   – Compară  partea stângă   a sa cu toate rezultatele sub-interogării

    EXISTS – se comportă ca un operator după clauza WHERE careevaluează dacă   sub-interogarea returnează   cel puțin   o înregistrare

    IN   – poate fi utilizat când se compară   rezultatele a douămulțimi,   dintre care cea din dreapta este returnată   de sub-interogare

  • 8/17/2019 Recapitulare SQL ase

    16/37

    Exemple de interogări cu sub-interogări1. Lista furnizorilor  care nu au emis facturi în anul 200 7 

    SELECT DenumireFurnizor FROM FurnizoriWHERE Furnizori.CodFiscal NOT IN

    (Select Facturi.CodFiscal FROM Facturi

    WHERE Year( DataFactura)=2007)

    2. Lista produselor  cu categoria de calitate I care au prețul mai mic decât oricare dintre prețurile produselor de calitate II:

    SELECT DenumireProdus FROM Produse

    WHERE CategorieCalitate=1 AND Pret >

    ANY (Select [ Pret  ] From Produse

    Where CategorieCalitate=2)

  • 8/17/2019 Recapitulare SQL ase

    17/37

    Exemple de interogări cu sub-interogări

    3. Furnizorul  care a emis cele mai multe facturi.

    SELECT DenumireFurnizor

    FROM Furnizori, Facturi

    WHERE Furnizori.CodFiscal = Facturi.CodFiscal

    Group By DenumireFurnizorHaving Count(NrFactură)>=

    ALL (Select Count(NrFactură)

    FROM Furnizori, Facturi 

    WHERE Furnizori.CodFiscal = Facturi.CodFiscal Group By DenumireFurnizor  )

  • 8/17/2019 Recapitulare SQL ase

    18/37

    Exemple de interogări cu sub-interogări

    4. Furnizorii  care au emis  cel puțin  o  factură după data de 20 septembrie 2008.

    SELECT Furnizori.DenumireFZFROM Furnizori

    WHEREEXISTS

    (Select DataFactura FROM Facturi WHERE DataFactura>#09/20/2008#

     AND Facturi.CodFiscal=Furnizori.CodFiscal)

    SELECT Furnizori.DenumireFz

    FROM Furnizori

    WHERE Furnizori.CodFiscal IN

    (Select Facturi.CodFiscal FROM Facturi

    WHERE DataFactura>#09/20/2008#)

    Al b l ți lă

  • 8/17/2019 Recapitulare SQL ase

    19/37

    Algebra relațională

    Reprezintă un set de operații cu relații (tabele) ale unei

    baze de date făcând apel la operatori relaționali utilizați

    pentru a compune, modifica și combina tupluri din cadrulacestora.

    Rezultatul utilizării operatorilor relaționali pe un set de

    relații este tot o relație.•  Operatorii algebrei relaționale:•  operatori unari

     proiecţia selecţia

    •  operatori binari

    reuniunea intersecţia diferenţa  produsul cartezian

    •   operatori de extensie compunerea

     di viziunea

    Operatori de asamblare

    O t ii i i l b i l ți l

  • 8/17/2019 Recapitulare SQL ase

    20/37

    Operatorii unari ai algebrei relaționale

    Selecția

    Permite decuparea pe orizontală a unei relații

    Produce un tabel conținând   un subset de

     înregistrări   din cadrul relației sursă,   care satisfac o

    anumită condiție.Schema de câmpuri a relației  rezultat este identică

    cu cea a relației de intrare.

    Numărul   de tupluri sau   cardinalitatea relațieirezultat este mai mic decât cel al relației de intrare.

    Notație: σcondiție(Relație)

    O t ii i i l b i l ți l

  • 8/17/2019 Recapitulare SQL ase

    21/37

    Operatorii unari ai algebrei relaționale

    Exemplu de utilizare a operatorului de selecție

    Cod salariat Nume Prenume Salariu

    M100 Jinga Paul 2000

    M200 Nicsulescu Ion 1800

    M300 Popescu George 2700

    M400 Lovinescu Remus 2800

     Afișarea tuturor salariaților cu salariul peste 2500 

    Notație: σ Salariu>2500 ( Salariati  )Cod salariat Nume Prenume Salariu

    M300 Popescu George 2700

    M400 Lovinescu Remus 2800

    Implementarea în SQL:

    SELECT * FROM Salariati WHERE Salariu>2500 

    O t ii i i l b i l ți l

  • 8/17/2019 Recapitulare SQL ase

    22/37

    Operatorii unari ai algebrei relaționale

    Proiecția

    Permite decuparea pe verticală a unei relații (R).

    Produce o relație   (R1) care afișează înregistrările

    doar pentru anumite câmpuri prezente în lista de

    proiecție.Gradul relației   rezultat (R1) este mai mic decât

    gradul relației de intrare (R).

    Numărul de tupluri al relației rezultat poate diferi decel al relației   de intrare, dacă   are loc eliminarea

    duplicatelor .

    Notație:  A1,…,An(Relație),   {A1, A2, …, An}=Atribute

    O t ii i i l b i l ți l

  • 8/17/2019 Recapitulare SQL ase

    23/37

    Operatorii unari ai algebrei relaționale

    Exemplu de utilizare a operatorului de proiecție

    Cod salariat Nume Prenume Salariu

    M100 Jinga Paul 2000

    M200 Nicsulescu Ion 1800

    M300 Popescu George 2700

    M400 Lovinescu Remus 2800

     Afișarea numelor și prenumelor salariaților 

    Notație: N ume, Prenume ( Salariati  )

    Implementarea în SQL:

    SELECT Nume, Prenume FROM Salariati 

    Nume Prenume

    Jinga Paul

    Nicsulescu Ion

    Popescu George

    Lovinescu Remus

    Operatorii binari ai algebrei relaționale

  • 8/17/2019 Recapitulare SQL ase

    24/37

    Operatorii binari ai algebrei relaționale

    Produsul cartezian

    Pentru două relații R(cu gradul g1 și cardinalitatea c1)și   S (cu gradul g2 și   cardinalitatea c2), produsul

    cartezian are ca rezultat o relație T (cu gradul g1+g2 și

    cardinalitatea c1xc2) , în care fiecare tuplu al relației R

    este concatenat cu fiecare tuplu al relației S.

    A B

    X1 Y1

    X2 Y2

    X3 Y3

    C D

    Z1 T1

    Z2 T2

    A B C D

    X1 Y1 Z1 T1

    X1 Y1 Z2 T2

    X2 Y2 Z1 T1

    X2 Y2 Z2 T2

    X3 Y3 Z1 T1

    X3 Y3 Z2 T2

    Relația R

    Relația S Relația T=RxS

    Implementare în SQL:

    SELECT * FROM R,S

    Operatorii binari ai algebrei relaționale

  • 8/17/2019 Recapitulare SQL ase

    25/37

    Operatorii binari ai algebrei relaționale

    Operatorii de asamblare:

    Reuniunea, intersecția și diferența

    sunt operații care acționează asupra a două relații

    de intrare, compatibile din punctul de vedere al

    unificării (să prezinte cel puțin un câmp corespondentcare să aibă același tip pentru ambele relații)

    Rezultatul este o singură relație care nu trebuie să

    conțină duplicate, privind în ansamblul câmpurilor.

    Operatorii binari ai algebrei relaționale

  • 8/17/2019 Recapitulare SQL ase

    26/37

    Operatorii binari ai algebrei relaționale

    Reuniunea

    Construiește o relație rezultat constând din toate tuplurile care apar în

    ambele relații sursă, sau doar în una dintre acestea, fără a afişa rezultateduplicat.

    Numărul de câmpuri, numele și tipul lor trebuie să fie identice pentru

    ambele relații.

    Cod fiscal   Denumire

    R101102 SC X SA

    R102103 SC Y SA

    R104105 SC Z SA

    Cod fiscal   Denumire

    R101102 SC X SA

    R105106 SC A SA

    R107108 SC B SA

    Cod fiscal   Denumire

    R101102 SC X SA

    R102103 SC Y SA

    R104105 SC Z SA

    R105106 SC A SAR107108 SC B SA

    =

    Furnizori    Clienti 

      Parteneri 

    Implementarea în SQL:

    SELECT CodFiscal, Denumire FROM Furnizori

    UNION 

    SELECT CodFiscal, Denumire FROM Clienti

    Operatorii binari ai algebrei relaționale

  • 8/17/2019 Recapitulare SQL ase

    27/37

    Operatorii binari ai algebrei relaționale

    Intersecția

    Construiește o relație rezultat constând din toate tuplurile care apar în

    ambele relații sursă.

    Operația de intersecție poate fi stabilită și pentru un singur câmp

    comun al relațiilor de intrare.

    Cod fiscal   Denumire

    R101102 SC X SA

    R102103 SC Y SA

    R104105 SC Z SA

    Cod fiscal   Denumire

    R101102 SC X SA

    R105106 SC A SA

    R107108 SC B SA

    Cod fiscal   Denumire

    R101102 SC X SA=

    Furnizori    Clienti 

    Parteneri cu dublu rol 

    Implementarea în SQL:

    SELECT CodFiscal, Denumire FROM Furnizori

    Where Furnizori.CodFiscal IN 

    (SELECT CodFiscal FROM Clienti)

     

    Operatorii binari ai algebrei relaționale

  • 8/17/2019 Recapitulare SQL ase

    28/37

    Operatorii binari ai algebrei relaționale

    Diferența

    Construiește o relație rezultat constând din toate tuplurile care apar

     într-una din relațiile sursă, dar nu și în cealaltă.

    Operatorul de diferență poate acționa și pentru un singur câmp

    comun al relațiilor de intrare.

    Cod fiscal   Denumire

    R101102 SC X SA

    R102103 SC Y SA

    R104105 SC Z SA

    Cod fiscal   Denumire

    R101102 SC X SA

    R105106 SC A SA

    R107108 SC B SA

    Cod fiscal   Denumire

    R102103 SC Y SA

    R104105 SC Z SA=

    Furnizori    Clienti 

    Parteneri doar furnizori 

    Implementarea în SQL:

    SELECT CodFiscal, Denumire FROM Furnizori

    Where Furnizori.CodFiscal  NOT IN 

    (SELECT CodFiscal FROM Clienti)

    Operatorii de extensie ai algebrei relaționale

  • 8/17/2019 Recapitulare SQL ase

    29/37

    Operatorii de extensie ai algebrei relaționale

    Compunerea (JOIN)

    Construiește o relație rezultat constând din toate combinațiile posibile

    de perechi de înregistrări concatenate din două tabele (sau proiecţii ale

    acestora) realizate în urma unei condiţii.

    Compunerea presupune existenţa unei condiţii de compunere (=, >,

  • 8/17/2019 Recapitulare SQL ase

    30/37

    Operatorii de extensie ai algebrei relaționale

    Exemplu de utilizare a compunerii (INNER JOIN)

    CodFiscal DenumireR101102 SC X SA

    R102103 SC Y SA

    R104105 SC Z SA

    NrFactura DataFactura CodFiscal132112 12.05.2008 R101102

    144231 13.06.2008 R102103

    132112 14.08.2008 R102103

    NrFactura DataFactura Facturi.CodFiscal Furnizori.CodFiscal Denumire132112 12.05.2008 R101102   R101102 SC X SA

    144231 13.06.2008 R102103   R102103 SC Y SA

    132112 14.08.2008 R102103   R102103 SC Y SA

    Implementarea în SQL:SELECT CodFiscal, Denumire FROM Furnizori, Facturi WHERE

    Furnizori.CodFiscal =Facturi.CodFiscal 

    sau

    SELECT CodFiscal, Denumire FROM Furnizori INNER JOIN Facturi

    ON Furnizori.CodFiscal =Facturi.CodFiscal 

    Operatorii de extensie ai algebrei relaționale

  • 8/17/2019 Recapitulare SQL ase

    31/37

    Operatorii de extensie ai algebrei relaționale

    Exemplu de utilizare a compunerii (OUTER JOIN)

    CodFiscal DenumireR101102 SC X SA

    R102103 SC Y SA

    R104105 SC Z SA

    NrFactura DataFactura CodFiscal132112 12.05.2008 R101102

    144231 13.06.2008 R102103

    132112 14.08.2008 R102103

    NrFactura DataFactura Facturi.CodFiscal Furnizori.CodFiscal Denumire132112 12.05.2008 R101102 R101102 SC X SA

    144231 13.06.2008 R102103 R102103 SC Y SA

    132112 14.08.2008 R102103 R102103 SC Y SA

    R104105 SC Z SA

    Implementarea în SQL:

    SELECT CodFiscal, Denumire FROM Furnizori LEFT JOIN Facturi

    ON Furnizori.CodFiscal =Facturi.CodFiscal 

    Operatorii de extensie ai algebrei relaționale

  • 8/17/2019 Recapitulare SQL ase

    32/37

    Operatorii de extensie ai algebrei relaționale

    Diviziunea

    Presupune  împărţirea   unei relații   R3 de grad   m+n,   la o

    relație R1 de grad  n, câtul împărţirii fiind o relație R2 de grad

    m.

    A B

    X1 Y1

    X1 Y2

    X1 Y3

    X1 Y4

    X2 Y1X2 Y2

    X3 Y2

    X4 Y2

    X4 Y4

    R3

    B

    Y2

    1R2

    R3/1R2

    A

    X1

    X2

    X3

    X4

    1R1

    B

    Y2

    Y4

    2R2

    R3/2R2

    A

    X1

    X4

    2R1

    B

    Y1

    Y2

    Y4

    3R2

    R3/1R2

    A

    X1

    3R1

    Interogări SQL pentru adăugarea de noi înregistrări

  • 8/17/2019 Recapitulare SQL ase

    33/37

    Interogări SQL pentru adăugarea de noi înregistrări

    INSERT INTO nume-tabela (nume-atribut1, nume-atribut2,…)

    VALUES (valoare1, valoare2,…)

    Varianta 1: Adăugarea pe baza unor valori noi 

    Exemplu: Să se adauge un nou client în baza de date cu codul fiscal R101221 și

    denumirea SC GAMA SA

    INSERT INTO Clienti (CodFiscal, Denumire) VALUES (‘R101221’, ‘SC GAMA SA’)

    Varianta 2: Adăugarea pe baza valori lor preluate dintr -un tabel 

    INSERT INTO nume-tabela SELECT nume-atribut1, nume-atribut2, …

    FROM nume-tabela-sursa [WHERE Conditii …]

    Exemplu: Să se adauge în tabela Parteneri toți Furnizorii din localitateaBucurești 

    INSERT INTO Parteneri SELECT * FROM Furnizori WHERE Localitate=‘București’

    Interogări SQL pentru

    modificarea

    valorilor

    c

    â

    mpurilor

  • 8/17/2019 Recapitulare SQL ase

    34/37

    Interogări SQL pentru modificarea valorilor câmpurilor

    UPDATE nume-tabel

    SET nume-atribut1=valoare1, nume-atribut2=valoare2, …WHERE Condiții

    Exemplul 1: Să se transforme în KG toate unitățile de măsură ale produselor

    cu codul mai mare decât 3.

    UPDATE Produse SET UnitateMasura=‘KG’ WHERE CodProdus:3

    Exemplul 2: Să se majoreze cu 5% toate prețurile din facturile emise după

    data de 12.09.2008.

    UPDATE ProduseFacturate

    SET PretFacturat=[PretFacturat]+[PretFacturat]*5/100

    WHERE IDFactura IN

    (Select IDFactura FROM Facturi WHERE DataFactura>#12.09.2008#)

    Interogări SQL pentru ștergerea înregistrărilor

  • 8/17/2019 Recapitulare SQL ase

    35/37

    Interogări SQL pentru ștergerea înregistrărilor

    DELETE *

    FROM nume-tabel

    WHERE Condiție

    Exemplu: Să se șteargă toți clienții din localitatea Brăila

    DELETE *

    FROM Clienti

    WHERE Localitate=‘Braila’

    Interogări SQL pentru

    crearea

    de

    tabele

    rezultat

  • 8/17/2019 Recapitulare SQL ase

    36/37

    Interogări SQL pentru crearea de tabele rezultat

    SELECT nume-atribut1, nume-atribut2, …

    INTO nume-tabel-rezultat

    FROM listă-tabele-sursă[WHERE Condiții …]

    Exemplu: Să se creeze un nou tabel denumit ProduseFacturateOctombrie care

    să afișeze denumirile de produse facturate în luna curentă

    SELECT DenumireProdus

    INTO ProduseFacturateOctombrie

    FROM Produse, ProduseFacturate, FacturiWHERE Produse.CodProdus=ProduseFacturate.CodProdus AND

    ProduseFacturate.IDFactura=Facturi.IDFactura AND

    Month(DataFactura)=Month(Date())

    Exemple de rezolvat

  • 8/17/2019 Recapitulare SQL ase

    37/37

    Exemple de rezolvat

    1. Să se afișeze lista produselor facturate de furnizorul  SC BETASA în anul 2008.

    2. Să   se  precizeze denumirile tuturor  produselor   care au  fost achiziționate în anul  2011 într -o valoare totală mai mare de500 lei.

    3. Să se afișeze toate denumirile produselor  care nu  provin din

    achiziţii de la furnizori.4.   Ce  produse au  fost  cel mai des achiziţionate în luna martie a

    anului  curent? 

    5.   Care sunt  furnizorii   care  în   anul  2012   au emis facturi   cuvaloarea totală mai mare decât  cea a tuturor  facturilor emise în trimestrul  4 al anului 2011.