Ordinea de procesare a interogărilor

Introducere în Oracle SQL

Hadrien Lacroix

Content Developer

De ce contează ordinea de procesare?

  • Optimizați interogările
    • Fără rezultate nedorite
    • Execuție mai rapidă
Introducere în Oracle SQL

Exemplu

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introducere în Oracle SQL

Exemplu

    SELECT BillingCountry, AVG(Total) > 100) AS Average
->  FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introducere în Oracle SQL

Exemplu

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
->  WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introducere în Oracle SQL

Exemplu

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
->  GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introducere în Oracle SQL

Exemplu

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
->  HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introducere în Oracle SQL

Exemplu

->  SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
    ORDER BY Average DESC
Introducere în Oracle SQL

Exemplu

    SELECT BillingCountry, AVG(Total) > 100) AS Average
    FROM Invoice
    WHERE BillingCity <> 'Paris' 
    GROUP BY BillingCountry
    HAVING AVG(Total) > 100
->  ORDER BY Average DESC
Introducere în Oracle SQL

Ce poate merge greșit?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100
ORDER BY Average DESC
  • Aliasurile nu pot fi utilizate în WHERE, GROUP BY și HAVING
  • Aliasurile pot fi utilizate în ORDER BY
Introducere în Oracle SQL

Ce poate merge greșit?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100
ORDER BY Average DESC
  • Valorile agregate nu pot fi filtrate în clauza WHERE
  • Valorile agregate pot fi filtrate în clauza HAVING
Introducere în Oracle SQL

Ce poate merge greșit?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100)
ORDER BY Average DESC
  • Rândurile individuale nu pot fi filtrate în clauza HAVING
  • Rândurile individuale pot fi filtrate în clauza WHERE
Introducere în Oracle SQL

Ordinea de execuție a interogării

  1. FROM și JOIN: determină datele interogate

  2. WHERE: filtrează rândurile individuale

  3. GROUP BY: grupează rândurile

  4. HAVING: filtrează grupurile

  5. SELECT: selectează coloanele și aplică funcții

  6. DISTINCT: elimină duplicatele

  7. UNION, UNION ALL, INTERSECT, MINUS: aplică operatori pe mulțimi

  8. ORDER BY: ordonează rândurile

Introducere în Oracle SQL

Să exersăm!

Introducere în Oracle SQL

Preparing Video For Download...