Pořadí zpracování dotazu

Introduction to Oracle SQL

Hadrien Lacroix

Content Developer

Proč záleží na pořadí zpracování?

  • Optimalizujte dotazy
    • Žádné nechtěné výsledky
    • Rychlejší spuštění
Introduction to Oracle SQL

Příklad

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

Příklad

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

Příklad

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

Příklad

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

Příklad

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

Příklad

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

Příklad

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

Co může selhat?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100
ORDER BY Average DESC
  • Aliasy nelze použít v WHERE, GROUP BY a HAVING
  • Aliasy lze použít v ORDER BY
Introduction to Oracle SQL

Co může selhat?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100
ORDER BY Average DESC
  • Agregované hodnoty nelze filtrovat v klauzuli WHERE
  • Agregované hodnoty lze filtrovat v klauzuli HAVING
Introduction to Oracle SQL

Co může selhat?

SELECT BillingCountry, 
       AVG(Total) > 100) AS Average
FROM Invoice
WHERE BillingCity <> 'Paris' 
GROUP BY BillingCountry
HAVING AVG(Total) > 100)
ORDER BY Average DESC
  • Jednotlivé řádky nelze filtrovat v klauzuli HAVING
  • Jednotlivé řádky lze filtrovat v klauzuli WHERE
Introduction to Oracle SQL

Pořadí vykonávání dotazu

  1. FROM a JOIN: určují, která data se dotazují

  2. WHERE: filtrování jednotlivých řádků

  3. GROUP BY: seskupení řádků

  4. HAVING: filtrování skupin

  5. SELECT: výběr sloupců a aplikace funkcí

  6. DISTINCT: odstranění duplicit

  7. UNION, UNION ALL, INTERSECT, MINUS: množinové operátory

  8. ORDER BY: řazení řádků

Introduction to Oracle SQL

Lass uns üben!

Introduction to Oracle SQL

Preparing Video For Download...