MySQL
Wyszukiwarka
Wprowadzenie do MySQL
Tworzenie i modyfikowanie tabel
- Zapytanie CREATE: Tworzenie tabeli
- Instrukcja ALTER: Modyfikacja tabeli
- Zapytanie DROP: Usuwanie tabeli
Zapytania pobierające dane
- Zapytanie SELECT: Podstawy
- Zapytanie SELECT: Klauzula WHERE
- Zapytanie SELECT: Sortowanie danych (ORDER BY)
- Zapytanie SELECT: Filtrowanie danych (LIKE, IN, BETWEEN)
Zapytania modyfikujące dane
- Zapytanie INSERT: Dodawanie danych
- Zapytanie UPDATE: Aktualizacja danych
- Zapytanie REPLACE: Zastępowanie danych
Zapytania usuwające dane
Złączenia i relacje
- Podstawy złączeń (JOIN): INNER JOIN
- Zewnętrzne złączenia (OUTER JOIN)
- Złączenia CROSS JOIN i SELF JOIN
- Tworzenie relacji między tabelami
Funkcje agregujące i grupowanie
- Funkcje agregujące: COUNT, SUM, AVG
- Grupowanie danych: GROUP BY i HAVING
- Zapytania z funkcjami MAX i MIN
Zarządzanie użytkownikami
- Tworzenie nowego użytkownika
- Przydzielanie uprawnień użytkownikom
- Usuwanie użytkowników i cofanie uprawnień
- Zarządzanie hasłami użytkowników
Zaawansowane funkcje MySQL
- Transakcje w MySQL: BEGIN, COMMIT, ROLLBACK
- Tworzenie widoków (VIEWS)
- Procedury składowane: Tworzenie i wywoływanie
- Funkcje użytkownika (USER FUNCTIONS)
Grupowanie danych: GROUP BY i HAVING
Grupowanie danych to jedna z najczęściej używanych technik w bazach danych, pozwalająca na agregację wyników i analizowanie ich w sposób bardziej szczegółowy. W MySQL, za pomocą klauzul GROUP BY oraz HAVING, możemy grupować dane na podstawie określonych kryteriów oraz filtrować te grupy w celu uzyskania bardziej precyzyjnych wyników.
📌 Grupowanie danych z GROUP BY
✅ Podstawowa składnia - opis:
- GROUP BY służy do grupowania danych na podstawie jednej lub więcej kolumn. Celem jest agregowanie danych (np. zliczanie, sumowanie, średnia) dla każdej grupy.
- Po zgrupowaniu danych, możemy zastosować funkcje agregujące, takie jak COUNT(), SUM(), AVG(), itd., aby obliczyć wartości dla każdej grupy.
✅ Przykład: Grupowanie danych według kategorii i liczenie produktów w każdej kategorii
Przykład
-- Podstawowa składnia
SELECT kolumna, AGREGAT(kolumna)
FROM tabela
GROUP BY kolumna;
-- Przykład
SELECT kategoria, COUNT(*) AS liczba_produktow
FROM produkty
GROUP BY kategoria;
📌 Filtrowanie grup z HAVING
✅ Podstawowa składnia - opis:
- Klauzula HAVING jest używana do filtrowania wyników po grupowaniu danych. Można jej używać w połączeniu z GROUP BY, aby zastosować warunki do grup danych, a nie do poszczególnych rekordów.
- Zwykle stosujemy ją, gdy chcemy filtrować wyniki agregacji (np. tylko te grupy, które mają sumę większą niż określona wartość).
✅ Przykład: Grupowanie danych i filtracja grup z liczbą zamówień większą niż 5
Przykład
-- Podstawowa składnia
SELECT kolumna, AGREGAT(kolumna)
FROM tabela
GROUP BY kolumna
HAVING warunek;
-- Przykład
SELECT klient_id, COUNT(*) AS liczba_zamowien
FROM zamowienia
GROUP BY klient_id
HAVING COUNT(*) > 5;
📌 Różnica między WHERE i HAVING
✅ Składnia i różnice:
- WHERE jest używane przed grupowaniem, do filtrowania rekordów w tabeli.
- HAVING jest używane po grupowaniu, do filtrowania grup danych.
📌 Opis:
- WHERE stosujemy, gdy chcemy filtrować dane przed grupowaniem, np. zamówienia po 1 stycznia 2023 roku.
- HAVING stosujemy, gdy chcemy filtrować dane po grupowaniu, np. tylko tych klientów, których łączna wartość zamówień jest większa niż 500.
Przykład
-- Przykład użycia WHERE:
SELECT klient_id, SUM(cena) AS suma_zamowien
FROM zamowienia
WHERE data > '2023-01-01'
GROUP BY klient_id;
-- Przykład użycia HAVING:
SELECT klient_id, SUM(cena) AS suma_zamowien
FROM zamowienia
GROUP BY klient_id
HAVING SUM(cena) > 500;
Podsumowanie
- GROUP BY pozwala na grupowanie danych na podstawie jednej lub wielu kolumn, co umożliwia wykonywanie operacji agregujących na grupach.
- HAVING filtruje dane po grupowaniu, co pozwala na stosowanie warunków do wyników funkcji agregujących, takich jak COUNT(), SUM(), AVG().
- Klauzula WHERE filtruje dane przed grupowaniem, podczas gdy HAVING jest używane do filtracji po grupowaniu.
- Funkcja GROUP BY jest często używana z funkcjami agregującymi, aby uzyskać bardziej złożone raporty i analizy danych.