Struktura zapytań w SQL
Podstawową umiejętnością w języku SQL jest wykonywania zapytań do bazy danych w celu uzyskania jakichś kąkretnych informacji.
Zapytania w języku SQL składają się z następujących części:
SELECT
FROM JOIN
WHERE
GROUP BY
HAVING
ORDER BY
1. SELECT
- tutaj wybieramy kolumny
- kolumny mozemy nazywac jak chcemy
npgatunek as gatunekFilmu
- mozemy tworzyc wlasne kolumny uzywajac funkcji
npMONTH(Data_wyp) AS mies,
imie & " " & nazwisko as imieINazwisko
- uzyc funkcji grupujacej (przy uzyciu GROUP BY)
npCOUNT(Wypozyczenia.ID_filmu)
2. FROM
w tej senkcji:
- podajemy tabele z której będą ciągnięte dane.
npFROM Filmy
- nie musimy brac danych tylko z jednej tabelki bo mozemy polaczyc kilka tabelek w jedna
INNER JOIN tabela ON (warunek zlaczenia
LEFT JOIN tabela ON (warunek zlaczenia
RIGHT JOIN tabela ON (warunek zlaczenia
OUTER JOIN tabela ON (warunek zlaczenia
np
(Klienci INNER JOIN Wypozyczenia ON Klienci.Pesel = Wypozyczenia.Pesel)
INNER JOIN Filmy ON Wypozyczenia.ID_filmu = Filmy.ID_filmu
3.WHERE
- odfiltrowujemy rekordy z naszej tabelki z ktorej ciagniemy dane - nakladamy ograniczenianp: WHERE Wypozyczenia.Data_wyp BETWEEN #2011-06-01# AND #2011-12-31#
WHERE (((Filmy.ID_filmu) Like '*2005') AND ((Filmy.Gatunek)="familijny"))
https://support.microsoft.com/pl-pl/office/przyk%C5%82ady-kryteri%C3%B3w-kwerend-3197228c-8684-4552-ac03-aba746fb29d8
4.GROUP BY
- dokonujemy grupowania
wyznaczamy kolumny ktore wspólnie będą wyznaczać identyfikator grupy
czyli w ramach danej grupy bedą sie powtarzac
np:
+--------+----------+-----------+
|kraj | miasto | sprzedarz |
+--------+----------+-----------+
| Polska | Opole | 1233 |
| Polska | Kraków | 132 |
| Polska | Warszawa | 12341 |
| Niemcy | Berlin | 1312 |
| Niemcy | Monachium| 123 |
| Francja| Paryż | 1123 |
+--------+----------+-----------+
grupujemy po kraju w wyniku tego dostajemu grupy:
+--------+----------+-----------+
|kraj | miasto | sprzedarz |
+--------+----------+-----------+
| Polska | Opole | 1233 |
| Polska | Kraków | 132 |
| Polska | Warszawa | 12341 |
+--------+----------+-----------+
+--------+----------+-----------+
|kraj | miasto | sprzedarz |
+--------+----------+-----------+
| Niemcy | Berlin | 1312 |
| Niemcy | Monachium| 123 |
+--------+----------+-----------+
+--------+----------+-----------+
|kraj | miasto | sprzedarz |
+--------+----------+-----------+
| Francja| Paryż | 1123 |
+--------+----------+-----------+
grupowanie powoduje sprasowanie wszystkich rekordow z kazdej z grup do 1 rekordu
aby to ztobic na kolumny z części SELECT ktore nie biorą udziału w grupowaniu
(u nas miasto i przedarz ) należy nałożyć funkcje grupujące.
Funckej grupujące to funkcje które Z grupy wartości robią jedną wartość np suma średnia count itp.
SELECT kraj, Count(Distinct(miasto)) as iloscRoznychMiast, sum(sprzedarz) as sumaSprzedarzy
GROUP BY kraj
+--------+-------------------+----------------+
|kraj | iloscRoznychMiast | sumaSprzedarzy |
+--------+-------------------+----------------+
| Polska | 3 | 1233+132+12341 |
| Niemcy | 2 | 1312+123 |
| Francja| 1 | 12341 |
+--------+-------------------+----------------+
5 HAVING
Having robi to samo co where, ale dziala po grupowaniu a where przed grupowniem
inaczej mowiac having odfiltrowuje juz zrobione grupy.
Trzeba pamietac ze robiac warunki nie mozemy uzywac kolumn stworzonych w select bo select jeszcze nie ruszylo
6. ORDER BY
Sortujemy
domyślnie rosnąco ASC
lub malejaco DESC
Kolejność | Słowo kluczowe | Opis |
---|---|---|
1 | FROM, JOIN | najpierw serwer musi wiedzieć skąd pobrać dane |
2 | WHERE | następnie filtruje dane i bierze tylko te potrzebne |
3 | GROUP BY | kolejnym krokiem jest pogrupowanie danych |
4 | HAVING | teraz silnik filtruje grupy |
5 | SELECT | dopiero w tym kroku wybierane są potrzebne nam dane i wyliczane są funkcje agregujące |
6 | ORDER BY | na samym końcu wiersze zostaną posortowane |
7 | TOP | i wybrane te w odpowiedniej ilości |