Przejdź do treści
Pewniak INF.03Średni

Cztery kwerendy SQL

W arkuszach INF.03 kwerendy pojawiają się niemal zawsze w komplecie czterech: proste wyszukanie, złączenie dwóch tabel, grupowanie z funkcją agregującą i modyfikacja danych. Schemat na każdą z nich.

Zajrzyj do dowolnego arkusza INF.03 z ostatnich lat — baza obuwie, baza samochody, baza firmy szkoleniowej. Za każdym razem inny temat, ale ten sam zestaw czterech zadań. To najbardziej powtarzalny element całej kwalifikacji i najszybszy sposób na pewne punkty.

1. Wyszukanie z warunkiem i sortowaniem

Najprostsza z czwórki. Uwaga idzie na to, czy wypisujesz dokładnie te kolumny, o które prosi polecenie — nadmiarowa kolumna bywa traktowana jako błąd.

SELECT nazwa, cena
FROM produkty
WHERE cena > 100
ORDER BY cena DESC;

Jeśli arkusz mówi „posortuj malejąco", musi pojawić się DESC. Domyślne sortowanie jest rosnące i brak tego słowa to najczęstsza strata punktu w tym zadaniu.

2. Złączenie dwóch tabel

Zadanie brzmi zwykle: wypisz nazwę produktu wraz z nazwą kategorii. Klucz obcy łączy tabele i trzeba go wskazać w warunku złączenia.

SELECT produkty.nazwa, kategorie.nazwa AS kategoria
FROM produkty
JOIN kategorie ON produkty.id_kategorii = kategorie.id;
  • Gdy obie tabele mają kolumnę o tej samej nazwie, zawsze poprzedzaj ją nazwą tabeli — inaczej baza zgłosi niejednoznaczność.
  • AS nadaje czytelny nagłówek i bywa wprost wymagane w treści.
  • Jeśli polecenie mówi „również te bez przypisanej kategorii", potrzebujesz LEFT JOIN, nie zwykłego JOIN.

3. Grupowanie z funkcją agregującą

Tu najczęściej gubi się cały punkt, bo uczniowie mylą WHERE z HAVING.

SELECT id_kategorii, COUNT(*) AS ile, AVG(cena) AS srednia
FROM produkty
GROUP BY id_kategorii
HAVING COUNT(*) > 3;

Zasada, która rozstrzyga zawsze

WHERE filtruje pojedyncze wiersze przed pogrupowaniem. HAVING filtruje gotowe grupy po pogrupowaniu. Jeśli w warunku występuje COUNT, SUM albo AVG — to zawsze HAVING.

4. Modyfikacja danych

Czwarte zadanie to zwykle UPDATE, INSERT albo DELETE.

UPDATE produkty
SET cena = cena * 0.9
WHERE id_kategorii = 2;

INSERT INTO kategorie (nazwa) VALUES ('Akcesoria');
  • Pominięty WHERE przy UPDATE lub DELETE. Zapytanie zmienia całą tabelę — na egzaminie to zero punktów, w pracy poważna awaria.
  • Wartości tekstowe bez apostrofów. Liczby idą bez, tekst i daty zawsze w apostrofach.
  • Obniżka o 10% zapisana jako cena * 0.1. To zostawia dziesiątą część ceny, a nie odejmuje dziesięć procent.

Składnię krok po kroku znajdziesz w teorii INF.03.

Kolejne zagadnienie, które warto mieć opanowane:

Struktura witryny i arkusz styl.css