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: INSERT INTO w SQL UPDATE w SQL

W bazie danych sklepu istnieje tabela artykuly zawierająca pole logiczne nowy. Aby policzyć, ile artykułów ma w polu nowy wartość TRUE, należy zastosować kwerendę

A.
SELECT COUNT(*) FROM artykuly WHERE nowy = TRUE;
B.
SELECT SUM(*) FROM artykuly WHERE nowy = TRUE;
C.
SELECT COUNT(*) FROM artykuly SET nowy = TRUE;
D.
COUNT SELECT * FROM artykuly WHERE nowy = TRUE;
Ta kwerenda jest właściwa, bo używa klasycznego mechanizmu zliczania rekordów w SQL: SELECT COUNT(*) FROM artykuly WHERE nowy = TRUE;. Funkcja COUNT(*) zwraca liczbę wierszy spełniających warunek, a klauzula WHERE ogranicza wynik tylko do tych artykułów, dla których pole logiczne nowy ma wartość TRUE. W praktyce dokładnie tak robi się np. w panelu sklepu internetowego, gdy chcemy policzyć produkty oznaczone jako nowości, aktywne promocje albo towary widoczne na stronie głównej. Moim zdaniem to jedna z podstawowych kwerend, które warto mieć dobrze opanowane, bo pojawia się ciągle w raportach i statystykach. Dobrą praktyką jest stosowanie COUNT(*) wtedy, gdy interesuje nas liczba rekordów, a nie suma wartości w konkretnej kolumnie. W różnych systemach baz danych wartości logiczne mogą być zapisywane jako TRUE/FALSE, 1/0 albo typ BOOLEAN, ale sama idea zostaje taka sama: filtrujemy dane w WHERE, a potem liczymy pasujące wiersze.
W tym zadaniu łatwo pomylić funkcje agregujące albo składnię polecenia SQL, bo na pierwszy rzut oka wszystkie zapisy kręcą się wokół liczenia rekordów. Trzeba jednak pamiętać, że do zliczania wierszy służy COUNT(*), a nie SUM(*). Funkcja SUM jest przeznaczona do sumowania wartości liczbowych z wybranej kolumny, na przykład SUM(cena) albo SUM(ilosc). Zapis SUM(*) nie ma sensu w standardowym SQL, ponieważ gwiazdka oznacza wszystkie kolumny, a nie konkretną wartość liczbową do dodania. To taki typowy błąd myślowy: skoro chcemy dostać jedną liczbę, to ktoś wybiera SUM, ale tu nie sumujemy cen ani stanów magazynowych, tylko liczymy rekordy. Równie ważna jest kolejność słów kluczowych. Poprawna kwerenda SELECT zaczyna się od SELECT, potem podaje się wyrażenie wynikowe, czyli np. COUNT(*), następnie FROM z nazwą tabeli i ewentualnie WHERE z warunkiem. Konstrukcja zaczynająca się od COUNT SELECT nie jest poprawnym poleceniem SQL, bo COUNT nie jest instrukcją, tylko funkcją używaną wewnątrz SELECT. Trzeba też odróżnić WHERE od SET. Klauzula WHERE filtruje rekordy, czyli mówi bazie: weź tylko te wiersze, które spełniają warunek. SET służy głównie w instrukcji UPDATE do zmiany wartości pól, np. UPDATE artykuly SET nowy = TRUE WHERE id = 5;. W zapytaniu SELECT nie używa się SET do filtrowania danych. Z mojego doświadczenia wynika, że najlepiej zapamiętać prosty schemat: SELECT co_pokazać FROM skąd WHERE jaki_warunek. Tutaj chcemy pokazać liczbę rekordów, pobrać je z tabeli artykuly i ograniczyć do nowy = TRUE.

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.