Bazy danych i SQL na egzaminie INF.03

INF.03 · teoria
autor: redakcja · 24.08.2026 · aktualizacja: 08.09.2026
Bazy danych i SQL w kwalifikacji INF.03: najważniejsze zasady, przykłady i powiązane pytania w banku. Skrót działu, który otwiera lekcje o projektowaniu baz danych.
Pro­jek­to­wa­nie bazy wraca w każdej sesji: w części pi­sem­nej jako py­ta­nia o klucze i re­la­cje, w prak­tycz­nej przy two­rze­niu tabel, łą­cze­niu danych i wy­świe­tla­niu wyniku w apli­ka­cji. Warto ro­zu­mieć, skąd bierze się re­zul­tat za­py­ta­nia, za­miast uczyć się samych nazw po­le­ceń. Ten ar­ty­kuł to skrót; pełne omó­wie­nie jest w pięciu lek­cjach wy­mie­nio­nych na końcu.

Od modelu danych do tabel

Klucz główny jed­no­znacz­nie wska­zu­je wiersz, a klucz obcy łączy go z re­kor­dem w innej tabeli. Jeden klient może mieć wiele za­mó­wień, więc to re­la­cja jeden do wielu: klucz obcy klient_id stoi po stro­nie za­mó­wień i wska­zu­je na klient.id.
Tabela klient z kluczem głównym id i tabela zamowienie z kluczem obcym klient_id, który wskazuje na klient.id; zamówienie 13 ma NULL, bo powstało bez klienta
Re­la­cji wiele do wielu nie da się za­pi­sać dwiema ta­be­la­mi, bo obie strony mają wiele po­wią­zań. Wcho­dzi wtedy tabela po­śred­nia z dwoma klu­cza­mi obcymi, które razem tworzą klucz główny:
Tabele uczen i grupa połączone tabelą uczen_grupa: dwa klucze obce, razem klucz główny, jeden wiersz na każdą parę uczeń i grupa
Ogra­ni­cze­nie
Co pil­nu­je
PRIMARY KEY
jed­no­znacz­ność wier­sza
FOREIGN KEY
spój­ność po­wią­zań między ta­be­la­mi
UNIQUE
brak po­wtó­rzeń w ko­lum­nie
NOT NULL
war­tość musi ist­nieć

Nor­ma­li­za­cja bez de­fi­ni­cji na pamięć

  • 1.
    Pierw­sza postać nor­mal­na: po­je­dyn­cza war­tość w każdym polu, a nie lista te­le­fo­nów w jednej ko­mór­ce.
  • 2.
    Druga: bez za­leż­no­ści od części klucza zło­żo­ne­go.
  • 3.
    Trze­cia: bez za­leż­no­ści po­śred­nich, na przy­kład nazwy miasta za­leż­nej od kodu pocz­to­we­go za­miast od iden­ty­fi­ka­to­ra klien­ta.
Celem jest ogra­ni­cze­nie po­wtó­rzeń i błędów przy zmia­nach: gdy nazwa ka­te­go­rii wy­stę­pu­je w każdym pro­duk­cie, li­te­rów­kę po­pra­wia się w wielu miej­scach. Po wy­dzie­le­niu tabeli kategoria nazwa jest za­pi­sa­na raz, a pro­dukt trzyma tylko klucz obcy.

SELECT, GROUP BY i HAVING

1
2
3
4
SELECT klient_id, COUNT(*) AS ile
FROM zamowienie
GROUP BY klient_id
HAVING COUNT(*) >= 3;
WHERE fil­tru­je wier­sze przed gru­po­wa­niem, HAVING fil­tru­je gotowe grupy, ORDER BY ustala ko­lej­ność, a LIMIT ogra­ni­cza liczbę re­kor­dów.

Złą­cze­nia i wier­sze bez pary

Złą­cze­nie
Co zwraca
INNER JOIN
tylko pa­su­ją­ce re­kor­dy z obu tabel
LEFT JOIN
każdy wiersz z lewej tabeli, braki po prawej jako NULL
Z tej róż­ni­cy bierze się gotowy wzo­rzec na py­ta­nie „kto nic nie za­mó­wił":
1
2
3
4
SELECT klient.imie
FROM klient
LEFT JOIN zamowienie ON zamowienie.klient_id = klient.id
WHERE zamowienie.id IS NULL;
Samo LEFT JOIN pokaże WSZYSTKICH klien­tów, także tych z za­mó­wie­nia­mi; do­pie­ro wa­ru­nek na NULL zo­sta­wia klien­tów bez pary.

NULL, czyli brak znanej war­to­ści

NULL nie jest zerem ani pustym tek­stem, więc zwykłe po­rów­na­nie z nim nie działa:
1
2
3
4
5
6
WHERE kwota = NULL -- ZERO wierszy, zawsze
WHERE kwota IS NULL -- tak sie to sprawdza
WHERE kwota IS NOT NULL
COUNT(*) -- liczy wszystkie wiersze
COUNT(kolumna) -- pomija te z NULL

Zmiana danych

INSERT dodaje rekord, UPDATE zmie­nia dane, DELETE usuwa wier­sze. Przed UPDATE lub DELETE sprawdź wa­ru­nek WHERE od­po­wia­da­ją­cym mu SELECT-em. Dane od użyt­kow­ni­ka prze­ka­zuj jako pa­ra­me­try pre­pa­red sta­te­ment (przy­kład w ar­ty­ku­le o PHP), za­miast skle­jać SQL z tekstu for­mu­la­rza.
Roz­biór za­py­tań krok po kroku, z pu­łap­ka­mi NULL i NOT IN, znaj­dziesz w ar­ty­ku­le o SQL, a pełne za­da­nia w ar­ku­szach INF.03.

Lekcje działu

Po­le­ce­nia SQL od SELECT po import bazy omawia osobny dział, otwie­ra go skrót o za­py­ta­niach SQL.
ZAWODNIK
egzamin zawodowy INF.02 · INF.03 · INF.04
Serwer Discord›
Egzaminy zawodowe IT/Matury/Studia
@yastor
© 2026 Zawodnik · by Yastor
Arkusze i zasady oceniania pochodzą z CKE. Serwis nie jest powiązany z Centralną Komisją Egzaminacyjną.