Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 23 kwietnia 2026 11:54
  • Data zakończenia: 23 kwietnia 2026 12:14

Egzamin niezdany

Wynik: 17/40 punktów (42,5%)

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

Na zakończenie dnia w bazie danych sklepu spożywczego generowany jest raport, który pokazuje produkty wraz z ich dostawcami, dla których liczba sztuk w magazynie jest poniżej 10. Do stworzenia tego raportu użyto kwerendy

A. CHECK TABLE
B. INSERT INTO
C. SELECT
D. UPDATE
W kontekście bazy danych, kwerenda SELECT jest podstawowym narzędziem do pobierania danych. W przypadku raportu, który ma wyświetlić produkty z dostawcami, dla których stan magazynowy jest mniejszy niż 10 sztuk, SELECT jest jedyną odpowiednią instrukcją SQL do realizacji takiego zadania. Używając SELECT, można określić, które kolumny z tabeli mają być wyświetlane oraz zastosować filtry, aby ograniczyć wyniki tylko do tych, które spełniają określone warunki. Na przykład, przykładowa kwerenda mogłaby wyglądać tak: SELECT product_name, supplier_name FROM products WHERE stock < 10; Taka instrukcja przeszuka tabelę 'products' i wyświetli jedynie te produkty, które mają niski stan magazynowy. SELECT jest zgodny z normami SQL i pozwala na wykorzystanie różnych funkcji agregujących oraz operacji łączenia danych, co czyni go niezwykle wszechstronnym narzędziem w zarządzaniu bazami danych. Dzięki umiejętnemu zastosowaniu SELECT, można nie tylko generować raporty, ale także wspierać procesy decyzyjne w zarządzaniu zapasami.

Pytanie 2

W języku SQL, aby wybrać wszystkie rekordy z tabeli B, w tym część wspólną z tabelą A, należy zastosować typ związku

Ilustracja do pytania
A. A RIGHT JOIN B
B. A LEFT JOIN B
C. A INNER JOIN B
D. A FULL OUTER JOIN B
Poprawnie – w tym zadaniu kluczowe jest zrozumienie, że interesuje nas **wszystko z tabeli B**, a dodatkowo – tam gdzie się da – dokładamy dane z tabeli A. Dokładnie tak działa `RIGHT JOIN` zapisany jako `A RIGHT JOIN B ON ...`. Prawa tabela w zapisie JOIN (czyli B) jest zawsze tą „obowiązkową”: dostajemy wszystkie jej wiersze, a dane z lewej (A) pojawiają się tylko tam, gdzie warunek łączenia jest spełniony. Tam gdzie dopasowania w A nie ma, kolumny z A przyjmują wartość `NULL`. To dokładnie odpowiada zielonemu obszarowi na diagramie – cała B plus część wspólna A∩B. W praktyce taki RIGHT JOIN przydaje się np. gdy tabela B jest tabelą główną (np. `Zamowienia`), a tabela A jest pomocnicza (np. `Klienci_archiwalni`), ale z jakiegoś powodu w zapytaniu chcemy właśnie B mieć „gwarantowaną” – czyli nawet jeśli w A brakuje powiązanego rekordu, zamówienie i tak ma się pojawić w wynikach. Przykładowo: `SELECT * FROM Klienci_archiwalni A RIGHT JOIN Zamowienia B ON A.id_klienta = B.id_klienta;` Dobra praktyka w SQL mówi, że częściej stosuje się `LEFT JOIN`, bo jest czytelniejszy (łatwiej myśleć: „biorę wszystko z lewej”), ale logicznie RIGHT JOIN robi to samo, tylko „odwraca perspektywę”. Wiele zespołów wręcz zaleca, żeby zamiast RIGHT JOIN przepisać zapytanie tak, by użyć LEFT JOIN i zamienić kolejność tabel – ale na egzaminach i w testach warto znać oba. Moim zdaniem dobrze jest też od razu kojarzyć: `LEFT JOIN` – wszystko z lewej, `RIGHT JOIN` – wszystko z prawej, `INNER JOIN` – tylko przecięcie, `FULL OUTER JOIN` – suma zbiorów. Dzięki temu każde zadanie z diagramem Venna w SQL robi się dużo prostsze i mniej mylące.

Pytanie 3

DELETE FROM Pracownicy ORDER BY rok_urodzenia LIMIT 1;
W wyniku wykonania powyższego zapytania SQL zostanie:
A. usunięty rekord najstarszego pracownika.
B. usunięty rekord z danymi pracownika, który miał wpisaną datę urodzenia.
C. usunięta kolumna rok_urodzenia z tabeli Pracownicy.
D. usunięta tabela Pracownicy.
Poprawnie – to polecenie SQL usuwa dokładnie jeden rekord, i to taki, który odpowiada najstarszemu pracownikowi w tabeli. Kluczowe są tu dwie rzeczy: klauzula ORDER BY oraz LIMIT 1. Najpierw baza danych sortuje wiersze z tabeli Pracownicy po kolumnie rok_urodzenia rosnąco, czyli od najstarszego do najmłodszego (mniejszy rok urodzenia = starsza osoba). Dopiero na tak posortowanym zbiorze polecenie DELETE z LIMIT 1 usuwa pierwszy rekord z góry, czyli właśnie najstarszego pracownika. Warto zauważyć, że taka składnia (DELETE ... ORDER BY ... LIMIT ...) jest charakterystyczna m.in. dla MySQL i MariaDB. W standardowym SQL nie zawsze można użyć ORDER BY bezpośrednio w DELETE, ale w praktyce, w aplikacjach webowych, bardzo często pracuje się właśnie na tych silnikach, więc to rozwiązanie jest jak najbardziej realne. W innych systemach (np. PostgreSQL) podobny efekt robi się przez podzapytanie lub CTE. Moim zdaniem to jest bardzo przydatny wzorzec, gdy chcemy usuwać „najstarsze” lub „najmłodsze” rekordy, np. najstarszy log systemowy, najstarsze zamówienie w statusie roboczym, najstarszy wpis w kolejce zadań. Ważna dobra praktyka: takie operacje powinny opierać się na jednoznacznym kryterium sortowania (np. rok_urodzenia + id), żeby uniknąć sytuacji, że przy tych samych wartościach pola baza wybierze losowo któryś rekord. W projektach produkcyjnych często dodaje się dodatkową kolumnę typu data_utworzenia albo używa klucza głównego w ORDER BY, żeby zachować deterministyczne zachowanie. Zwróć też uwagę, że DELETE operuje na wierszach (rekordach), a nie na strukturze tabeli. Do usuwania kolumn służy ALTER TABLE, a do kasowania całej tabeli – DROP TABLE. To rozróżnienie jest absolutna podstawa pracy z SQL w każdej większej aplikacji.

Pytanie 4

Integralność referencyjna w relacyjnych bazach danych wskazuje, że

A. wartość klucza obcego w konkretnej tabeli musi być równa wartości klucza głównego w powiązanej tabeli lub mieć wartość NULL
B. klucz główny lub klucz obcy nie zawierają żadnych wartości NULL
C. wartość klucza głównego oraz klucza obcego nie może być pusta
D. każdemu kluczowi głównemu przyporządkowany jest dokładnie jeden klucz obcy w danej tabeli lub powiązanych tabelach
Integralność referencyjna to kluczowy koncept w modelu relacyjnych baz danych, który zapewnia spójność oraz integralność danych pomiędzy różnymi tabelami. Oznacza to, że każda wartość klucza obcego w danej tabeli musi być zgodna z wartością klucza głównego w powiązanej tabeli, lub może być wartością NULL, co oznacza brak powiązania. Dzięki temu zyskujemy pewność, że wszelkie relacje między danymi są logiczne i zgodne z założeniami projektowymi bazy danych. Przykładem może być tabela 'Zamówienia', w której klucz obcy 'ID_Klienta' odnosi się do klucza głównego 'ID_Klienta' w tabeli 'Klienci'. Jeśli wartość 'ID_Klienta' w tabeli 'Zamówienia' nie pasuje do żadnej wartości 'ID_Klienta' w tabeli 'Klienci', narusza to integralność referencyjną. Standardy takie jak SQL (Structured Query Language) oraz zasady ACID (Atomicity, Consistency, Isolation, Durability) podkreślają znaczenie integralności danych, co jest kluczowe dla poprawnego funkcjonowania systemów bazodanowych i zapewnienia ich niezawodności oraz efektywności. Utrzymanie integralności referencyjnej jest istotne dla analizy danych, raportowania oraz utrzymywania relacji między różnymi obiektami w bazie.

Pytanie 5

Formularze do zarządzania bazami danych są tworzone w celu

A. ułatwienia wprowadzania, edytowania i usuwania danych
B. tworzenia powiązań w relacyjnych bazach danych
C. wyszukiwania rekordów, które spełniają określone kryteria
D. generowania raportów z danych
Wiele osób może pomylić funkcję formularzy w bazach danych z ich rolą w raportowaniu danych. Chociaż formularze mogą być używane do generowania raportów, ich głównym celem nie jest prezentacja danych, ale ułatwienie ich wprowadzania oraz zarządzania. Raporty zazwyczaj są generowane na podstawie danych już istniejących w bazie i wymagają analizy, co wykracza poza funkcję formularzy. Z kolei wyszukiwanie wierszy spełniających określone kryteria, choć istotne, również nie jest głównym zadaniem formularzy. Wyszukiwanie to proces związany z kwerendami SQL, który pozwala na wydobycie danych na podstawie różnych warunków, co także nie jest bezpośrednio związane z funkcjonalnością formularzy, które skupiają się na interakcji użytkownika z danymi. Ponadto, wprowadzanie powiązań w relacyjnych bazach danych to bardziej zaawansowany proces projektowania bazy, który wymaga zrozumienia struktury danych i zastosowania kluczy głównych oraz obcych. Powiązania są definiowane na etapie projektowania bazy danych, a nie podczas korzystania z formularzy. Dlatego, chociaż wszystkie wymienione funkcje są istotne w kontekście zarządzania danymi, formularze skupiają się głównie na uproszczeniu interakcji użytkownika z procesem wprowadzania i modyfikacji danych.

Pytanie 6

Jakie działanie wykonuje polecenie DBCC CHECKDB("sklepAGD", Repair_fast) w MS SQL Server?

A. zweryfikuje spójność danej tabeli
B. zweryfikuje spójność danej tabeli oraz naprawi uszkodzone rekordy
C. sprawdzi spójność bazy danych i utworzy kopię zapasową
D. sprawdzi spójność bazy danych i naprawi uszkodzone indeksy
Wiele osób mylnie sądzi, że polecenie DBCC CHECKDB może być używane do sprawdzania spójności tylko określonych tabel, co jednak jest nieprawidłowe. DBCC CHECKDB działa na poziomie całej bazy danych, analizując wszystkie tabele, indeksy oraz inne obiekty. Dlatego odpowiedzi sugerujące, że narzędzie to sprawdza spójność tylko pojedynczej tabeli, są błędne. Dodatkowo, niektóre odpowiedzi wskazują, że DBCC CHECKDB może naprawiać uszkodzone rekordy, co jest również mylące. W rzeczywistości, podczas użycia opcji Repair_fast, narzędzie może naprawiać uszkodzone indeksy, ale nie ma możliwości naprawy uszkodzonych danych w samych rekordach. Istnieje ryzyko, że błędne zrozumienie funkcji DBCC CHECKDB może prowadzić do niewłaściwego podejścia do zarządzania bazą danych, w tym do nieadekwatnego planowania kopii zapasowych czy procedur odzyskiwania. Ważne jest, aby być świadomym, że regularne wykonywanie tego polecenia jest kluczowe, ale również, że nie zastępuje ono pełnej strategii zarządzania danymi. Standardy branżowe podkreślają znaczenie kompleksowego podejścia do ochrony danych, co obejmuje zarówno monitorowanie integralności, jak i odpowiednie zabezpieczenia przed utratą danych.

Pytanie 7

Tabele: Firmy oraz Zamówienia są ze sobą powiązane relacją jeden do wielu. Aby uzyskać tylko identyfikatory zamówień wraz z odpowiadającymi im nazwami firm dla przedsiębiorstw, których poziom wynosi 4, należy użyć polecenia

Ilustracja do pytania
A. SELECT Zamówienia.id, nazwa FROM Zamówienia JOIN Firmy WHERE poziom = 4
B. SELECT Zamówienia.id, nazwa FROM Zamówienia JOIN Firmy ON Zamówienia.id = Firmy.id WHERE poziom = 4
C. SELECT id, nazwa FROM Zamówienia JOIN Firmy ON Zamówienia.Firmy_id = Firmy.id WHERE poziom = 4
D. SELECT Zamówienia.id, nazwa FROM Zamówienia JOIN Firmy ON Zamówienia.Firmy_id = Firmy.id WHERE poziom = 4
W kontekście zaproponowanych odpowiedzi, błędne podejścia wynikają głównie z niewłaściwego zastosowania klauzuli JOIN oraz braku zrozumienia relacji między tabelami. Kluczowym błędem jest ignorowanie związku pomiędzy kluczem głównym i kluczem obcym, co prowadzi do niepoprawnych wyników w zapytaniach SQL. Na przykład, próba połączenia tabel bez wyraźnego zdefiniowania relacji poprzez klauzulę ON może skutkować pełnym iloczynem kartezjańskim, co jest nieefektywne i często nieprawidłowe pod względem logicznym. Innym częstym błędem w analizie takich zapytań jest niedostateczne uwzględnienie warunków filtrowania w klauzuli WHERE. Warunki te są niezbędne do ograniczenia zestawu wyników do tych, które są istotne dla bieżącej analizy, zwłaszcza w kontekście zamówień i firm o określonym poziomie. Niepoprawne stosowanie aliasów lub brak ich użycia może także prowadzić do niejasności, zwłaszcza w bardziej złożonych zapytaniach, gdzie precyzyjne odwoływanie się do kolumn jest kluczowe. Ponadto, pomijanie sprawdzenia czy dane kolumny istnieją i są odpowiednio indeksowane może prowadzić do błędów wykonania zapytań lub znacznego spadku wydajności, co ma krytyczne znaczenie w środowisku produkcyjnym. Dbając o unikanie takich błędów, warto zastosować się do zasad projektowania baz danych, które skupiają się na integralności referencyjnej i optymalizacji zapytań, co zwiększa ich efektywność i czytelność w praktycznych zastosowaniach biznesowych. Zachowanie tych zasad pozwala na budowanie solidnych i wydajnych systemów bazodanowych, które wspierają procesy decyzyjne w organizacjach.

Pytanie 8

Narzędzie używane do organizowania i przedstawiania danych z wielu wpisów w celu ich wydruku lub dystrybucji to

A. formularz
B. kwerenda
C. raport
D. makropolecenie
Raport to taki pomocny zestaw danych, który pozwala na analizę i prezentację informacji z różnych źródeł. Jak myślisz, to naprawdę kluczowe narzędzie, jeśli chodzi o zarządzanie danymi i bazami danych. Dzięki raportom możemy fajnie zobaczyć wyniki sprzedaży czy inne dane, które z różnych miejsc się zbiera. To ułatwia podejmowanie decyzji, bo wszystko jest w jednym dokumencie. Na przykład, kiedy porównujemy wyniki z różnych okresów, to od razu widzimy, co działa, a co nie. Systemy takie jak Microsoft SQL Server Reporting Services czy IBM Cognos pomagają w tworzeniu tych raportów, a nawet pozwalają na ich ładne formatowanie. Super sprawa, bo można je dopasować do własnych potrzeb, co z kolei czyni je bardziej użytecznymi. W branży IT, raportowanie jest podstawą zarządzania usługami, a także w analizach SWOT. Przemyślane podsumowanie danych naprawdę pomaga w ocenie sytuacji firmy.

Pytanie 9

Jakie są nazwy standardowych instrukcji w języku SQL, które dotyczą wykonywania operacji na danych w SQL DML (np.: dodawanie danych do bazy, usuwanie, wprowadzanie zmian w danych)?

A. SELECT, SELECT INTO
B. ALTER, CREATE, DROP
C. DELETE, INSERT, UPDATE
D. DENY, GRANT, REVOKE
Inne odpowiedzi, czyli ALTER, CREATE, DROP, to komendy, które nie mają nic wspólnego z manipulowaniem danymi w kontekście DML. ALTER zmienia strukturę tabel, na przykład dodaje nowe kolumny, co jest ważne, ale nie wpływa na same dane. CREATE to z kolei tworzenie nowej tabeli lub obiektów w bazie danych, coś, co robimy zanim wprowadzimy jakiekolwiek dane. Natomiast DROP pozwala na usunięcie całej tabeli, co już jest działaniem, które w przypadku pomyłki nie da się cofnąć, więc trzeba na to uważać. SELECT i SELECT INTO to z kolei komendy DQL, czyli Data Query Language, a nie DML. SELECT wybiera dane z tabel, a SELECT INTO tworzy nową tabelę z wynikami. A DENY, GRANT i REVOKE dotyczą też zarządzania uprawnieniami w bazie danych, co jest ważne dla bezpieczeństwa, ale znowu – to nie o manipulacji danymi. Ważne jest, żeby umieć rozróżniać te kategorie, bo błędy w przyporządkowywaniu mogą prowadzić do poważnych problemów w projektowaniu baz danych i aplikacji, które z nich korzystają.

Pytanie 10

Wskaż system do zarządzania treściami.

A. MariaDB
B. phpMyAdmin
C. Joomla!
D. Apache
Wybór odpowiedzi innych niż Joomla! ukazuje istotne nieporozumienia dotyczące roli różnych technologii w kontekście zarządzania treścią. Apache to serwer HTTP, który obsługuje żądania użytkowników w Internecie, ale nie jest systemem zarządzania treścią. Jego funkcją jest dostarczanie plików z serwera do przeglądarki internetowej, co jest kluczowe, ale nie dotyczy bezpośredniego zarządzania treścią witryny. PhpMyAdmin to narzędzie do zarządzania bazami danych MySQL, które umożliwia użytkownikom wykonywanie operacji na bazach danych w interfejsie webowym, jednak nie pełni funkcji CMS. Jego głównym celem jest umożliwienie użytkownikom łatwego zarządzania danymi, a nie tworzenia i publikowania treści na stronach internetowych. MariaDB jest systemem zarządzania relacyjnymi bazami danych, będącym rozwidleniem MySQL, który również nie jest CMS-em. Jest używany do przechowywania danych, ale nie oferuje funkcji do zarządzania treścią w kontekście tworzenia i edycji stron. Kluczowym błędem myślowym, który prowadzi do takich odpowiedzi, jest mylenie różnych technologii webowych i ich funkcji. W rzeczywistości system zarządzania treścią, taki jak Joomla!, łączy w sobie zarówno zarządzanie danymi, jak i interfejs do tworzenia treści, co czyni go bardziej kompleksowym rozwiązaniem dla użytkowników pragnących budować i utrzymywać witryny internetowe.

Pytanie 11

Tabele Klienci oraz Zgłoszenia są ze sobą połączone relacją jeden do wielu. W celu uzyskania jedynie opisu zgłoszenia oraz odpowiadającego mu nazwiska klienta dla zgłoszenia o numerze 5, należy wykonać polecenie

Ilustracja do pytania
A. SELECT opis, nazwisko FROM Zgłoszenia JOIN Klienci ON Klienci.id = Zgłoszenia.Klienci_id WHERE Zgłoszenia.id = 5
B. SELECT opis, nazwisko FROM Zgłoszenia JOIN Klienci ON Klienci.id = Zgłoszenia.id WHERE Zgłoszenia.id = 5
C. SELECT opis, nazwisko FROM Zgłoszenia JOIN Klienci WHERE Klienci.id = 5
D. SELECT opis, nazwisko FROM Zgłoszenia JOIN Klienci ON Klienci.id = Zgłoszenia.Klienci_id WHERE Klienci.id = 5
Niepoprawne odpowiedzi wynikają z błędnego zrozumienia, jak działa relacja klucz główny-klucz obcy w bazach danych. W relacyjnych bazach danych tabele są często powiązane relacjami, gdzie jedna tabela posiada klucz obcy odnoszący się do klucza głównego innej tabeli. W kontekście zapytania SQL, aby poprawnie połączyć tabele i uzyskać odpowiednie dane, musimy użyć klauzuli JOIN z właściwym warunkiem ON. Błędne odpowiedzi pokazują typowe nieporozumienia: jedna z alternatywnych odpowiedzi próbuje połączyć tabele bez użycia klauzuli ON, co prowadzi do błędnych wyników, ponieważ nie określa w jaki sposób rekordy z tabeli Klienci są powiązane z rekordami z tabeli Zgłoszenia. Inna odpowiedź błędnie zakłada, że filtrujemy dane na podstawie id klienta zamiast id zgłoszenia, co prowadzi do nieprawidłowego zestawu wyników niezgodnego z założeniami zadania. Takie błędy mogą wynikać z niedostatecznego zrozumienia struktury bazy danych oraz mechanizmów filtracji i łączenia danych w SQL. Kluczem do poprawnego zapytania jest jasne zrozumienie, jak relacje w bazach danych pozwalają na efektywne łączenie danych i selekcję pożądanych rekordów, co jest podstawą analizy danych i ich raportowania w systemach informacyjnych. Unikanie takich błędów wymaga znajomości syntaktyki SQL i logicznego sposobu myślenia o danych i ich powiązaniach.

Pytanie 12

Głównym celem systemu CMS jest oddzielenie treści serwisu informacyjnego od jego wizualnej formy. Ten efekt osiągany jest przez generowanie zawartości

A. z plików HTML o stałej zawartości oraz wizualizacji przy pomocy technologii FLASH
B. z bazy danych oraz wizualizacji poprzez atrybuty HTML
C. z bazy danych oraz wyglądu ze zdefiniowanego szablonu
D. z plików HTML o stałej zawartości oraz wizualizacji z użyciem ustalonego szablonu
Poprawna odpowiedź na to pytanie to "z bazy danych oraz wyglądu ze zdefiniowanego szablonu". Systemy CMS (Content Management System) mają na celu oddzielenie treści od prezentacji, co pozwala na łatwiejsze zarządzanie i aktualizowanie zawartości serwisu. Wykorzystanie bazy danych do przechowywania treści jest kluczowe, ponieważ umożliwia dynamiczne generowanie zawartości na stronach internetowych. Dzięki temu, gdy zmienia się treść w bazie danych, zmiany te są automatycznie odzwierciedlane na stronie bez potrzeby modyfikacji statycznych plików HTML. Szablony, które definiują wygląd, są również niezmiernie ważne, ponieważ pozwalają na spójność wizualną serwisu i jego łatwą adaptację w przypadku zmian w designie. Przykładem może być użycie systemu szablonów, takiego jak Twig w Symfony, który umożliwia separację logiki biznesowej od prezentacji, co ułatwia pracę developerom i designerom. Takie podejście jest zgodne z najlepszymi praktykami w branży, zapewniając przy tym elastyczność i skalowalność serwisów internetowych.

Pytanie 13

Źródłem danych dla raportu może być

A. tabela
B. inny raport
C. makropolecenie
D. zapytanie INSERT INTO
Tabela jest podstawowym elementem struktury bazy danych, który służy jako źródło danych dla raportów. Tabele przechowują zorganizowane informacje w formie wierszy i kolumn, co umożliwia łatwy dostęp i analizę danych. Każda kolumna w tabeli reprezentuje atrybut, a każdy wiersz to pojedynczy rekord z danymi. Przykładowo, w tabeli zawierającej informacje o klientach, kolumny mogą obejmować imię, nazwisko, adres e-mail i numer telefonu. Dzięki standardom takim jak SQL (Structured Query Language), można łatwo wykonywać operacje na tych tabelach, takie jak selekcja, aktualizacja czy usuwanie danych. Tabele są fundamentalne w systemach zarządzania bazami danych (DBMS) i stanowią podstawowe źródło dla generowania raportów, które mogą być wykorzystywane w różnych kontekstach biznesowych. W raportach można agregować dane, obliczać różne wskaźniki oraz wizualizować wyniki, co czyni tabele nieocenionym elementem w analizie danych.

Pytanie 14

Jak określa się część strukturalnego języka zapytań, która dotyczy tworzenia zapytań do bazy danych za pomocą polecenia SELECT?

A. SQL DML (ang. Data Manipulation Language)
B. SQL DCL (ang. Data Control Language)
C. SQL DQL (ang. Data Query Language)
D. SQL DDL (ang. Data Definition Language)
Wybór SQL DML, SQL DCL lub SQL DDL jako odpowiedzi na to pytanie wskazuje na nieporozumienie dotyczące funkcji poszczególnych podzbiorów SQL. SQL DML (Data Manipulation Language) odnosi się do poleceń, które modyfikują dane w bazie, takich jak INSERT, UPDATE i DELETE. Myląc te pojęcia, można sądzić, że polecenia te są odpowiednie do pobierania danych, co jest błędne. Z kolei SQL DCL (Data Control Language) służy do zarządzania uprawnieniami użytkowników i kontroli dostępu do danych, co również nie ma związku z formułowaniem zapytań do bazy danych. Na przykład, polecenia GRANT i REVOKE są kluczowe w kontekście DCL, ale nie mają nic wspólnego z wyciąganiem danych. SQL DDL (Data Definition Language) dotyczy definicji struktury bazy danych, czyli tworzenia, modyfikowania i usuwania tabel oraz innych obiektów bazy danych (np. CREATE, ALTER, DROP). Wybór któregokolwiek z tych podzbiorów zamiast DQL wskazuje na brak zrozumienia hierarchii i celów SQL jako całości. Zrozumienie różnic między tymi podzbiorami jest kluczowe dla skutecznego zarządzania danymi i efektywnej pracy z bazami danych. Dobrą praktyką jest zapoznanie się z pełnym zakresem możliwości SQL, aby lepiej wykorzystać jego potencjał w codziennej pracy z danymi.

Pytanie 15

Jakie są przykłady standardowych poleceń w języku zapytań SQL, odnoszących się do operacji na danych SQL DML, takich jak wstawianie, usuwanie oraz modyfikacja danych?

A. SELECT, SELECT INTO
B. DENY, GRANT, REVOKE
C. DELETE, INSERT, UPDATE
D. ALTER, CREATE, DROP
Poprawna odpowiedź to DELETE, INSERT, UPDATE, które są podstawowymi poleceniami w języku SQL dla operacji manipulacji danymi (DML, Data Manipulation Language). Polecenie INSERT służy do dodawania nowych rekordów do tabeli, na przykład: 'INSERT INTO pracownicy (imie, nazwisko) VALUES ('Jan', 'Kowalski');'. DELETE umożliwia usunięcie istniejących danych, co można zrealizować poprzez 'DELETE FROM pracownicy WHERE nazwisko = 'Kowalski';', co kasuje rekordy spełniające określony warunek. Natomiast UPDATE pozwala na modyfikację danych w tabeli, na przykład: 'UPDATE pracownicy SET imie = 'Anna' WHERE nazwisko = 'Kowalski';'. Te instrukcje są zgodne z międzynarodowymi standardami SQL i są kluczowe w codziennym zarządzaniu bazami danych, umożliwiając efektywne manipulowanie danymi w różnych systemach zarządzania bazami danych, takich jak MySQL, PostgreSQL czy Microsoft SQL Server.

Pytanie 16

Posiadając tabelę zawierającą zwierzeta z kolumnami nazwa, gatunek, gromada, cechy, dlugosc_zycia, aby uzyskać listę nazw zwierząt, które żyją co najmniej 20 lat oraz należą do ssaków, należy wykonać zapytanie:

A. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >= 20;
B. SELECT nazwa FROM zwierzeta WHERE gromada = 'ssak';
C. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >= 20 AND gromada = 'ssak';
D. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >= 20 OR gromada = 'ssak';
Zapytanie SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >=20 AND gromada = 'ssak'; jest prawidłowe, ponieważ łączy dwa kluczowe warunki, które muszą być spełnione, aby uzyskać pożądane wyniki. W tym przypadku chcemy wyświetlić nazwy zwierząt, które żyją co najmniej 20 lat oraz należą do gromady ssaków. Operator AND w SQL jest stosowany do łączenia warunków, co oznacza, że tylko te rekordy, które spełniają oba warunki, zostaną zwrócone. Przykładem zastosowania takiego zapytania może być analiza danych w zoologii lub biologii, gdzie istotne jest zrozumienie, które gatunki mają długowieczność i są ssakami. Takie zapytanie można również wykorzystać w praktyce, na przykład w aplikacjach ewidencjonujących zwierzęta w ogrodach zoologicznych czy rezerwatach, pomagając w podejmowaniu decyzji o ich ochronie lub hodowli. Zastosowanie dobrych praktyk w SQL polega na precyzyjnym definiowaniu kryteriów, co pozwala na efektywne przetwarzanie i analizowanie danych.

Pytanie 17

Aby stworzyć warunek w zapytaniu wybierającym nazwiska wszystkich uczniów z klas początkowych (od pierwszej do trzeciej), można zastosować klauzulę

A. WHERE klasa IN (1, 3)
B. WHERE klasa >= 1 OR klasa <= 3
C. WHERE klasa BETWEEN 1 AND 3
D. WHERE klasa < 3
Zestawienie innych odpowiedzi w kontekście tego zapytania ujawnia typowe nieporozumienia dotyczące logiki operacji SQL. Klauzula "WHERE klasa < 3" jest nieprawidłowa, ponieważ obejmuje jedynie klasy 1 i 2, co oznacza, że nie uwzględnia uczniów z klasy 3, a więc nie spełnia wymagań pytania. Również użycie klauzuli "WHERE klasa IN (1, 3)" jest mylące, ponieważ wybiera tylko uczniów z klasy 1 i 3, pomijając klasę 2, co jest sprzeczne z definicją klas nauczania początkowego. Kolejna odpowiedź, "WHERE klasa >= 1 OR klasa <= 3", generuje dodatkowe zamieszanie, ponieważ jest logicznie błędna; w praktyce ten warunek zawsze będzie prawdziwy dla wszystkich klas, ponieważ każda klasa będzie spełniać przynajmniej jeden z tych warunków, co prowadzi do zwrócenia wszystkich uczniów, a nie tylko tych z nauczania początkowego. Takie nieprawidłowe użycie operatorów może prowadzić do nieefektywnych zapytań oraz zwiększonego obciążenia bazy danych, a także do niezamierzonych wyników. W przypadku pracy z bazami danych kluczowe jest zrozumienie, jak różne klauzule wpływają na zestaw danych i jakie mogą przynieść konsekwencje w kontekście wyników, co często wymaga starannej analizy oraz testowania zapytań przed ich wdrożeniem.

Pytanie 18

Tabela gory zawiera dane o polskich wzniesieniach oraz łańcuchach górskich, w których te wzniesienia się znajdują. Aby uzyskać Koronę Gór Polskich, czyli najwyższe wzniesienie w każdym z łańcuchów górskich, należy wykonać kwerendę

A. SELECT pasmo, szczyt, MAX(wysokosc) FROM gory GROUP BY pasmo
B. SELECT pasmo, szczyt FROM gory GROUP BY wysokosc
C. SELECT pasmo, szczyt, MAX(wysokosc) FROM gory
D. SELECT pasmo, szczyt, wysokosc FROM gory
W analizowanym pytaniu, wszystkie pozostałe zapytania nie są w stanie dostarczyć wymaganych informacji o najwyższych szczytach górskich w każdym paśmie. Pierwsza odpowiedź, SELECT pasmo, szczyt, wysokosc FROM gory; po prostu wyświetli wszystkie kolumny bez jakiejkolwiek agregacji, co prowadzi do nieprzydatnych wyników, gdyż nie wskazuje na najwyższe szczyty, które nas interesują. Druga odpowiedź, SELECT pasmo, szczyt, MAX(wysokosc) FROM gory;, jest błędna, ponieważ nie zawiera klauzuli GROUP BY. Bez niej, zapytanie zwróci jedynie najwyższą wysokość w całej tabeli, a nie w podziale na poszczególne pasma, co jest kluczowym elementem naszego zapytania. Trzecia opcja, SELECT pasmo, szczyt FROM gory GROUP BY wysokosc;, jest również niepoprawna, gdyż grupowanie według wysokości nie ma sensu w kontekście poszukiwania najwyższych szczytów w ramach pasm. Takie podejście prowadziłoby do niejednoznacznych wyników, ponieważ w każdym paśmie mogłoby być wiele szczytów o różnych wysokościach, a nie ma możliwości zidentyfikować najwyższego szczytu. Ustalanie grupy na podstawie niewłaściwego kryterium, jak w tym przypadku, często prowadzi do błędnych wniosków i jest typowym błędem myślowym, który należy unikać podczas pracy z danymi. Kluczowym wymogiem w takich zapytaniach jest zrozumienie, jakie kryteria powinny być zastosowane do grupowania danych oraz odpowiednie wykorzystanie funkcji agregujących w kontekście danego problemu.

Pytanie 19

W języku PHP, aby nawiązać połączenie z bazą danych MySQL przy użyciu biblioteki mysqli, w poniższym zapisie w miejsce litery 'c' należy wpisać:

$a = new mysqli('b', 'c', 'd', 'e');
A. adres serwera bazy danych
B. hasło dla użytkownika
C. nazwa bazy danych
D. nazwa użytkownika
Wybór odpowiedzi dotyczącej 'nazwa bazy danych', 'hasło użytkownika' i 'lokalizacja serwera bazy danych' nie jest poprawny, bo żaden z tych elementów nie odnosi się do drugiego argumentu w konstruktorze mysqli. Zrozumienie połączeń z bazą danych jest kluczowe przy programowaniu w PHP. 'Nazwa bazy danych' to czwarty argument, więc dotyczy tego, do której bazy chcemy się podłączyć. 'Hasło użytkownika' to trzeci argument, który jest potrzebny, żeby się autoryzować. A 'lokalizacja serwera bazy danych' to pierwszy argument, który mówi, gdzie znajduje się serwer, najczęściej będzie to 'localhost', na którym działa nasza aplikacja. Błędne wnioski mogą się brać z niepełnego zrozumienia struktury połączeń w PHP.

Pytanie 20

W języku SQL operator arytmetyczny odpowiadający reszcie z dzielenia to

A. %
B. &
C. ||
D. /
Widzę, że wybrałeś inne operatory arytmetyczne, ale niestety to nie jest to, co tutaj potrzebujemy. Operator '/' służy do dzielenia, a nie do znajdowania reszty – to prosta pomyłka. A ten '||', to jest używane do łączenia tekstów, więc też nie pasuje do obliczeń matematycznych. Operator '&' to w ogóle inna bajka – związany z operacjami bitowymi, a nie z tymi klasycznymi matematykami. Jak się nie rozumie, do czego te operatory służą, może łatwo popełnić błąd w zapytaniach SQL. W sumie, ważne jest, żeby znać operatorów zastosowanie i używać ich w odpowiednich kontekstach. Dobrze jest się zastanowić, na czym polega każda operacja, żeby uniknąć typowych pomyłek w kodzie.

Pytanie 21

Aby usunąć tabelę, trzeba użyć kwerendy

A. TRUNCATE TABLE
B. DELETE
C. DROP TABLE
D. UNIQUE
Odpowiedź 'DROP TABLE' jest poprawna, ponieważ jest to standardowe polecenie SQL służące do usunięcia całej tabeli z bazy danych. Użycie tego polecenia oznacza, że wszystkie dane przechowywane w tabeli zostaną trwale usunięte, a sama struktura tabeli również zostanie skasowana. Przykład zastosowania: jeśli mamy tabelę 'klienci' i chcemy usunąć ją z bazy danych, stosujemy polecenie 'DROP TABLE klienci;'. Ważne jest, aby przed wykonaniem tego polecenia upewnić się, że nie ma już odniesień do tej tabeli w innych obiektach bazy danych, takich jak klucze obce. Usunięcie tabeli jest procesem nieodwracalnym, dlatego zaleca się wykonanie kopii zapasowej danych przed podjęciem takiej decyzji. W praktyce, ten operator jest często używany w sytuacjach, gdy dane są zbędne, a struktura bazy danych wymaga reorganizacji lub uproszczenia, co jest zgodne z najlepszymi praktykami w zarządzaniu bazami danych.

Pytanie 22

Baza danych zawiera tabelę artykuły z polami: nazwa, typ, producent, cena. Aby wyświetlić wszystkie nazwy artykułów wyłącznie typu pralka, dla których cena jest z przedziału 1 000 PLN i 1 500 PLN, należy zastosować polecenie

A. SELECT nazwa FROM artykuły WHERE typ=,pralka' AND cena BETWEEN 1000 AND 1500;
B. SELECT nazwa FROM artykuły WHERE typ=,pralka' OR cena BETWEEN 1000 OR 1500;
C. SELECT nazwa FROM artykuły WHERE typ='pralka' AND cena FROM 1000 TO 1500;
D. SELECT nazwa FROM artykuły WHERE typ=,pralka' OR cena BETWEEN 1000 AND 1500;
W analizowanych odpowiedziach występują liczne błędy związane z użyciem syntaktyki SQL oraz logicznych operatorów. W przypadku pierwszej odpowiedzi, niepoprawne jest użycie frazy 'cena FROM 1000 TO 1500', ponieważ nie istnieje taki operator w SQL. Prawidłowym podejściem byłoby użycie 'BETWEEN'. W drugiej odpowiedzi błędnie zaimplementowano operator 'OR' zamiast 'AND'. Logika tego zapytania wprowadza zamieszanie, ponieważ operator 'OR' prowadziłby do zwrócenia wszystkich artykułów typu 'pralka' lub tych, które mieszczą się w zadanym przedziale cenowym, co nie odzwierciedla zamierzonego celu. Trzecia odpowiedź również zawiera błąd w używaniu operatora 'OR' w kontekście zapytania, co skutkuje niepoprawnym wynikiem zapytania, ponieważ łączy różne warunki w sposób, który nie spełnia założonych kryteriów. Warto również zauważyć, że niepoprawne jest użycie przecinków w warunku 'typ=,pralka', co może prowadzić do błędów składniowych. Te typowe błędy myślowe pokazują, jak istotne jest zrozumienie zasady działania operatorów logicznych oraz poprawnej składni SQL, co jest kluczowe w efektywnym zarządzaniu bazami danych. Zachowanie prawidłowej struktury zapytania jest fundamentalne dla uzyskania właściwych danych, co ma bezpośrednie przełożenie na efektywność operacyjną aplikacji bazodanowych.

Pytanie 23

Czym jest DBMS?

A. Obiektowy język programowania służący do tworzenia stron www
B. System zarządzania bazą danych
C. Strukturalny język zapytań do bazy danych
D. Kaskadowy arkusz stylów do opisu wyglądu witryny www
Wybór niepoprawnych odpowiedzi wskazuje na pewne nieporozumienia dotyczące podstawowych koncepcji zarządzania danymi w informatyce. Kaskadowy arkusz stylów (CSS) służy do opisu wyglądu strony internetowej, a nie do zarządzania danymi. CSS jest używany do określenia, jak HTML ma być wyświetlany, korzystając z reguł stylizacji, ale nie ma żadnej funkcji związanej z przechowywaniem ani przetwarzaniem informacji. Z kolei obiektowy język programowania do generowania stron internetowych odnosi się do technologii, które są używane do tworzenia interaktywnych aplikacji, ale nie obejmuje on funkcji zarządzania danymi, które są kluczowe w pracy z bazą danych. Dodatkowo, strukturalny język zapytań kierowanych do bazy danych, czyli SQL, jest rzeczywiście związany z interakcją z DBMS, ale nie jest samodzielnym systemem. SQL jest językiem zapytań, który służy do komunikacji z bazą danych w DBMS, a nie do jej zarządzania jako całości. Często mylone jest pojęcie języka programowania z systemem, co prowadzi do błędnych wniosków. Zrozumienie, że DBMS jest kluczowym elementem w architekturze baz danych, jest istotne dla efektywnego projektowania aplikacji i rozwiązań informatycznych, które wymagają wydajnego zarządzania danymi.

Pytanie 24

Z bazy danych trzeba uzyskać zapytaniem SQL nazwiska pracowników, którzy sprawują funkcję kierownika, a ich wynagrodzenie mieści się w jednostronnie domkniętym przedziale (3000, 4000>. Która klauzula weryfikuje ten warunek?

A. WHERE kierownik = true OR pensja > 3000 OR pensja <= 4000
B. WHERE kierownik = true AND pensja => 3000 AND pensja <= 4000
C. WHERE kierownik = true AND pensja => 3000 OR pensja < 4000
D. WHERE kierownik = true AND pensja > 3000 AND pensja <= 4000
Nieprawidłowe odpowiedzi bazują na mylnych założeniach dotyczących operatorów logicznych oraz porównawczych w SQL. Przykładowo, w przypadku użycia klauzuli 'WHERE kierownik = true OR pensja > 3000 OR pensja <= 4000;' spełniony jest warunek dla każdej z trzech części, co prowadzi do zbyt szerokiego zakresu wyników. Operator OR zwraca wyniki, jeśli przynajmniej jeden z warunków jest prawdziwy, co w rezultacie może obejmować pracowników, którzy nie są kierownikami. Klauzula 'WHERE kierownik = true AND pensja => 3000 OR pensja < 4000;' również jest niepoprawna, gdyż składnia operatora => jest błędna (powinno być >=), a ponadto użycie OR sprawia, że wyniki mogą obejmować pracowników, którzy nie spełniają wymagań pensjowych. Kolejna nieadekwatna klauzula 'WHERE kierownik = true AND pensja => 3000 AND pensja < 4000;' również zawiera błąd w zapisie operatora porównania, co uniemożliwia poprawne wykonanie zapytania. Przyczyną tych błędów są często nieznajomość operatorów oraz niepoprawne rozumienie logiki zapytań SQL. W praktyce, zrozumienie różnicy pomiędzy AND a OR oraz prawidłowe stosowanie operatorów porównawczych jest kluczowe dla uzyskania oczekiwanych wyników w bazach danych. W kontekście profesjonalnego podejścia do SQL, ważne jest także, aby zapytania były nie tylko poprawne syntaktycznie, ale również semantycznie, co zapewnia ich efektywność i wiarygodność.

Pytanie 25

Przy użyciu komendy ALTER TABLE można

A. skasować tabelę
B. zmodyfikować strukturę tabeli
C. zmienić dane w rekordach
D. usunąć dane z rekordu
Kiedy mówimy o poleceniu ALTER TABLE w SQL, to jest to naprawdę ważne narzędzie, które pozwala na zmianę struktury tabeli w bazie danych. Możemy dzięki niemu dodać nowe kolumny, zmienić rodzaj danych w istniejących czy nawet usunąć niepotrzebne kolumny. Na przykład, gdybyśmy chcieli dodać kolumnę 'data_urodzenia' do tabeli 'pracownicy', to musielibyśmy użyć takiego polecenia: ALTER TABLE pracownicy ADD data_urodzenia DATE;. To wszystko jest kluczowe, żeby nasze aplikacje mogły się rozwijać i żeby baza danych spełniała coraz to nowe wymagania. Z mojego doświadczenia wynika, że najlepiej jest zawsze robić kopię zapasową danych przed wprowadzeniem jakichkolwiek zmian. Dobrze by też było testować zmiany w środowisku, które nie jest produkcyjne, zanim coś popsujemy. Warto pamiętać, że niektóre operacje mogą wymagać zablokowania tabeli, co może skutkować tym, że użytkownicy nie będą mogli korzystać z systemu, więc trzeba to mieć na uwadze.

Pytanie 26

Aby przyspieszyć operacje na bazie danych należy dla pól często wyszukiwanych lub sortowanych

A. dodać więzy integralności.
B. utworzyć indeks.
C. utworzyć osobną tabelę przechowującą tylko te pola.
D. dodać klucz obcy.
W tym pytaniu chodzi o przyspieszenie operacji wyszukiwania i sortowania, czyli stricte o wydajność wykonywania zapytań SELECT. Bardzo łatwo jest tu pomylić pojęcia z projektowania relacyjnych baz danych i sięgnąć po rozwiązania, które są ważne, ale rozwiązują inne problemy niż wydajność zapytań. Klucz obcy jest mechanizmem służącym do utrzymania spójności między tabelami. Określa on, że wartość w jednej tabeli musi odpowiadać istniejącemu rekordowi w innej tabeli. To świetne narzędzie do pilnowania integralności referencyjnej, ale samo dodanie klucza obcego nie przyspiesza wyszukiwania po dowolnej kolumnie. Co prawda silniki baz danych często automatycznie tworzą indeks na kolumnie będącej kluczem głównym, a czasem również na kluczu obcym, ale sednem optymalizacji jest właśnie indeks, nie sam fakt istnienia klucza obcego. Kolejna sprawa to więzy integralności, czyli różnego rodzaju ograniczenia typu NOT NULL, UNIQUE, CHECK czy wspomniane klucze obce. One pomagają w utrzymaniu poprawności danych, zapobiegają wprowadzaniu bzdurnych rekordów, ale nie są mechanizmem projektowanym z myślą o przyspieszaniu sortowania czy filtrowania. Można powiedzieć, że dbają o jakość danych, a nie o szybkość ich wyszukiwania. Ostatnia koncepcja, czyli tworzenie osobnej tabeli zawierającej tylko często wyszukiwane pola, to typowy przykład nadmiernej normalizacji albo wręcz niewłaściwej denormalizacji. Taki zabieg zazwyczaj zwiększa złożoność systemu, utrudnia zapytania (potrzeba dodatkowych JOIN-ów) i wcale nie gwarantuje lepszej wydajności. Bez indeksów na odpowiednich kolumnach nowa tabela dalej będzie skanowana w całości. Typowy błąd myślowy polega tu na założeniu, że „mniej kolumn = szybsze zapytania”, co w praktyce nie jest prawdą, jeśli baza i tak musi przeszukać każdy wiersz. Standardowa, sprawdzona w branży metoda to dobrze zaprojektowane indeksy, a nie mnożenie tabel czy ślepe dokładanie więzów integralności w nadziei na przyspieszenie bazy.

Pytanie 27

Jaki typ powinien być wykorzystany, aby pole danych mogło przyjmować liczby zmiennoprzecinkowe?

A. INT
B. CHAR
C. VARCHAR
D. FLOAT
Typ danych INT służy do przechowywania liczb całkowitych, co oznacza, że nie może on przyjmować wartości z miejscami po przecinku. W zastosowaniach, gdzie wymagana jest precyzja dziesiętna, INT nie będzie wystarczający i może prowadzić do utraty informacji, co jest nieakceptowalne w kontekście obliczeń finansowych czy inżynieryjnych. CHAR oraz VARCHAR to typy danych używane do przechowywania tekstu, a ich zastosowanie w kontekście liczb rzeczywistych jest niewłaściwe. CHAR jest statycznym typem, który alokuje stałą ilość pamięci, niezależnie od długości przechowywanego tekstu, co może prowadzić do marnotrawstwa zasobów. Z kolei VARCHAR jest dynamiczny i może przechowywać zmienną długość tekstu, ale również nie potrafi reprezentować liczb w formie liczbowej. Użycie CHAR czy VARCHAR dla wartości liczbowych może skutkować błędami w obliczeniach, ponieważ traktują one numery jako tekst, co uniemożliwia jakiekolwiek operacje matematyczne na tych danych. W kontekście baz danych, ważne jest, aby dobierać odpowiednie typy danych dla przechowywanych wartości, aby uniknąć problemów z wydajnością oraz integralnością danych.

Pytanie 28

Jakiej kwerendy w bazie MariaDB należy użyć, aby wybrać artykuły, których ceny mieszczą się w przedziale domkniętym <10, 20>?

A. SELECT * FROM Artykuly WHERE Cena > 10 AND Cena < 20
B. SELECT * FROM Artykuly WHERE Cena BETWEEN 10 AND 20
C. SELECT * FROM Artykuly WHERE Cena IN (10, 20)
D. SELECT * FROM Artykuly WHERE Cena LIKE 1%, 2%
Pierwsza z niepoprawnych odpowiedzi, 'SELECT * FROM Artykuly WHERE Cena IN (10, 20);', jest błędna, ponieważ operator IN służy do sprawdzania, czy wartość znajduje się w określonej liście wartości. W tym przypadku zwróci tylko artykuły, których cena wynosi dokładnie 10 lub 20, a nie wszystkie artykuły w przedziale między tymi wartościami. Operator IN nie obsługuje zakresów, co może prowadzić do niepełnych wyników w analizach cenowych. Odpowiedź 'SELECT * FROM Artykuly WHERE Cena LIKE 1%, 2%;' również nie jest poprawna, ponieważ operator LIKE jest używany do wyszukiwania wzorców w tekstach, a nie do porównywania wartości liczbowych. Użycie LIKE w tym kontekście jest całkowicie niewłaściwe i prowadzi do błędnych interpretacji wyników, co jest typowym błędem wśród początkujących użytkowników SQL. Z kolei kwerenda 'SELECT * FROM Artykuly WHERE Cena > 10 AND Cena < 20;' z kolei nie obejmuje wartości granicznych 10 i 20, co sprawia, że nie zwróci artykułów, których cena wynosi równo 10 lub 20. To pokazuje typowy błąd myślowy, polegający na niepełnym zrozumieniu zastosowania operatorów porównawczych w SQL. W praktyce, aby uzyskać pełny zakres wartości w analizach, kluczowe jest zrozumienie różnic między tymi operatorami oraz ich właściwe zastosowanie w kontekście wymagań dotyczących danych.

Pytanie 29

W języku SQL wydano polecenie

CREATE USER 'anna'@'localhost' IDENTIFIED BY '54RTu8';
Jednak operacja ta zakończyła się niepowodzeniem z powodu błędu: #1396 - Operation CREATE USER failed for 'anna'@'localhost'. Możliwą przyczyną tego problemu bazy danych może być:
A. niewystarczająca siła hasła dla konta anna
B. błędna składnia polecenia CREATE USER
C. nieznane polecenie CREATE USER
D. istnienie użytkownika anna w bazie danych
Wybrana przez Ciebie odpowiedź o zbyt słabym haśle dla konta 'anna' jest nietrafiona. Podczas tworzenia użytkownika w MySQL ustalasz nowego użytkownika i hasło, które jeszcze nie jest połączone z żadnym drugim kontem. Zasady bezpieczeństwa mówią, że hasła powinny być mocne, ale w tym przypadku słabe hasło nie wywołuje błędu #1396. Słabe hasło może być problemem przy późniejszej edycji konta, ale nie przy zakładaniu nowego. Co więcej, jeśli chodzi o składnię CREATE USER, to w twoim poleceniu nie masz błędu. To, że hasło jest słabe, to istotny temat, ale musi być zgodne z zasadami, które ustala firma. I pamiętaj, polecenie CREATE USER jest standardem w MySQL, więc jeśli nie znasz, to warto się z nim zapoznać. Większość błędów przy użytkownikach bierze się z braku zrozumienia, jak działa system autoryzacji w bazach danych. Warto znać zasady dotyczące uprawnień, żeby lepiej zarządzać dostępem do baz.

Pytanie 30

Zawarte polecenie SQL wykonuje

UPDATE Uczen SET id_klasy = id_klasy + 1;
A. ustalić wartość pola Uczen na 1
B. ustalić wartość kolumny id_klasy na 1 dla wszystkich rekordów w tabeli Uczen
C. powiększyć wartość pola Uczen o jeden
D. zwiększyć o jeden wartość w kolumnie id_klasy dla wszystkich rekordów tabeli Uczen
Polecenie SQL, które analizujemy, to: `UPDATE Uczen SET id_klasy = id_klasy + 1;`. Jego celem jest zwiększenie wartości w kolumnie `id_klasy` o jeden dla wszystkich rekordów w tabeli `Uczen`. Wykorzystanie operacji `SET` w poleceniu `UPDATE` umożliwia modyfikację istniejących danych w bazie. W tym przypadku każda wartość w kolumnie `id_klasy` zostaje powiększona o jeden. To technika często stosowana przy aktualizacjach, gdzie potrzebujemy inkrementować wartości, np. w przypadku liczników, numeracji czy przesuwania pozycji. Stosowanie `UPDATE` zgodnie z dobrymi praktykami wymaga ostrożności, zwłaszcza przy operacjach masowych, aby unikać niezamierzonych zmian w danych. Ważne jest, aby przed wykonaniem takich operacji upewnić się, że kopia zapasowa danych jest dostępna, a operacja została przetestowana w środowisku testowym, aby uniknąć potencjalnych problemów w środowisku produkcyjnym.

Pytanie 31

W bazie danych księgarni znajduje się tabela ksiazki, która zawiera pola: id, idAutor, tytul, ileSprzedanych, oraz tabela autorzy z polami: id, imie, nazwisko. Jak można utworzyć raport sprzedanych książek zawierający tytuły oraz nazwiska autorów?

A. konieczne jest stworzenie kwerendy, która wyszukuje tytuły książek
B. należy zdefiniować relację 1..1 pomiędzy tabelami ksiazki a autorzy, a następnie stworzyć kwerendę łączącą obie tabele
C. należy zdefiniować relację l..n pomiędzy tabelami ksiazki a autorzy, a następnie stworzyć kwerendę łączącą obie tabele
D. trzeba utworzyć dwie oddzielne kwerendy: pierwsza do wyszukiwania tytułów książek, druga do wyszukiwania nazwisk autorów
Jak się przyjrzysz innym odpowiedziom, to zauważysz, że zdefiniowanie relacji 1..1 dla tabel 'ksiazki' i 'autorzy' to trochę nieporozumienie. Takie założenie sugeruje, że każdy autor mógłby napisać tylko jedną książkę, co jest mało prawdopodobne w rzeczywistości. Przecież jeden autor może mieć na swoim koncie wiele tytułów, więc prawidłowa relacja to l..n. Kwerenda, która tylko wyszukuje tytuły książek, nie bierze pod uwagę autorów, co sprawia, że nie dostajemy pełnych informacji o książkach. Dwie osobne kwerendy na tytuły i nazwiska autorów to jakieś nieporozumienie – jest to nieefektywne i nie pozwala na zebranie wyników w jednej, sensownej formie. Często w takich sytuacjach ludzie mylą się, bo nie rozumieją zasad relacyjnych baz danych i nie mają dobrego podejścia do projektowania schematu. To prowadzi później do problemów z zarządzaniem danymi i ich analizą.

Pytanie 32

W danej tabeli pracownicy, polecenie MySQL eliminujące wszystkie wpisy, dla których nie została wypełniona kolumna rodzaj_umowy, ma następującą formę

A. DELETE FROM pracownicy WHERE rodzaj_umowy IS NULL;
B. DROP pracownicy FROM rodzaj_umowy = 0;
C. DELETE pracownicy WHERE rodzaj_umowy = 'brak';
D. DROP pracownicy WHERE rodzaj_umowy IS NULL;
Odpowiedź "DELETE FROM pracownicy WHERE rodzaj_umowy IS NULL;" jest prawidłowa, ponieważ polecenie SQL DELETE jest używane do usuwania rekordów z tabeli w bazie danych. W tym przypadku, operacja koncentruje się na usunięciu pracowników, którzy nie mają przypisanego rodzaju umowy, co oznacza, że wartość w polu 'rodzaj_umowy' jest równa NULL. Wartość NULL w bazach danych oznacza brak danych, co jest kluczowym aspektem w kontekście ewidencji pracowników. Stosowanie warunku IS NULL jest standardową praktyką w SQL do identyfikowania brakujących wartości, a tym samym skutecznego zarządzania danymi. W praktyce, takie operacje są często używane, aby utrzymać integralność bazy danych i zapewnić, że tylko aktualne oraz wypełnione dane są przechowywane. Dobrą praktyką jest również wykonywanie zapytań DELETE w transakcjach, aby mieć możliwość ich cofnięcia w razie potrzeby, co minimalizuje ryzyko utraty ważnych informacji.

Pytanie 33

Czy poniższy kod PHP działa poprawnie, wyświetlając na stronie dane pobrane z bazy danych? Ile pól zostanie zaprezentowanych?

$ile = mysqli_num_rows($zapytanie);
for ($i = 0; $i < $ile; $i++)
{
  $wiersz = mysqli_fetch_row($zapytanie);
  echo "<p>Klient: $wiersz[0] $wiersz[1], adres: $wiersz[2] </p>";
}
A. Z czterech pól
B. Z jednego pola
C. Z trzech pól
D. Z dwóch pól
W analizowanym fragmencie kodu PHP wykorzystano funkcję mysqli_fetch_row do pobrania danych z wyników kwerendy wykonanej na bazie danych. Wiersz z wyników jest zwracany jako tablica indeksowana liczbowo co jest kluczowe dla zrozumienia jakie dane zostaną wyświetlone. W kodzie używane są trzy elementy tej tablicy: $wiersz[0] $wiersz[1] oraz $wiersz[2]. Oznacza to że z każdego wiersza danych pobierane są trzy pola które następnie są wykorzystywane do budowy dynamicznego paragrafu HTML. Częstym błędem w interpretacji tego kodu jest założenie że funkcja mysqli_fetch_row zwraca tylko jedno pole. W rzeczywistości zwraca ona cały wiersz jako tablicę gdzie każdy element odpowiada jednemu polu z zapytania SQL. Inny błąd może wynikać z mylnego utożsamiania indeksu tablicy z liczbą wyświetlanych pól. Warto zawsze weryfikować strukturę danych zwracanych przez funkcje bazy danych i zrozumieć sposób ich przetwarzania. W kontekście dobrych praktyk ważne jest również unikanie potencjalnych zagrożeń związanych z nieodpowiednim przetwarzaniem danych z bazy oraz stosowanie odpowiednich mechanizmów zabezpieczeń takich jak walidacja i sanitacja danych wejściowych aby zapewnić bezpieczne działanie aplikacji webowych. Poprawne zrozumienie działania funkcji przetwarzających dane jest kluczowe dla tworzenia wydajnych i bezpiecznych systemów informatycznych

Pytanie 34

Cechy przedstawione w tabeli dotyczą?

  • Strony ustalają dążenie do konkretnego wyniku
  • Ważny jest efekt pracy, a nie sposób jej realizacji
  • Zleceniodawca przekazuje za wykonawcę zaliczkę na podatek dochodowy
A. umowy o pracę
B. umowy agencyjnej
C. umowy zlecenia
D. umowy o dzieło
Umowa o dzieło to rodzaj umowy cywilnoprawnej, która koncentruje się na osiągnięciu określonego rezultatu pracy, a nie na samym procesie jej wykonywania. Jest to typowy kontrakt, w którym strony uzgadniają konkretny efekt, jaki ma być osiągnięty, na przykład stworzenie projektu architektonicznego, wykonanie rzeźby czy napisanie programu komputerowego. W ramach tego typu umowy, wykonawca, czyli osoba realizująca zamówienie, nie podlega typowym regulacjom dotyczącym czasu pracy, które są charakterystyczne dla umów o pracę. Zleceniodawca zobowiązany jest natomiast do odprowadzenia zaliczki na podatek dochodowy, co odróżnia tę umowę od innych typów umów cywilnoprawnych, takich jak na przykład umowa zlecenia, gdzie obowiązek podatkowy może być regulowany odmiennie. Umowa o dzieło jest często wybierana w sytuacjach, gdzie kluczowe jest dostarczenie konkretnego produktu lub usługi, a czas i sposób realizacji mają mniejsze znaczenie.

Pytanie 35

Jaką cechę pola w tabeli należy ustalić, aby pole mogło przyjmować wyłącznie dane składające się z cyfr?

Ogólne
Rozmiar pola255
Format
Maska wprowadzania
Tytuł
Wartość domyślna
Reguła spr. poprawności
Tekst reguły spr. poprawności
WymaganeNie
Zerowa dł. dozwolonaTak
IndeksowaneNie
Kompresja UnicodeTak
Tryb IMEBez formantu
Tryb zdania edytora IMEBrak
Tagi inteligentne
A. Maskę wprowadzania
B. Regułę sprawdzania poprawności
C. Tagi inteligentne
D. Wartość domyślną
Tagi inteligentne to narzędzie, które można znaleźć w dokumentach czy w systemach do zarządzania danymi. Służą do automatycznego rozpoznawania danych, na przykład dat czy adresów, ale nie mają możliwości ograniczania wprowadzanych danych pod kątem ich formatu, jak na przykład cyfry. Reguły sprawdzania poprawności dane na poziomie tabeli, co oznacza, że można sprawdzać, czy spełniają pewne kryteria przy zapisywaniu. To działa, ale jest bardziej ogólne i nie zastąpi maski wprowadzania, bo te działają w czasie rzeczywistym. Z kolei wartość domyślna to coś, co automatycznie wprowadza dane w polu, jeśli użytkownik nic nie poda. To może być przydatne, gdy jakieś pole zawsze powinno mieć określoną wartość, chyba że użytkownik zadecyduje inaczej. Tylko że wartość domyślna nie reguluje, jakie dane mogą być wpisywane, co jest właśnie wymagane w pytaniu o ograniczenie danych do cyfr. Często myślimy, że wartość domyślna lub reguły mogą kontrolować format danych na bieżąco, ale to jest rola maski wprowadzania, która działa w momencie, gdy piszemy, więc chroni integralność już na etapie wprowadzania danych.

Pytanie 36

Polecenie SQL przedstawione poniżej ma za zadanie

UPDATE Uczen SET id_klasy = id_klasy + 1;
A. ustawienie wartości pola Uczen na 1
B. zwiększenie o jeden wartości kolumny id_klasy dla wszystkich rekordów tabeli Uczen
C. ustawienie wartości kolumny id_klasy na 1 dla każdego rekordu w tabeli Uczen
D. zwiększenie o jeden wartości pola Uczen
Analizując inne odpowiedzi warto zrozumieć dlaczego są one błędne Instrukcja zwiększenia wartości pola Uczen nie ma sensu w kontekście podanego polecenia SQL ponieważ w poleceniu modyfikujemy kolumnę id_klasy zamiast Uczen Nie istnieje tam również żaden mechanizm by ustawić wartość kolumny id_klasy na 1 dla wszystkich rekordów ponieważ taki efekt wymagałby użycia konkretnej wartości w poleceniu zamiast operacji dodawania jeden Dodatkowo ustawienie wartości pola Uczen na 1 nie ma związku z podanym zapytaniem które wyraźnie odnosi się do kolumny id_klasy Błędne zrozumienie poleceń SQL często wynika z nieuwagi i braku zrozumienia składni SQL Ważne jest aby zawsze dokładnie analizować jakich kolumn dotyczy operacja i jaka jest jej intencja SQL jako język deklaratywny wymaga precyzji w konstrukcji zapytań by osiągnąć zamierzony efekt Takie błędy mogą prowadzić do niezamierzonych modyfikacji danych dlatego zrozumienie kontekstu i poprawne interpretowanie poleceń jest kluczowe w pracy z bazami danych

Pytanie 37

Czym jest relacja w bazach danych?

A. algebraicznym połączeniem tabel
B. kluczem głównym w relacji tabel
C. połączeniem dwóch pól w obrębie jednej tabeli
D. logicznym połączeniem tabel
Relacja w bazach danych to logiczne połączenie tabel, które umożliwia organizację i zarządzanie danymi w sposób umożliwiający ich efektywne przetwarzanie. W kontekście baz danych relacyjnych, relacje tworzone są na podstawie kluczy, które pozwalają na łączenie danych z różnych tabel. Na przykład, w bazie danych e-commerce, tabela 'Klienci' może być połączona z tabelą 'Zamówienia' przez klucz klienta. Dzięki temu, gdy zapytamy o zamówienia konkretnego klienta, silnik bazy danych może wykonać zapytanie łączące te obie tabele, dostarczając spójny zestaw danych. Taki model relacyjny oparty jest na teorii zbiorów i algebrze relacyjnej, co pozwala na skomplikowane operacje, takie jak łączenie, filtrowanie i agregowanie danych. W praktyce, relacje w bazach danych są kluczowe dla zapewnienia integralności danych, eliminacji redundancji oraz zwiększenia wydajności operacji na danych. Standardy takie jak SQL oparte są na tych koncepcjach, co czyni je fundamentalnymi w programowaniu baz danych.

Pytanie 38

Systemem zarządzania wersjami w projekcie oprogramowania, który jest rozproszony, jest

A. TotalCommander
B. GIT
C. Eclipse
D. FileZilla
GIT jest rozproszonym systemem kontroli wersji, który umożliwia programistom śledzenie zmian w kodzie źródłowym oraz współpracę nad projektami w zespole. Rozproszona architektura GIT pozwala każdemu deweloperowi na posiadanie pełnej kopii repozytorium, co zwiększa bezpieczeństwo i elastyczność pracy. W przeciwieństwie do centralnych systemów kontroli wersji, gdzie jedna centralna kopia repozytorium jest głównym źródłem, GIT umożliwia każdemu użytkownikowi wprowadzanie zmian lokalnie, a następnie synchronizację z innymi. Przykładem zastosowania GIT-a jest platforma GitHub, która umożliwia hosting projektów oraz wspiera pracę zespołową poprzez funkcje takie jak pull requesty czy zarządzanie problemami. GIT jest zgodny z wieloma standardami, w tym z Open Source, co czyni go narzędziem dostępnym dla szerokiej społeczności deweloperów. Jego wszechstronność i bogate możliwości, takie jak branżowanie i łączenie gałęzi, sprawiają, że jest on niezbędnym narzędziem w pracy nad nowoczesnymi projektami programistycznymi.

Pytanie 39

Funkcja agregująca MIN w języku SQL ma na celu określenie

A. wartości minimalnej z kolumny zwróconej przez kwerendę
B. liczby znaków w rekordach zwróconych przez kwerendę
C. liczby wierszy zwróconych przez kwerendę
D. średniej wartości kolumny obserwowanej w wyniku zapytania
Funkcja agregująca MIN w języku SQL służy do wyznaczania wartości minimalnej w zadanej kolumnie, co jest kluczowym aspektem analizy danych w bazach danych. Przykładowo, gdy korzystasz z zapytania SELECT MIN(wiek) FROM pracownicy, otrzymasz najniższy wiek pracownika w tabeli. To narzędzie jest niezwykle przydatne w raportowaniu oraz przy podejmowaniu decyzji opartych na danych, gdyż pozwala na szybkie określenie najniższych wartości w zestawieniach, takich jak najstarszy pracownik w firmie, najniższa cena produktu, czy najkrótszy czas realizacji zamówienia. W praktyce, używanie funkcji MIN pomaga organizacjom w identyfikacji problemów oraz w optymalizacji procesów. Stosowanie funkcji agregujących, takich jak MIN, jest zgodne z najlepszymi praktykami w zakresie analizy danych, ponieważ umożliwia efektywne przetwarzanie dużych zbiorów informacji i wyciąganie z nich wartościowych wniosków, co jest kluczowe w zarządzaniu danymi i tworzeniu raportów analitycznych.

Pytanie 40

Polecenie SQL:

GRANT CREATE, ALTER ON sklep.* TO adam;
Zakładając, że użytkownik adam wcześniej nie posiadał żadnych uprawnień, to powyższe polecenie SQL przyzna mu prawa jedynie do:
A. tworzenia oraz modyfikacji struktury wszystkich tabel w bazie sklep
B. dodawania oraz modyfikacji danych we wszystkich tabelach bazy sklep
C. dodawania oraz modyfikacji danych w tabeli sklep
D. tworzenia oraz modyfikacji struktury w tabeli sklep
Wiele błędnych odpowiedzi opiera się na mylnym zrozumieniu zakresu przyznawanych uprawnień. Przede wszystkim, uprawnienia 'CREATE' i 'ALTER' odnoszą się wyłącznie do struktury tabel i innych obiektów, a nie do danych przechowywanych w tabelach. Stąd wstawianie (INSERT) i zmiana danych (UPDATE) nie są umożliwione przez polecenie 'GRANT CREATE, ALTER', co jest kluczowym błędem w niektórych odpowiedziach. Wstawianie danych wymaga przyznania uprawnień 'INSERT', a zmiana danych 'UPDATE', których w tym przypadku nie przyznano. Kolejnym powszechnym nieporozumieniem jest mylenie odniesienia do jednej tabeli z odniesieniem do całej bazy danych. Uprawnienie 'ON sklep.*' wyraźnie sugeruje, że dotyczy wszystkich tabel w bazie danych o nazwie 'sklep', a nie tylko pojedynczej tabeli. To zrozumienie jest fundamentem dla odpowiedniego zarządzania prawami dostępu w praktyce administracyjnej baz danych. Najlepsze praktyki wskazują, że przy przyznawaniu uprawnień należy dokładnie określać, do jakich obiektów użytkownik ma mieć dostęp, co zmniejsza ryzyko nieautoryzowanych zmian i naruszeń bezpieczeństwa.