Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Bazy danych

SELECT * FROM oceny WHERE ocena>2 ORDER BY ocena; Dana jest tabela oceny o polach id, nazwisko, imie, ocena. Przedstawione zapytanie jest przykładem

SELECT * FROM oceny WHERE ocena>2 ORDER BY ocena;
Dana jest tabela oceny o polach id, nazwisko, imie, ocena. Przedstawione zapytanie jest przykładem
A. projekcji
B. sumy
C. selekcji
D. łączenia

Opracowane na podstawie zadania CKE, czerwiec 2021 (arkusz E.14-SG-21.06): W arkuszu zapytanie miało postać SELECT ocena …, czyli było też projekcją (wybór jednej kolumny). Zmieniono je na SELECT *, aby jedyną poprawną odpowiedzią była selekcja.

To zapytanie jest przykładem selekcji, ponieważ z tabeli oceny wybierane są tylko te rekordy, które spełniają warunek ocena > 2. W bazach danych selekcja oznacza filtrowanie wierszy, czyli ograniczenie wyniku do konkretnych rekordów na podstawie warunku logicznego. Tutaj robi to klauzula WHERE. Fragment SELECT * oznacza, że mają zostać pokazane wszystkie kolumny: id, nazwisko, imie oraz ocena, ale nie wszystkie wiersze z tabeli, tylko te z oceną większą od 2. ORDER BY ocena jedynie porządkuje wynik rosnąco według oceny, nie zmienia charakteru operacji. W praktyce takie zapytanie wykorzystuje się np. do wyświetlenia uczniów, którzy zaliczyli przedmiot, pokazania aktywnych zamówień albo wyszukania produktów droższych niż określona kwota. Moim zdaniem warto zapamiętać prostą zasadę: WHERE filtruje rekordy, więc najczęściej mówimy o selekcji. Dobrą praktyką w większych systemach jest też unikanie SELECT * i podawanie konkretnych kolumn, bo zapytanie jest wtedy czytelniejsze, wydajniejsze i mniej zależne od późniejszych zmian struktury tabeli.
W tym zapytaniu łatwo pomylić pojęcia, bo samo słowo SELECT w SQL może sugerować wybieranie kolumn, ale w teorii baz danych trzeba patrzeć na to, co faktycznie robi całe zapytanie. Tutaj najważniejsza jest klauzula WHERE ocena > 2, bo ona odrzuca część rekordów i zostawia tylko te wiersze, które spełniają warunek. To właśnie jest selekcja. Projekcja oznacza wybór konkretnych kolumn, na przykład samo nazwisko i imie, bez pozostałych pól. Gdyby zapytanie miało postać SELECT nazwisko, imie FROM oceny, wtedy można by mocniej mówić o projekcji, bo ograniczamy zestaw atrybutów. W podanym przykładzie użyto jednak SELECT *, czyli pobierane są wszystkie kolumny, więc nie ma tu typowej projekcji kolumn. Suma też nie pasuje, ponieważ agregacja wymagałaby funkcji takiej jak SUM(ocena), zwykle z ewentualnym GROUP BY. Samo sortowanie przez ORDER BY nie jest sumowaniem ani obliczeniem. Łączenie natomiast dotyczy pracy z co najmniej dwiema tabelami i używa się do tego zwykle JOIN oraz warunku powiązania kluczy, na przykład id_ucznia. Tu mamy tylko jedną tabelę oceny. Z mojego doświadczenia częsty błąd polega na tym, że ktoś kojarzy SQL-owe SELECT z projekcją, a pomija WHERE. W testach trzeba więc rozdzielać składnię SQL od pojęć relacyjnych: WHERE filtruje wiersze, SELECT lista_kolumn wybiera kolumny, JOIN łączy tabele, a SUM liczy wartości liczbowe.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.