CodeGym/Kursy Java/All lectures for PL purposes/Kontrola wyświetlania danych

Kontrola wyświetlania danych

Dostępny

4.1 LIMIT

Jeśli spodziewasz się, że zapytanie SQL zwróci zbyt dużo danych, możesz z góry ograniczyć ich maksymalną liczbę. W końcu tabele mogą zawierać tysiące, a nawet miliony wierszy.

SQL bardzo ułatwia ograniczenie liczby wierszy w wyniku zapytania przy użyciu metody LIMIT. To słowo kluczowe jest używane na samym końcu zapytania SQL i wygląda tak:

LIMIT quantity

Napiszmy zapytanie do tabeli produktów, która zawiera listę produktów naszego sklepu. Ale ponieważ mamy bardzo dobrze prosperujący sklep i sprzedajemy wiele produktów, chcemy uzyskać tylko pierwsze 10 wierszy odpowiedzi. Oto jak wyglądałoby to żądanie:

SELECT * FROM product
LIMIT 10

Otrzymujemy następujący wynik zapytania:

ID nazwa marka cena liczyć
1 Tabela IKEA 20.00 15
2 Krzesło IKEA 5.00 45
3 Sofa IKEA 80.00 10
4 Łóżko IKEA 75.00 10
5 Gabinet Boscha 125.00 15
6 Półka Półka 25.00 114
7 telewizja LG 350,00 4
8 Lampa LG 15.00 100
9 Kredens IKEA 99,00 10
10 Płyta Boscha 199,00 10

Teraz poprosimy tylko o pierwsze 5 rzędów. Oto jak wyglądałoby to żądanie:

SELECT * FROM product
LIMIT 5

Otrzymujemy następujący wynik zapytania:

ID nazwa marka cena liczyć
1 Tabela IKEA 20.00 15
2 Krzesło IKEA 5.00 45
3 Sofa IKEA 80.00 10
4 Łóżko IKEA 75.00 10
5 Gabinet Boscha 125.00 15

4.2 PRZESUNIĘCIE

Ostatnim razem nauczyliśmy się ograniczać liczbę linii w odpowiedzi serwera. I teraz, zamiast tysięcy wierszy z tabeli produktów, możemy pobrać pierwsze 10 wierszy i wyświetlić je użytkownikowi. Jest doskonale. Ale jak wyświetlić drugie 10 wierszy? A trzeci?

Jeśli napiszemy LIMIT 20, lub LIMIT 30, czy serwer nie zwróci odpowiednio 20 i 30 wierszy?

W tym przypadku SQL ma specjalne słowo kluczowe, OFFSETza pomocą którego można poprosić serwer o pominięcie N wierszy w odpowiedzi. To słowo kluczowe jest używane na samym końcu zapytania SQL (po LIMIT) i wygląda następująco:

OFFSET quantity

Napiszmy zapytanie w tabeli produktu i spróbujmy uzyskać rekordy od 11 do 15. Innymi słowy, prosimy serwer o zwrócenie nam 5 wierszy, ale najpierw pomińmy pierwsze 10 wierszy odpowiedzi. Oto jak wyglądałoby to żądanie:

SELECT * FROM product
LIMIT 5
OFFSET 10

Otrzymujemy następujący wynik zapytania:

ID nazwa marka cena liczyć
jedenaście Fotel Boscha 44.00 8
12 doniczka Inteligentny kwiat 99,00 9
13 Podstawka IKEA 100,00 10

Serwer zwrócił tylko 3 wiersze, co oznacza, że ​​w naszej tabeli było łącznie 13 wierszy. Serwer pominął pierwsze 10 i zwrócił następne 5.

4.3 WYBIERZ RÓŻNE

Kolejnym przydatnym słowem kluczowym jest DISTINCT. Jest używany, gdy w tabeli znajdują się zduplikowane rekordy i chcemy usunąć duplikaty.

Skąd biorą się duplikaty w naszej tabeli? W tabeli może nie być duplikatów, ale w wyniku zapytania jest to łatwe. Napiszmy zapytanie, które zwróci marki wszystkich sprzedawanych przez nas produktów. Oto jak wyglądałoby to żądanie:

SELECT brand FROM product

Otrzymujemy następujący wynik zapytania:

marka
IKEA
IKEA
IKEA
IKEA
Boscha
Boscha
LG
LG
IKEA
Boscha
Boscha
Inteligentny kwiat
IKEA

Łatwo zauważyć, że w tej tabeli znajdują się zduplikowane wiersze. Ma to na celu upewnienie się, że nie ma duplikatów i musisz użyć słowa kluczowego DISTINCT. Oto jak będzie wyglądać poprawiona prośba:

SELECT DISTINCT brand
FROM product

Otrzymujemy następujący wynik zapytania:

marka
IKEA
Boscha
LG
Inteligentny kwiat

O wiele lepiej. Czyż nie? ;)

4.4 ZAMÓW WEDŁUG

I w końcu zabraliśmy się za sortowanie . Aby posortować wyniki zapytania, musisz użyć słowa kluczowego ORDER BY. Technicznie rzecz biorąc, są to dwa słowa, ale istota nie jest ważna. Dwa słowa, jeden operator.

Musi być napisane po słowie kluczowym WHERE, ale przed LIMITi OFFSET. Jeśli napiszesz ORDER BYpo LIMIT, serwer SQL po prostu zwróci ci błąd.

Ogólnie ten operator wygląda tak:

ORDER BY column order

Gdzie kolumna to nazwa kolumny w tabeli / wyniku sortowania. A kolejność to kolejność sortowania.

Kolejność sortowania może być trzech rodzajów:

  • ASC(od Rosnąco) - rosnąco;
  • DESC(od malejąco) - malejąco;
  • Nie określono - będzie używanyASC

Napiszmy zapytanie, które zwróci listę produktów posortowanych rosnąco według ceny. Oto jak wyglądałoby to żądanie:

SELECT * FROM product
ORDER BY price ASC
LIMIT 10

Otrzymujemy następujący wynik zapytania:

ID nazwa marka cena liczyć
2 Krzesło IKEA 5.00 45
8 Lampa LG 15.00 100
1 Tabela IKEA 20.00 15
6 Półka Boscha 25.00 114
jedenaście Fotel Boscha 44.00 8
4 Łóżko IKEA 75.00 10
3 Sofa IKEA 80.00 10
12 doniczka Inteligentny kwiat 99,00 9
9 Kredens IKEA 99,00 10
13 Podstawka IKEA 100,00 10

Ten sam wynik otrzymamy, jeśli nie określimy kolejności sortowania - pominiemy słowo ASC.

4.5 ORDER BY w wielu kolumnach

Operator ORDER BYumożliwia sortowanie wyniku po kilku kolumnach. Może to być bardzo przydatne, gdy pierwsza kolumna zawiera wiele zduplikowanych elementów. Ogólna postać tego operatora jest następująca:

ORDER BY column 1 order 1, column 2 order 2, column 3 order 3

Innymi słowy, jeśli po posortowaniu według pierwszej kolumny masz w pobliżu kilka identycznych wartości, to są one sortowane według drugiej kolumny i tak dalej.

Napiszmy zapytanie, które posortuje nasze produkty według marki, a dla produktów tej samej marki - w porządku malejącym według ich liczby. Oto jak wyglądałoby to żądanie:

SELECT * FROM product
ORDER BY brand ASC, count
DESC

Otrzymujemy następujący wynik zapytania:

ID nazwa marka cena liczyć
6 Półka Boscha 25.00 114
5 Gabinet Boscha 125.00 15
10 Płyta Boscha 199,00 10
jedenaście Fotel Boscha 44.00 8
2 Krzesło IKEA 5.00 45
1 Tabela IKEA 20.00 15
9 Kredens IKEA 99,00 10
13 Podstawka IKEA 100,00 10
4 Łóżko IKEA 75.00 10
3 Sofa IKEA 80.00 10
8 Lampa LG 15.00 100
7 telewizja LG 350,00 4
12 doniczka Inteligentny kwiat 99,00 9

Przyjrzyj się uważnie tabeli - jej wiersze są posortowane według nazwy marki (kolejność alfabetyczna), a wiersze z tą samą nazwą marki są posortowane według numeru produktu w kolejności malejącej (ostatnia kolumna).

Komentarze
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
Ta strona nie ma jeszcze żadnych komentarzy