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

Słowa kluczowe: Kwerenda bazy danych Operatory porównania w SQL SELECT w SQL WHERE w SQL

Dana jest tabela ksiazki z kolumnami: tytul, autor (typu tekstowego) oraz cena (typu liczbowego). Aby kwerendą SELECT wybrać jedynie tytuły i ceny książek autora Adam Mickiewicz, należy użyć zapisu

A.
SELECT * FROM ksiazki WHERE autor = 'Adam Mickiewicz';
B.
SELECT tytul, cena FROM ksiazki WHERE autor = Adam Mickiewicz;
C.
SELECT tytul, cena FROM ksiazki WHERE autor = 'Adam Mickiewicz';
D.
SELECT ksiazki FROM tytul, cena WHERE autor = 'Adam Mickiewicz';
W tym zapisie poprawnie użyto podstawowej składni kwerendy SELECT: SELECT tytul, cena FROM ksiazki WHERE autor = 'Adam Mickiewicz';. Część SELECT określa, które kolumny mają zostać pokazane w wyniku, więc wskazanie tytul oraz cena oznacza, że baza nie zwróci całego rekordu, tylko potrzebne dane. To jest dobra praktyka, bo nie pobieramy zbędnych kolumn, np. autora, skoro i tak filtrujemy po nim. FROM ksiazki wskazuje tabelę, z której pobierane są rekordy, a WHERE autor = 'Adam Mickiewicz' ogranicza wynik tylko do książek konkretnego autora. Ważne jest też użycie apostrofów, ponieważ autor jest kolumną tekstową, a wartości tekstowe w SQL zapisuje się jako literały znakowe. Moim zdaniem to jedna z tych rzeczy, które warto sobie utrwalić od razu: nazwy kolumn bez apostrofów, teksty w warunku w apostrofach. W praktyce podobnie napisałbyś zapytanie do sklepu internetowego, biblioteki albo panelu CMS, gdy chcesz wyświetlić tylko nazwę produktu i cenę dla wybranej kategorii.
W zapytaniach SQL bardzo ważna jest kolejność elementów i rozróżnienie między nazwą kolumny, nazwą tabeli oraz wartością tekstową. Zapis SELECT * FROM ksiazki WHERE autor = 'Adam Mickiewicz'; jest składniowo poprawny, ale nie spełnia dokładnie treści zadania, bo gwiazdka oznacza pobranie wszystkich kolumn z tabeli. W wyniku pojawiłby się także autor, a pytanie wymaga jedynie tytułów i cen. W realnych systemach to ma znaczenie, bo pobieranie nadmiarowych danych obciąża bazę, sieć i aplikację, a czasem może ujawnić informacje, których użytkownik nie powinien widzieć. Częsty błąd to myślenie, że skoro WHERE dobrze filtruje rekordy, to SELECT * już wystarczy. No nie do końca. Warunek wybiera wiersze, ale lista po SELECT wybiera kolumny. Równie istotne jest ujmowanie tekstów w apostrofy. Gdy zapiszesz autor = Adam Mickiewicz, baza potraktuje Adam i Mickiewicz jak identyfikatory, czyli np. nazwy kolumn albo aliasy, a nie jak jeden tekst. To zwykle skończy się błędem składniowym albo błędem o nieznanej kolumnie. Niepoprawne jest też mieszanie miejscami tabeli i kolumn, jak w schemacie SELECT ksiazki FROM tytul, cena. Po FROM musi znajdować się źródło danych, czyli tabela albo widok, a po SELECT kolumny, które chcemy wyświetlić. Dobra praktyka jest prosta: SELECT lista_kolumn FROM tabela WHERE warunek; i dopiero potem ewentualnie ORDER BY, LIMIT czy inne elementy.

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.