W tej lekcji nauczysz się manipulować danymi w SQL używając operatorów, funkcji i sortowania. Poznasz podstawowe narzędzia do filtrowania, agregowania i porządkowania danych, aby wydobywać z nich cenne informacje.
Operatory są podstawą w SQL, umożliwiając nam filtrowanie i porównywanie danych. Mamy operatory porównawcze (np. =, !=, >, <, >=, <=) i logiczne (AND, OR, NOT).
Przykłady:
SELECT * FROM produkty WHERE cena > 10;
(Wybiera produkty droższe niż 10 zł)SELECT * FROM klienci WHERE kraj = 'Polska' AND miasto = 'Warszawa';
(Wybiera klientów z Polski i Warszawy)SELECT * FROM zamowienia WHERE NOT stan = 'Zrealizowane';
(Wybiera zamówienia, które nie są zrealizowane)Ćwiczenie: Spróbuj napisać zapytanie wybierające wszystkich pracowników, którzy mają więcej niż 30 lat. Zakładamy, że tabela 'pracownicy' zawiera kolumnę 'wiek'.
Funkcje agregujące służą do wykonywania obliczeń na grupach wierszy. Najpopularniejsze to:
SUM()
: Sumuje wartości.AVG()
: Oblicza średnią.COUNT()
: Zlicza wiersze.MIN()
: Znajduje minimalną wartość.MAX()
: Znajduje maksymalną wartość.Przykłady:
SELECT SUM(cena) FROM zamowienia;
(Sumuje wartość wszystkich zamówień)SELECT AVG(ocena) FROM recenzje;
(Oblicza średnią ocen)SELECT COUNT(*) FROM produkty;
(Zlicza liczbę produktów)SELECT MAX(cena) FROM produkty;
(Znajduje najdroższy produkt)Wskazówka: Pamiętaj, że funkcje agregujące często używane są z klauzulą GROUP BY
(która będzie omawiana w kolejnych lekcjach), pozwalającą na grupowanie danych.
SQL oferuje również funkcje do manipulacji tekstem, bardzo przydatne w pracy z danymi tekstowymi.
UPPER()
: Zamienia tekst na wielkie litery.LOWER()
: Zamienia tekst na małe litery.SUBSTRING(tekst, start, długość)
: Wyodrębnia fragment tekstu.LENGTH()
: Zwraca długość tekstu.CONCAT()
: Łączy łańcuchy znaków (w niektórych systemach ||
)Przykłady:
SELECT UPPER(nazwa) FROM produkty;
(Wyświetla nazwy produktów wielkimi literami)SELECT SUBSTRING(nazwa, 1, 5) FROM produkty;
(Wyświetla pierwsze 5 znaków nazwy produktu)Ćwiczenie: Napisz zapytanie, które wyświetla pierwsze trzy litery nazwiska każdego klienta z tabeli klienci
.
Klauzula ORDER BY
pozwala sortować wyniki zapytań. Domyślnie sortuje rosnąco (ASC - ascending). Możemy również sortować malejąco (DESC - descending).
Przykłady:
SELECT * FROM produkty ORDER BY cena ASC;
(Sortuje produkty według ceny rosnąco)SELECT * FROM produkty ORDER BY cena DESC;
(Sortuje produkty według ceny malejąco)SELECT * FROM klienci ORDER BY kraj, miasto;
(Sortuje najpierw po kraju, a następnie po mieście)Ćwiczenie: Spróbuj posortować produkty według nazwy alfabetycznie, a następnie według ceny rosnąco.
Explore advanced insights, examples, and bonus exercises to deepen understanding.
Witaj! Kontynuujemy naszą podróż po świecie SQL. Dzisiaj zagłębimy się w bardziej zaawansowane techniki manipulacji danymi, które pozwolą Ci wydobywać jeszcze więcej informacji z baz danych. Pamiętaj, że praktyka czyni mistrza – im więcej zapytani napiszesz, tym lepiej zrozumiesz niuanse SQL.
Przejdziemy teraz do bardziej zaawansowanych aspektów, które rozwijają wiedzę zdobytą w poprzedniej lekcji.
Operator LIKE
pozwala na filtrowanie danych na podstawie wzorca. Używamy go, gdy chcemy znaleźć wartości, które pasują do określonego wzorca, a nie dokładnie do konkretnej wartości. Kluczowe są tutaj symbole %
(dowolna liczba znaków) i _
(jeden znak). Pomyśl o tym jak o "szukaj w tekście" w SQL.
Przykład: Chcemy znaleźć wszystkich klientów z nazwiskami zaczynającymi się na "Kow".
SELECT * FROM Klienci WHERE Nazwisko LIKE 'Kow%';
%
na końcu oznacza "cokolwiek po 'Kow'". Jeśli chcielibyśmy znaleźć osoby z nazwiskiem składającym się z dokładnie 5 liter i zaczynającym się na "Kow", użylibyśmy: WHERE Nazwisko LIKE 'Kow__';
(dwa znaki podkreślenia).
Funkcje agregujące (SUM, AVG, COUNT, MIN, MAX) są potężne, ale co zrobić, gdy chcemy je zastosować na podzbiorze danych? Klauzula HAVING
pozwala na filtrowanie wyników agregacji.
Przykład: Chcemy znaleźć kategorie produktów, których średnia cena przekracza 50 zł.
SELECT Kategoria, AVG(Cena) AS SredniaCena FROM Produkty GROUP BY Kategoria HAVING AVG(Cena) > 50;
Zauważ, że używamy GROUP BY
przed HAVING
.
IN
pozwala sprawdzać, czy wartość znajduje się w liście wartości. BETWEEN
ułatwia sprawdzanie zakresów. Zastępują one często złożone warunki OR
i AND
, czyniąc zapytania bardziej czytelnymi.
Przykład z IN: Szukamy klientów z miast: Warszawa, Kraków lub Gdańsk.
SELECT * FROM Klienci WHERE Miasto IN ('Warszawa', 'Kraków', 'Gdańsk');
Przykład z BETWEEN: Szukamy produktów w cenie od 20 do 50 zł.
SELECT * FROM Produkty WHERE Cena BETWEEN 20 AND 50;
Załóżmy, że masz tabelę Zamowienia
z kolumną AdresDostawy
. Napisz zapytanie, które znajdzie wszystkie zamówienia wysłane do miast zaczynających się na "Wro" (np. Wrocław).
-- Twój kod tutaj
Masz tabelę Pracownicy
z kolumnami Dzial
i Pensja
. Napisz zapytanie, które znajdzie działy, w których średnia pensja jest wyższa niż 6000 zł.
-- Twój kod tutaj
Masz tabelę Produkty
z kolumną IdKategorii
i Cena
. Napisz zapytanie, które znajdzie produkty, których kategoria to 1, 3 lub 5 oraz cena jest między 10 a 30 zł.
-- Twój kod tutaj
Te umiejętności są kluczowe w wielu dziedzinach:
Spróbuj rozwiązać bardziej złożone zadanie. Mając tabele Zamowienia
, Produkty
i Klienci
(z powiązaniami kluczy obcych), napisz zapytanie, które znajdzie:
-- Twój kod tutaj
Aby kontynuować swoją naukę, możesz zbadać następujące tematy:
SUBSTRING
, REPLACE
, CONCAT
.Zasoby: Szukaj tutoriali online (np. na YouTube, w dokumentacji baz danych) i rozwiązuj zadania na platformach takich jak SQLZoo, Hackerrank. Świetnym ćwiczeniem jest próba napisania SQL dla prawdziwych baz danych (np. używanych w e-commerce lub systemach rezerwacji).
Załóżmy, że masz tabelę `sprzedaz` z kolumnami `produkt`, `cena` i `data_sprzedazy`. Napisz zapytanie SQL, które wyświetli wszystkie transakcje sprzedaży, gdzie cena produktu jest wyższa niż 50 zł.
Masz tabelę `zamowienia` z kolumnami `id_zamowienia`, `id_klienta` i `wartosc`. Napisz zapytanie SQL, które obliczy łączną wartość wszystkich zamówień.
Masz tabelę `pracownicy` z kolumną `imie`. Napisz zapytanie SQL, które wyświetli imiona pracowników w postaci 'Imie' (pierwsza litera duża, reszta mała).
Masz tabelę `produkty` z kolumnami `nazwa` i `cena`. Napisz zapytanie, które wyświetli produkty posortowane od najdroższego do najtańszego, ale tylko te, których cena jest powyżej 20 zł.
Wyobraź sobie, że jesteś analitykiem w sklepie internetowym. Musisz przygotować raport sprzedaży, który pokazuje produkty sprzedane w cenie powyżej 100 zł, posortowane od najdroższego do najtańszego. Dodatkowo, dla każdego klienta chcesz wyświetlić jego imię, ale w postaci wielkich liter. Użyj poznanych operatorów, funkcji i sortowania, aby wygenerować ten raport.
Przygotuj się na poznawanie klauzuli GROUP BY i HAVING, które pozwalają na bardziej zaawansowaną analizę danych.
We're automatically tracking your progress. Sign up for free to keep your learning paths forever and unlock advanced features like detailed analytics and personalized recommendations.