KWALIFIKACJA INF3 - STYCZEŃ 2016

PYTANIE NR 18.
Zdefiniowano bazę danych z tabelą podzespoły o polach: model, producent, typ, cena. Aby wyświetlić wszystkie modele pamięci RAM firmy Kingston w kolejności od najtańszej do najdroższej, należy posłużyć się kwerendą:
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawne zapytanie musi: (1) wybrać kolumnę model z tabeli podzespoły, (2) zawęzić wynik do rekordów, gdzie typ='RAM' oraz producent='Kingston' (operator AND), a następnie (3) posortować wyniki rosnąco po cenie, czyli ORDER BY cena ASC (od najtańszej do najdroższej).

Pełne wyjaśnienie:

Aby uzyskać listę modeli pamięci RAM firmy Kingston od najtańszej do najdroższej, zapytanie SQL musi spełnić jednocześnie trzy warunki.

  • Wybór danych: klauzula SELECT model wskazuje, że interesuje nas wyłącznie kolumna model, a nie wszystkie pola rekordu.
  • Wybór źródła: klauzula FROM podzespoły określa tabelę, z której pobieramy rekordy.
  • Filtrowanie: w WHERE muszą wystąpić oba kryteria naraz: typ='RAM' oraz producent='Kingston'. Dlatego używa się operatora AND. Zastosowanie OR spowodowałoby, że do wyniku trafiłyby także rekordy, które spełniają tylko jeden warunek (np. dowolny RAM innego producenta albo dowolny produkt Kingston niebędący RAM).
  • Sortowanie: wymóg "od najtańszej do najdroższej" oznacza porządek rosnący po kolumnie cena, czyli ORDER BY cena ASC. Kierunek DESC dałby kolejność odwrotną (od najdroższej do najtańszej).

Dlatego poprawna jest kwerenda z jednoczesnym filtrem przez AND oraz sortowaniem rosnącym. Zapytanie z ORDER BY cena DESC odpada, bo odwraca kolejność. Wariant z OR dodatkowo rozszerza wynik o niepożądane rekordy i jeszcze sortuje malejąco. Odpowiedź z błędną tabelą po FROM (lub niepoprawnym polem w ORDER BY) jest niepoprawna składniowo lub logicznie, bo nie odwołuje się do właściwej relacji i kolumn.

Wskazówka egzaminacyjna: najpierw sprawdź, czy warunki w WHERE zawężają wynik dokładnie do wymaganej grupy (zwykle AND), a dopiero potem dopasuj sortowanie: ASC = rosnąco (tanie→drogie), DESC = malejąco (drogie→tanie).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Klauzula WHERE filtruje wiersze tabeli i przepuszcza tylko te rekordy, które spełniają podane warunki. Dzięki temu nie pobierasz całej tabeli, tylko interesującą podgrupę danych, np. tylko podzespoły określonego typu i producenta.
AND wymaga spełnienia wszystkich warunków jednocześnie, więc zawęża wynik. OR wymaga spełnienia co najmniej jednego warunku, więc zwykle rozszerza wynik. W filtrze typu+producenta zazwyczaj potrzebujesz AND.
Użyj ORDER BY po kolumnie ceny z kierunkiem rosnącym: ORDER BY cena ASC. Kierunek ASC oznacza rosnąco (mniejsze wartości najpierw), więc ceny będą od najniższej do najwyższej.
DESC sortuje malejąco, czyli od największej wartości do najmniejszej. Jeśli kolumna cena zawiera ceny, to wynik zacznie się od najdroższych rekordów. To jest odwrotność oczekiwanej kolejności.
Tak. W SQL lista po słowie SELECT określa, które kolumny mają znaleźć się w wyniku. Jeśli wpiszesz tylko model, dostaniesz jedną kolumnę z nazwami modeli, bez producenta, typu i ceny.
Najczęściej myli się AND z OR, przez co wynik jest zbyt szeroki, oraz ASC z DESC, co odwraca kolejność sortowania. Zdarza się też wybór złej tabeli w FROM lub literówki w nazwach kolumn.
ORDER BY stosuje się, gdy aplikacja ma wyświetlać listy w ustalonej kolejności, np. produkty rosnąco po cenie, artykuły malejąco po dacie, użytkowników alfabetycznie po nazwisku. To częsty element list w interfejsie WWW.
Wynik będzie zawierał rekordy spełniające dowolny z warunków, a nie oba naraz. Przykładowo pojawią się wszystkie pamięci RAM różnych producentów oraz wszystkie produkty Kingston (np. dyski), nawet jeśli nie są RAM. To zwykle nie spełnia treści zadania.
Porównaj nazwę po FROM z treścią zadania (jaka tabela została zdefiniowana) i upewnij się, że kolumny użyte w SELECT, WHERE i ORDER BY rzeczywiście należą do tej tabeli lub są poprawnie kwalifikowane.
Średnik jest często używany jako separator poleceń (np. w konsoli lub skryptach), ale nie zawsze jest wymagany przez każdą bibliotekę czy narzędzie. Na egzaminach i w wielu edytorach SQL zwykle można go dopisać, bo poprawia czytelność i domyka instrukcję.
info

To pytanie poprawnie rozwiązuje 69% zdających egzamin. średnie

Źródła:

  • MySQL 8.0 Reference Manual: SELECT Statement (ORDER BY, ASC/DESC) — https://dev.mysql.com/doc/refman/8.0/en/select.html (dostęp: 2026-02-27)
  • PostgreSQL Documentation (current): Queries — ORDER BY (ASC/DESC) — https://www.postgresql.org/docs/current/queries-order.html (dostęp: 2026-02-27)
  • SQLite Documentation: SELECT — ORDER BY clause — https://www.sqlite.org/lang_select.html#orderby (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja wybranej bazy (MySQL/PostgreSQL): SELECT, WHERE, ORDER BY
  • Materiały do INF.3 z działu: relacyjne bazy danych i język SQL
  • Ćwiczenia praktyczne: tworzenie zapytań z filtrami AND/OR i sortowaniem ASC/DESC na przykładowych tabelach

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego