Łapka LogoŁapka Infa
🗄️

SQL - Wybieranie Danych (SELECT i JOIN)

Podstawy zapytań na przykładzie bazy klientów pizzerii. Odróżnij MS Accessa od czystego MySQL.

Bazy Danych: SELECT i JOIN

Zanim zaczniesz wyciągać dane z bazy, musisz zrozumieć jedno: SQL (Structured Query Language) to język deklaratywny. Oznacza to, że mówisz komputerowi CO chcesz uzyskać, a nie JAK ma to zrobić.

Wyobraź sobie, że zarządzasz pizzerią. Masz dwie tabele: Klienci oraz Zamowienia.

1. Wyciąganie Danych (SELECT)

Chcesz zobaczyć wszystkie imiona klientów? To banalnie proste:

SELECT Imie, Nazwisko 
FROM Klienci;

A co jeśli chcesz znaleźć tylko tych klientów, którzy mieszkają na "Klonowej"? Tutaj wchodzi instrukcja WHERE:

SELECT Imie, Nazwisko 
FROM Klienci 
WHERE Ulica = 'Klonowa';

2. Łączenie Tabel (JOIN)

Najważniejsza rzecz na maturze to łączenie tabel. W jednym miejscu masz dane o Kliencie, w drugim o jego Zamówieniach. Kluczem obcym w Zamowienia jest zazwyczaj ID_Klienta.

Żeby zobaczyć, kto złożył jakie zamówienie, używamy INNER JOIN:

SELECT Klienci.Imie, Zamowienia.DataZamowienia
FROM Klienci
JOIN Zamowienia ON Klienci.ID_Klienta = Zamowienia.ID_Klienta;

💡 Różnica MS Access vs MySQL (Matura)

Na maturze zazwyczaj masz wybór programu. Jeśli korzystasz z MS Access (kreator zapytań SQL):

  • Access uwielbia nawiasy! Gdy łączysz więcej niż dwie tabele, musisz to robić zagnieżdżając (JOIN ... ON ...) w nawiasach.
  • Access czasem używa * jako znaku wieloznacznego (np. LIKE 'A*'), podczas gdy w standardowym SQL / MySQL poprawnym znakiem jest % (np. LIKE 'A%'). Pamiętaj o tym pisząc zapytania z palca!

🧠 Dla Dociekliwych

Dlaczego nie łączyć tabel "po staremu" po przecinku? Kiedyś (bardzo dawno temu) pisało się zapytania tak:

SELECT Klienci.Imie, Zamowienia.Data
FROM Klienci, Zamowienia
WHERE Klienci.ID_Klienta = Zamowienia.ID_Klienta;

Dlaczego tego nie robić? Gdy zapomnisz klauzuli WHERE, baza danych połączy każdy wiersz z Klienci z każdym wierszem w Zamowienia (iloczyn kartezjański). Z 1000 klientów i 1000 zamówień robi się milion bezsensownych wierszy! Używając JOIN ... ON ... zmuszasz się do wyraźnego zdefiniowania warunku łączenia, co chroni przed błędami i ułatwia czytanie skomplikowanych zapytań.