Wyniki egzaminu

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

Egzamin zdany!

Wynik: 25/40 punktów (62,5%)

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

System baz danych gromadzi multimedia, co wiąże się z przechowywaniem znacznych ilości danych binarnych. Jakiego typu danych należy użyć w tym przypadku?

A. BLOB
B. ENUM
C. LONGTEXT
D. DOUBLE
Typ BLOB (Binary Large Object) służy do przechowywania dużych ilości danych binarnych, takich jak obrazy, dźwięki, filmy czy inne multimedia. BLOBy są niezwykle przydatne w aplikacjach, które wymagają zarządzania danymi o dużych rozmiarach, ponieważ pozwalają na efektywne przechowywanie i manipulowanie tymi danymi w bazie danych. Przykładem zastosowania BLOBów może być system zarządzania treścią (CMS), w którym użytkownicy mogą przesyłać zdjęcia i filmy. BLOBy umożliwiają przechowywanie tych plików w bazie, co ułatwia ich późniejsze pobieranie i wyświetlanie. W praktyce, stosując BLOBy, należy pamiętać o odpowiednich indeksach oraz optymalizacji zapytań, aby zminimalizować czas dostępu do danych. Warto również rozważyć zastosowanie systemów zarządzania bazami danych, które są dostosowane do pracy z danymi multimedialnymi, takich jak PostgreSQL czy MySQL, które obsługują typy BLOB i inne odpowiednie struktury danych. Standardy SQL definiują BLOB jako typ danych, co sprawia, że jego użycie jest zgodne z najlepszymi praktykami programowania baz danych.

Pytanie 2

Wskaż komendę, która dokonuje aktualizacji danych w tabeli?

A. CREATE
B. ALTER
C. SELECT
D. UPDATE
Odpowiedź "UPDATE" jest jak najbardziej trafna. To takie podstawowe polecenie SQL, które pozwala na aktualizowanie już istniejących danych w tabeli. Możesz dzięki niemu zmienić jeden albo kilka wierszy w tabeli, w zależności od tego, jakie masz kryteria. Na przykład, jeśli mamy tabelę "pracownicy" i chcemy zwiększyć pensję programistów do 6000 zł, wystarczy użyć polecenia: `UPDATE pracownicy SET pensja = 6000 WHERE stanowisko = 'programista';`. To polecenie działa w taki sposób, że modyfikuje dane, ale przy tym dba o integralność, co jest bardzo ważne w pracy z bazami danych. Warto zawsze dodawać klauzulę WHERE, żeby zmiany dotyczyły tylko wybranych wierszy – to pomoże uniknąć sytuacji, w której przypadkiem zmienisz wszystko. Umiejętność korzystania z UPDATE jest naprawdę istotna, jeżeli chcesz efektywnie zarządzać swoimi danymi.

Pytanie 3

Klucz obcy w tabeli jest używany w celu

A. opracowania formularza do wprowadzania danych do tabeli
B. połączenia go z innymi kluczami obcymi w tabeli
C. zdefiniowania relacji 1..n łączącej go z kluczem głównym innej tabeli
D. umożliwienia jednoznacznej identyfikacji rekordu w danej tabeli
Klucz obcy w tabeli pełni kluczową rolę w definiowaniu relacji między tabelami w bazach danych. Dzięki zastosowaniu klucza obcego możliwe jest określenie relacji 1..n, co oznacza, że jeden rekord w tabeli głównej może być powiązany z wieloma rekordami w tabeli podrzędnej. Przykładem może być tabela 'Klienci' i tabela 'Zamówienia', gdzie klucz obcy w tabeli 'Zamówienia' wskazuje na klucz główny w tabeli 'Klienci'. To pozwala na gromadzenie wielu zamówień dla jednego klienta, co jest niezbędne w systemach e-commerce. Praktyczne wdrożenie kluczy obcych wspiera integralność danych oraz zapobiega ich duplikacji. Właściwe projektowanie relacji w bazach danych zgodnie z zasadami normalizacji wprowadza przejrzystość i efektywność w zarządzaniu danymi, a także ułatwia ich późniejszą analizę i raportowanie. W branży IT standardem jest stosowanie kluczy obcych w celu zapewnienia spójności i relacyjności danych, co jest istotne dla każdej aplikacji opierającej się na bazach danych.

Pytanie 4

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. DENY, GRANT, REVOKE
D. DELETE, INSERT, UPDATE
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 5

Wskaż zapytanie, które z tabeli klienci wybierze tylko nazwiska trzech najlepszych klientów, czyli tych, którzy mają najwięcej punktów na swoim koncie (pole całkowite punkty)?

A. SELECT nazwisko FROM klienci ORDER BY nazwisko DESC LIMIT 3
B. SELECT nazwisko FROM klienci ORDER BY punkty DESC LIMIT 3
C. SELECT nazwisko FROM klienci LIMIT 3
D. SELECT LIMIT 3 nazwisko FROM klienci ORDER BY nazwisko DESC
Wybór kwerendy SELECT nazwisko FROM klienci ORDER BY punkty DESC LIMIT 3 jest poprawny, ponieważ wykorzystuje klauzulę ORDER BY w celu posortowania wyników na podstawie kolumny 'punkty' w porządku malejącym. Dzięki temu, najpierw wyświetlone zostaną rekordy z najwyższą liczbą punktów. Zastosowanie LIMIT 3 oznacza, że z całej posortowanej listy, wybierane są jedynie trzy rekordy, co idealnie odpowiada wymaganiu znalezienia trzech najlepszych klientów. Takie podejście jest zgodne z dobrymi praktykami w programowaniu SQL, ponieważ pozwala na precyzyjne wydobycie danych z bazy, a także na efektywne zarządzanie wynikami zapytań. Przykład zastosowania to sytuacja, gdy firma chce nagrodzić swoich najlepszych klientów na podstawie ich aktywności, co może przyczynić się do zwiększenia ich lojalności. W kontekście analizy danych, zrozumienie, jak korzystać z klauzul ORDER BY i LIMIT, jest kluczowe dla optymalizacji zapytań oraz interpretacji wyników.

Pytanie 6

Przedstawiony kod PHP nawiązuje połączenie z serwerem bazy danych. Jakiego typu operacje powinny się znaleźć w instrukcji warunkowej w miejscu trzech kropek?
$db = mysqli_connect("localhost", "root", "qwerty", "baza1");
if (!$db) {
...
}

A. Informacja o udanym połączeniu z bazą
B. Zamknięcie połączenia z bazą danych
C. Obsługa danych uzyskanych z bazy
D. Obsługa błędu połączenia
Wybór obsługi błędu połączenia jako prawidłowej odpowiedzi jest zgodny z najlepszymi praktykami programistycznymi w zakresie zarządzania połączeniami z bazą danych. W sytuacji, gdy połączenie nie zostanie nawiązane, ważne jest, aby skutecznie obsłużyć ten błąd. Tylko w ten sposób programista może zrozumieć, co poszło nie tak, a także podjąć odpowiednie kroki w celu skorygowania problemu. Na przykład można wyświetlić komunikat informujący o błędzie, logować go w systemie lub wysłać powiadomienie do administratora. Dobrą praktyką jest również implementacja mechanizmów ponownego łączenia lub alternatywnych metod połączenia, jeśli to możliwe. Warto również zaznaczyć, że niewłaściwe zarządzanie połączeniem z bazą danych może prowadzić do poważnych konsekwencji, takich jak utrata danych, a nawet awarie aplikacji. Dlatego, umieszczając kod do obsługi błędów w instrukcji warunkowej, programista wykazuje się odpowiedzialnością oraz dbałością o jakość kodu.

Pytanie 7

Z tabeli mieszkańcy należy uzyskać unikalne nazwy miejscowości, do czego konieczne jest użycie wyrażenia SQL z klauzulą

A. CHECK
B. HAVING
C. UNIQUE
D. DISTINCT
Odpowiedź 'DISTINCT' jest poprawna, ponieważ w SQL służy do eliminowania powtórzeń w wynikach zapytań. Użycie klauzuli DISTINCT pozwala na zwrócenie jedynie unikalnych wartości z danej kolumny, co jest idealne w sytuacjach, gdy chcemy uzyskać listę miast, w których mieszkają osoby z tabeli 'mieszkańcy'. Na przykład, zapytanie 'SELECT DISTINCT miasto FROM mieszkańcy;' zwróci wszystkie różne miasta, w których zamieszkują mieszkańcy, eliminując duplikaty. W praktyce, klauzula DISTINCT jest często stosowana w raportach oraz analityce danych, gdzie istotne jest zrozumienie rozkładu unikalnych wartości. Warto również zauważyć, że DISTINCT może być używane w połączeniu z innymi klauzulami SQL, takimi jak WHERE, aby jeszcze bardziej zawęzić wyniki. Przykład użycia: 'SELECT DISTINCT miasto FROM mieszkańcy WHERE kraj = 'Polska';'. Dobrą praktyką jest stosowanie DISTINCT w sytuacjach, gdy zarządzamy dużymi zbiorami danych, aby zapewnić ich przejrzystość i uniknąć nadmiarowych informacji.

Pytanie 8

Jaką rolę odgrywa kwerenda krzyżowa w programie MS Access?

A. Usuwa rekordy z tabel według określonych kryteriów
B. Dodaje do wybranej tabeli rekordy z innej tabeli
C. Prezentuje zliczone wartości z pola i układa je w wiersze oraz kolumny
D. Zmienia istniejące dane w tabeli
Odpowiedzi, które wskazują na usuwanie rekordów lub modyfikowanie istniejących danych, dotyczą zupełnie innych operacji w bazach danych. Usuwanie rekordów według podanych kryteriów odnosi się do kwerend aktualizujących lub usuwających, które służą do eliminacji danych, które nie są już potrzebne lub są błędne. Takie operacje są istotne, jednak nie mają nic wspólnego z kwerendami krzyżowymi, które koncentrują się na analizie danych poprzez agregację, a nie na ich usuwaniu. Modyfikowanie istniejących danych również nie jest związane z kwerendami krzyżowymi, które są statyczne w prezentacji danych, a ich zadaniem jest przedstawienie wyników agregacji. Dołączenie rekordów z jednej tabeli do innej odnosi się do operacji łączenia (JOIN), które służą do zestawienia informacji z różnych źródeł, co również różni się od funkcji kwerend krzyżowych. W kontekście analizy danych, ważne jest zrozumienie, że kwerendy krzyżowe są używane do syntetyzowania informacji i nie mają zastosowania w operacjach modyfikacji lub usuwania danych. Użytkownicy często mylą te funkcje, co prowadzi do błędnych wniosków i nieefektywnego przetwarzania danych w bazach danych.

Pytanie 9

Istnieje tabela o nazwie przedmioty, która zawiera kolumny ocena i uczenID. Jakie zapytanie należy wykorzystać, aby obliczyć średnią ocen ucznia z ID równym 7?

A. COUNT SELECT ocena FROM przedmioty WHERE uczenID=7;
B. AVG SELECT ocena FROM przedmioty WHERE uczenID=7;
C. SELECT AVG(ocena) FROM przedmioty WHERE uczenID=7;
D. SELECT COUNT(ocena) FROM przedmioty WHERE uczenID=7;
Odpowiedź SELECT AVG(ocena) FROM przedmioty WHERE uczenID=7; jest prawidłowa, ponieważ wykorzystuje funkcję agregującą AVG, która oblicza średnią wartość dla podanego zestawu danych. W tym przypadku skupiamy się na ocenach ucznia o ID równym 7, co osiągamy poprzez zastosowanie klauzuli WHERE. Funkcje agregujące, takie jak AVG, są standardowym narzędziem w SQL do analizy danych, szczególnie przydatnym w kontekście raportowania i analityki. Dzięki takiemu zapytaniu możemy szybko uzyskać średnią ocen ucznia, co może być wykorzystane do oceny jego postępów w nauce lub do podejmowania decyzji z zakresu pedagogiki w oparciu o zebrane dane. W praktyce, takie podejście jest zgodne z najlepszymi praktykami w pracy z bazami danych, pozwalając na wydobycie istotnych informacji z dużych zbiorów danych bez konieczności przetwarzania ich ręcznie. Użycie AVG w połączeniu z klauzulą GROUP BY mogłoby również być zastosowane, gdybyśmy chcieli uzyskać średnie oceny dla wielu uczniów jednocześnie, co dodatkowo podkreśla elastyczność i moc SQL w analizie danych.

Pytanie 10

Zachowanie integralności encji w bazie danych będzie miało miejsce, jeżeli między innymi

A. dla każdej tabeli zostanie ustanowiony klucz główny
B. każdej kolumnie przypisany zostanie typ danych
C. klucz główny zawsze będzie liczbą całkowitą
D. każdy klucz główny będzie miał odpowiadający mu klucz obcy w innej tabeli
Utworzenie klucza głównego dla każdej tabeli w bazie danych jest fundamentalnym krokiem w zapewnieniu integralności encji. Klucz główny jest unikalnym identyfikatorem rekordu w tabeli, co oznacza, że nie może się powtarzać i nie może mieć wartości NULL. Dzięki temu każdy wpis w tabeli można jednoznacznie zidentyfikować, co jest kluczowe dla zarządzania danymi i ich integralności. Przykładowo, w bazie danych klientów, klucz główny może być numerem identyfikacyjnym klienta, co pozwala na łatwe i efektywne wyszukiwanie, aktualizowanie oraz usuwanie danych. Stosowanie kluczy głównych jest zgodne z zasadami normalizacji baz danych, które mają na celu eliminację redundancji i zapewnienie spójności danych. W praktyce wiele systemów zarządzania bazami danych (DBMS) wymaga zadeklarowania klucza głównego podczas tworzenia tabeli, co podkreśla znaczenie tego elementu w architekturze baz danych.

Pytanie 11

W języku SOL komenda INSERT INTO

A. wprowadza dane do tabeli
B. modyfikuje rekordy ustaloną wartością
C. wprowadza pola do tabeli
D. tworzy tabelę
W odpowiedziach, które nie są poprawne, można zaobserwować pewne powszechne nieporozumienia dotyczące funkcji polecenia INSERT INTO. Odpowiedź sugerująca, że to polecenie aktualizuje rekordy, myli funkcje INSERT i UPDATE, które mają zupełnie różne cele. INSERT INTO służy do dodawania nowych danych, podczas gdy UPDATE jest używane do modyfikacji istniejących rekordów. Z kolei stwierdzenie, że polecenie dodaje pola do tabeli, odnosi się do innej komendy, jaką jest ALTER TABLE. Ta komenda służy do zmiany struktury tabeli, a nie do wprowadzania danych. Wreszcie, odpowiedź mówiąca o dodawaniu tabeli dotyczy również ALTER TABLE, a nie INSERT INTO. Te nieporozumienia mogą wynikać z braku zrozumienia podstawowej architektury baz danych oraz różnorodności poleceń SQL, które są zaprojektowane do realizacji różnych zadań. Dlatego ważne jest, aby przed przystąpieniem do pracy z bazami danych zrozumieć, jak różne polecenia wpływają na strukturę i zawartość bazy danych oraz jakie są ich zastosowania w praktyce. Zrozumienie tych różnic jest kluczowe dla efektywnego zarządzania danymi i unikania błędów w codziennej pracy z bazami danych.

Pytanie 12

W języku SQL zrealizowano polecenia GRANT przedstawione w ramce. Kto uzyska prawo do przeglądania oraz modyfikowania danych?

GRANT ALL ON frmy TO 'adam'@'localhost';
GRANT ALTER, CREATE, DROP ON frmy TO 'anna'@'localhost';
GRANT SELECT, INSERT, UPDATE ON frmy TO 'tomasz'@'localhost';
A. Jedynie Tomasz
B. Adam oraz Anna
C. Tomasz oraz Anna
D. Tomasz i Adam
Odpowiedź, że prawo do przeglądania i zmiany danych mają Tomasz i Adam, jest prawidłowa, ponieważ wynikają one z poleceń GRANT wykonanych w SQL. Adam otrzymuje pełne prawa do bazy danych 'frmy' dzięki komendzie 'GRANT ALL', co oznacza, że może zarówno przeglądać, jak i modyfikować wszelkie dane w tej bazie. Z kolei Tomasz, dzięki przyznanym mu uprawnieniom SELECT, INSERT i UPDATE, również ma możliwość przeglądania danych oraz ich zmiany. Ta sytuacja odzwierciedla kluczowe aspekty zarządzania uprawnieniami w systemach baz danych, gdzie precyzyjne przydzielanie ról i dostępów jest fundamentalne dla zapewnienia bezpieczeństwa i integralności danych. Praktyczne zastosowania takich operacji obejmują sytuacje, w których administratorzy baz danych muszą zróżnicować dostęp do danych w zależności od ról użytkowników, co jest zgodne z zasadami minimalnych uprawnień, które są standardem w branży IT.

Pytanie 13

SELECT miasto, AVG(pensja) FROM pracownicy GROUP BY miasto;
Podane zapytanie wybierze:
A. nazwy miast z powtórzeniami oraz sumę pensji dla każdego z nich.
B. nazwy miast bez powtórzeń oraz średnią pensję dla każdego z nich.
C. nazwy miast z powtórzeniami oraz średnią pensję dla każdego z nich.
D. nazwy miast bez powtórzeń oraz sumę pensji dla każdego z nich.
Zapytanie z klauzulą GROUP BY i funkcją AVG bywa mylone z sumowaniem danych lub zwykłym wybieraniem rekordów jeden po drugim. W tym konkretnym przypadku bardzo łatwo pomylić średnią z sumą albo nie zauważyć, że grupowanie usuwa powtórzenia wartości w kolumnie grupującej. Warto to uporządkować. Funkcja AVG(pensja) jest klasyczną funkcją agregującą, której zadaniem jest obliczenie średniej arytmetycznej z wartości w danej grupie rekordów. Nie dodaje ona wszystkich pensji „na kupę” tak jak SUM, tylko dzieli ich sumę przez liczbę rekordów w grupie. Jeżeli ktoś spodziewa się sumy, to patrzy bardziej w stronę SUM(pensja), a nie AVG(pensja). To jest typowy błąd: widzimy funkcję agregującą i automatycznie myślimy „to pewnie suma”, bez dokładnego przeczytania nazwy funkcji. Druga kwestia to powtórzenia miast. Klauzula GROUP BY miasto mówi silnikowi bazy danych: pogrupuj wszystkie wiersze według wartości w kolumnie miasto. W efekcie wszystkie rekordy z tym samym miastem są łączone w jedną grupę. Dla każdej takiej grupy zwracany jest dokładnie jeden wiersz wyniku. To oznacza, że w rezultacie zapytania nie ma powtórzonych nazw miast, nawet jeśli w tabeli jest tysiąc pracowników z Warszawy czy Krakowa. Częsty błąd myślowy polega na przenoszeniu intuicji z prostego SELECT bez GROUP BY, gdzie miasto faktycznie się powtarza, na zapytanie z agregacją, gdzie logika jest już inna. W odpowiedziach, które sugerują „z powtórzeniami”, ignorowane jest działanie GROUP BY. Z kolei odpowiedzi mówiące o „sumie pensji” mylą AVG z SUM, co w praktyce może prowadzić do bardzo poważnych błędów analitycznych – wyobraź sobie raport płacowy, w którym zamiast średniej ktoś pokaże sumę wynagrodzeń i na tej podstawie będzie porównywał miasta. Moim zdaniem dobrą praktyką jest zawsze czytanie zapytania fragment po fragmencie: najpierw jakie kolumny są wybierane, potem jakie funkcje agregujące są użyte, a na końcu po czym następuje grupowanie. Taka metoda pozwala uniknąć właśnie takich nieporozumień i lepiej rozumieć, co dokładnie zwróci baza danych, co jest kluczowe przy pracy z realnymi systemami produkcyjnymi.

Pytanie 14

Formularz główny używany do poruszania się w bazie danych pomiędzy formularzami i kwerendami dostępnymi w systemie określany jest jako formularz

A. zagnieżdżonym
B. sterującym
C. pierwotnym
D. głównym
Formularz sterujący jest kluczowym elementem w systemach baz danych, pełniącym funkcję nawigacyjną pomiędzy różnymi formularzami i kwerendami. Jego głównym zadaniem jest umożliwienie użytkownikowi łatwego dostępu do różnych części aplikacji, co zwiększa efektywność i intuicyjność pracy. Dobre praktyki w projektowaniu interfejsów użytkownika sugerują, aby formularze sterujące były przejrzyste i estetyczne, co ułatwia orientację w systemie. Przykładem zastosowania formularza sterującego może być aplikacja zarządzająca danymi klientów, gdzie użytkownik może za pomocą jednego formularza przeskakiwać pomiędzy zleceniami, danymi kontaktowymi oraz fakturami. Takie podejście nie tylko oszczędza czas, ale także redukuje ryzyko pomyłek. Warto również pamiętać, że formularze sterujące powinny być zgodne z zasadami użyteczności i dostępności, aby były dostępne dla jak najszerszej grupy użytkowników, w tym osób z niepełnosprawnościami.

Pytanie 15

Jakie jest zadanie funkcji PHP o nazwie mysql_num_rows()?

A. zwrócić rekord o numerze podanym jako parametr funkcji
B. zwrócić liczbę wierszy znajdujących się w wyniku zapytania
C. ponumerować rekordy w bazie danych
D. zwrócić następny rekord z wynikami zapytania
Funkcja mysql_num_rows() w PHP jest używana do zwracania liczby wierszy w wyniku zapytania SQL, co jest kluczowe w pracy z danymi w bazach danych. Gdy wykonujemy zapytanie, na przykład za pomocą mysql_query(), otrzymujemy wynik w formie zasobu. Funkcja mysql_num_rows() pozwala na określenie, ile wierszy zostało zwróconych przez to zapytanie. To jest szczególnie przydatne w sytuacjach, gdy chcemy wiedzieć, czy dane istnieją, na przykład w aplikacjach webowych, gdzie użytkownik szuka określonych informacji. Oznacza to, że możemy dostosować logikę naszej aplikacji na podstawie liczby wyników. Ponadto, korzystając z tej funkcji, możemy monitorować i optymalizować zapytania, co jest zgodne z najlepszymi praktykami w zakresie wydajności i zarządzania bazami danych. Warto również zauważyć, że mysql_num_rows() działa w kontekście wywołania do bazy danych, co oznacza, że musi być używana w kontekście zasobu wynikowego, aby działać poprawnie.

Pytanie 16

W systemie MySQL należy użyć polecenia REVOKE, aby odebrać użytkownikowi anna możliwość wprowadzania zmian tylko w definicji struktury bazy danych. Odpowiednie polecenie do zrealizowania tej operacji ma formę

A. REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'
B. REVOKE CREATE ALTER DROP ON tabela1 FROM 'anna'@'localhost'
C. REVOKE CREATE INSERT DELETE ON tabela1 FROM 'anna'@'localhost'
D. REVOKE ALL ON tabela1 FROM 'anna'@'localhost'
Poprawna odpowiedź to 'REVOKE CREATE ALTER DROP ON tabela1 FROM 'anna'@'localhost''. To polecenie skutecznie odbiera użytkownikowi 'anna' prawo do wykonywania zmian w strukturze bazy danych, w tym do tworzenia nowych tabel, modyfikowania istniejących oraz usuwania tabel. W kontekście MySQL, polecenie REVOKE jest kluczowym narzędziem w zarządzaniu uprawnieniami użytkowników. W praktyce, gdy administrator bazy danych chce ograniczyć możliwości danej osoby, aby nie mogła na przykład zmieniać struktury bazy, musi precyzyjnie określić, które uprawnienia chce cofnąć. Dobrym przykładem byłoby zastosowanie tego polecenia w sytuacji, gdy użytkownik nie przestrzega zasad bezpieczeństwa lub nieautoryzowanie modyfikuje dane. Warto również zauważyć, że użycie 'ALTER' w poleceniu wskazuje na prawo do zmiany definicji tabeli, co jest kluczowe w kontekście bezpieczeństwa danych. Użycie polecenia REVOKE jest zgodne z najlepszymi praktykami w zakresie zarządzania dostępem, które zalecają minimalizację uprawnień przyznawanych użytkownikom, aby zredukować ryzyko przypadkowych lub złośliwych działań.

Pytanie 17

Na ilustracji przedstawiono wybór formatu pliku do importu bazy danych. Który format powinien być wykorzystany, jeśli dane zostały wyeksportowane z programu Excel i zapisane jako tekst z użyciem przecinka do oddzielania wartości pól?

Ilustracja do pytania
A. XML
B. SQL
C. CSV
D. ESRI
Format CSV jest powszechnie używany do przechowywania danych tabelarycznych, które są eksportowane z programów takich jak Microsoft Excel. CSV, czyli Comma-Separated Values, wykorzystuje przecinek jako separator pól, co sprawia, że jest idealnym wyborem do importowania danych, które są zapisane w ten sposób. W praktyce, CSV jest niezwykle popularny ze względu na swoją prostotę i szeroką kompatybilność z różnymi systemami baz danych oraz narzędziami analitycznymi. CSV jest formatem tekstowym, co oznacza, że dane są zapisane w formacie, który jest łatwy do odczytania przez ludzi, a jednocześnie można go efektywnie przetwarzać programowo. W branży IT i analizie danych, CSV jest standardem ze względu na łatwość integracji i możliwość pracy z dużymi zestawami danych przy stosunkowo niskim zużyciu zasobów systemowych. Praktycznym przykładem zastosowania CSV jest importowanie listy klientów z programu Excel do systemu CRM. W takim przypadku eksportujemy dane z Excela w formacie CSV, a następnie importujemy je do bazy danych, co pozwala na szybkie i efektywne zarządzanie informacjami o klientach. CSV oferuje również możliwość łatwego manipulowania danymi za pomocą skryptów i narzędzi CLI, co czyni go elastycznym rozwiązaniem w wielu środowiskach IT.

Pytanie 18

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 jednego pola
B. Z dwóch pól
C. Z trzech pól
D. Z czterech pól
Kod PHP wykorzystuje funkcję mysqli_fetch_row aby pobrać dane z bazy danych które są następnie wyświetlane. W funkcji tej każda wiersz z wyników zapytania jest reprezentowany jako tablica indeksowana liczbowo. W zaprezentowanym fragmencie kodu mamy dostęp do trzech indeksów: $wiersz[0] $wiersz[1] oraz $wiersz[2]. Oznacza to że z każdego wiersza wyniku kwerendy pobierane są trzy pola. Kod ten wyświetla dane w formacie paragrafu HTML zawierającego imię i nazwisko klienta oraz jego adres. W praktyce taka konstrukcja jest często wykorzystywana do generowania dynamicznych treści na stronie internetowej. Należy jednak pamiętać o zabezpieczeniach takich jak filtrowanie danych wejściowych aby uniknąć zagrożeń związanych z SQL injection. Warto również rozważyć wykorzystanie bardziej złożonych struktur danych jak tablice asocjacyjne które pozwalają na bardziej czytelne i zrozumiałe odwoływanie się do poszczególnych pól wiersza danych zwłaszcza w przypadku większych projektów. Użycie mysqli_fetch_row jest zgodne z dobrą praktyką jeśli chcemy uzyskać dostęp do danych w sposób sekwencyjny i wydajny

Pytanie 19

Zawarta baza danych składa się z trzech tabel oraz dwóch relacji. Aby uzyskać informacje o wszystkich lekarzach przypisanych do wybranego pacjenta, konieczne jest porównanie kluczy

Ilustracja do pytania
A. Lekarze.id = Pacjenci.Recepty_id
B. Lekarze.id = Pacjenci.id
C. Lekarze.id = Pacjenci.Lekarze_id
D. Lekarze.id = Recepty.id
Odpowiedź Lekarze.id = Pacjenci.Lekarze_id jest poprawna, ponieważ w bazach danych relacyjne połączenie między tabelami jest realizowane przez klucze obce. Tabela Pacjenci zawiera kolumnę Lekarze_id, która jest kluczem obcym odnoszącym się do kolumny id w tabeli Lekarze. Dzięki temu połączeniu możemy określić, który lekarz jest przypisany do danego pacjenta. W praktyce oznacza to, że możemy wykonywać zapytania SQL, które łączą te tabele i wyświetlają dane wszystkich lekarzy przypisanych do konkretnego pacjenta. Przykładowe zapytanie SELECT może wyglądać tak SELECT Lekarze.imie Lekarze.nazwisko FROM Pacjenci INNER JOIN Lekarze ON Pacjenci.Lekarze_id = Lekarze.id WHERE Pacjenci.id = [id_pacjenta]. Takie podejście jest zgodne z dobrymi praktykami projektowania baz danych zgodnie z zasadami normalizacji co zwiększa spójność i integralność danych. Poprawne użycie kluczy obcych jest fundamentalne w kontekście zarządzania relacjami między danymi oraz umożliwia przeprowadzanie bardziej złożonych analiz danych z różnych tabel w sposób wydajny i bezpieczny.

Pytanie 20

SELECT AVGcena) FROM usługi; Celem użycia funkcji agregującej AVG w tym zapytaniu jest

A. zsumować wartości kosztów wszystkich usług
B. wyliczyć średnią arytmetyczną cen wszystkich usług
C. określić najwyższą cenę usług
D. zliczyć ilość dostępnych usług w tabeli
Odpowiedź "obliczyć średnią arytmetyczną cen wszystkich usług" jest poprawna, ponieważ funkcja AVG (average) w SQL jest zaprojektowana do obliczania średniej wartości z zestawu danych w danej kolumnie. W podanym zapytaniu, AVG(cena) ma na celu zsumowanie wartości w kolumnie 'cena' dla wszystkich wierszy w tabeli 'usługi' oraz podzielenie tej sumy przez liczbę wierszy, które zawierają dane. W praktyce, średnia arytmetyczna jest niezwykle użyteczna w analizie danych, ponieważ pozwala na uzyskanie jednego, reprezentatywnego wyniku, który może być pomocny w podejmowaniu decyzji biznesowych. Na przykład, firma usługowa może użyć tej informacji do oceny swojej polityki cenowej, porównując średnią cenę swoich usług do średnich cen konkurencji. Zgodnie z najlepszymi praktykami w branży, stosowanie funkcji agregujących takich jak AVG powinno być integralną częścią procesów analizy danych, szczególnie w kontekście raportowania i oceny efektywności operacyjnej.

Pytanie 21

Jakie cechy powinien posiadać klucz główny?

A. Jest unikatowy, nie może zawierać pustych wartości
B. Jest unikatowy, może mieć tylko wartości całkowite
C. Nie może przybierać wartości, reprezentowany jest przez dokładnie jedno pole tabeli
D. Reprezentowany jest przez jedno pole tabeli, jego wartość nie może ulegać zmianie
Wszystkie błędne odpowiedzi zawierają nieprecyzyjne lub mylące stwierdzenia dotyczące kluczy głównych. Na przykład, twierdzenie, że klucz główny może przyjmować tylko wartości całkowite, nie jest zgodne z rzeczywistością. Klucz główny może być reprezentowany przez różne typy danych, w tym tekst, daty, a nawet złożone obiekty, co czyni tę koncepcję zbyt ograniczoną. Kolejne stwierdzenie, że klucz główny jest reprezentowany przez dokładnie jedno pole tabeli, również nie oddaje pełnego obrazu. Możliwe jest tworzenie kluczy głównych z kilku kolumn, znanych jako klucze złożone, co jest przydatne w sytuacjach, gdy pojedyncza kolumna nie może zapewnić unikalności. Ponadto, stwierdzenie, że wartości klucza głównego nie mogą się zmieniać, wprowadza w błąd. Chociaż zmiana wartości klucza głównego może wprowadzić komplikacje, zwłaszcza w relacjach z innymi tabelami, technicznie jest to możliwe. Właściwe podejście do zarządzania kluczami głównymi obejmuje zrozumienie konsekwencji takich zmian oraz odpowiednie aktualizacje w powiązanych tabelach. Wreszcie, nieznajomość tych aspektów może prowadzić do typowych błędów w projektowaniu baz danych, takich jak brak unikalności lub trudności w zarządzaniu relacjami, co z kolei może wpłynąć na wydajność oraz integralność aplikacji bazodanowych. Zrozumienie roli kluczy głównych jest zatem fundamentalne dla każdego, kto chce skutecznie projektować i zarządzać bazami danych.

Pytanie 22

W bazie danych dotyczącej sklepu znajduje się tabela artykuły, która posiada pole o nazwie nowy. Jak można zaktualizować to pole, aby dla każdego rekordu wprowadzić wartość TRUE, stosując odpowiednią kwerendę?

A. INSERT INTO nowy FROM artykuły SET TRUE
B. INSERT INTO artykuły VALUE nowy=TRUE
C. UPDATE nowy FROM artykuły VALUE TRUE
D. UPDATE artykuły SET nowy=TRUE
Odpowiedź UPDATE artykuły SET nowy=TRUE; jest poprawna, ponieważ wykorzystuje standardową składnię SQL do aktualizacji istniejących rekordów w tabeli. Kwerenda ta zmienia wartość pola 'nowy' na TRUE dla wszystkich rekordów w tabeli 'artykuły'. Metoda ta jest szeroko stosowana w praktyce, gdyż pozwala na masową aktualizację danych w bazie bez konieczności ich usuwania czy dodawania nowych rekordów. Z uwagi na fakt, że pole 'nowy' ma być uzupełnione dla wszystkich pozycji w tabeli, użycie kwerendy UPDATE jest najefektywniejszym i najbardziej intuicyjnym rozwiązaniem. Przykład zastosowania może obejmować sytuację, w której sklep wprowadza nową kategorię produktów, które są oznaczane jako 'nowe'. Stosowanie dobrze zdefiniowanych kwerend UPDATE jest zgodne z dobrymi praktykami w zarządzaniu bazami danych, ponieważ promuje integralność danych oraz umożliwia łatwą modyfikację i kontrolę nad bazą.

Pytanie 23

ALTER TABLE transport MODIFY COLUMN rok_produkcji INT;
Wykonanie powyższej kwerendy SQL w bazie MySQL spowoduje:
A. utworzenie tabeli transport zawierającej kolumnę rok_produkcji.
B. dodanie kolumny rok_produkcji typu INT w tabeli transport.
C. zmianę typu danych w kolumnie rok_produkcji na INT.
D. usunięcie kolumny rok_produkcji w tabeli transport.
Zapytanie `ALTER TABLE transport MODIFY COLUMN rok_produkcji INT;` operuje na już istniejącej tabeli i istniejącej kolumnie. Kluczowe są tu dwa słowa: ALTER TABLE oraz MODIFY COLUMN. ALTER TABLE oznacza modyfikację struktury tabeli, a nie jej tworzenie ani usuwanie. To polecenie zakłada, że tabela `transport` już jest w bazie. Dlatego interpretacja, że ta komenda tworzy tabelę, wynika często z mylenia jej z `CREATE TABLE`, które faktycznie służy do zakładania nowych tabel z określoną listą kolumn i ich typów. Podobnie jest z samą kolumną. MODIFY COLUMN nie usuwa kolumny – do tego służy `DROP COLUMN`. Usunięcie kolumny polega na całkowitym pozbyciu się jej definicji i wszystkich przechowywanych tam danych. Tutaj nic takiego się nie dzieje. Kolumna `rok_produkcji` dalej istnieje, tylko jej definicja jest zmieniana. Typowy błąd myślowy polega na tym, że ktoś widzi słowo MODIFY i kojarzy je z „przebudowaniem” kolumny, czasem nawet z jej zamianą na nową. W rzeczywistości MySQL po prostu aktualizuje metadane kolumny w strukturze tabeli, a dane – w miarę możliwości – konwertuje do nowego typu. Kolejna myląca kwestia to dodawanie kolumn. Do tego służy `ADD COLUMN`, np. `ALTER TABLE transport ADD COLUMN rok_produkcji INT;`. Tylko taka forma faktycznie tworzy nową kolumnę w tabeli. W podanym poleceniu nie ma słowa ADD, więc zakładanie, że kolumna zostanie dodana, jest po prostu niezgodne ze składnią SQL. Moim zdaniem te pomyłki biorą się głównie z powierzchownego kojarzenia słów kluczowych, bez dokładnego przeczytania dokumentacji. W pracy z bazami danych warto wyrobić sobie nawyk rozróżniania: CREATE – tworzy, ALTER – zmienia, DROP – usuwa, a wewnątrz ALTER: ADD – dodaje element struktury, MODIFY/ALTER COLUMN – zmienia istniejący element, DROP COLUMN – usuwa go. Takie jasne mapowanie poleceń na ich skutki bardzo ułatwia później bezpieczne modyfikowanie schematu bazy, zwłaszcza na systemach produkcyjnych, gdzie każdy błąd w DDL może mieć realne konsekwencje dla danych.

Pytanie 24

Baza danych MySQL została uszkodzona. Które z poniższych działań nie przyczyni się do jej naprawy?

A. Wykonanie replikacji bazy danych
B. Odtworzenie bazy z kopii zapasowej
C. Utworzenie nowej bazy i przeniesienie do niej tabel
D. Próba naprawy za pomocą polecenia REPAIR
Próba naprawy bazy danych za pomocą polecenia REPAIR może wydawać się sensownym rozwiązaniem, jednak nie zawsze jest skuteczna. REPAIR działa jedynie na tabelach, które są w formacie MyISAM, a w przypadku tabel InnoDB, które są bardziej powszechne w nowoczesnych aplikacjach, to polecenie jest bezsilne. Działania związane z naprawą w przypadku uszkodzeń bazy powinny skupiać się na odpowiednich narzędziach i procedurach specyficznych dla silnika bazy danych. Odtworzenie bazy z kopii bezpieczeństwa to proces, który jest kluczowy w zarządzaniu danymi. Jeśli mamy aktualną kopię zapasową, możemy szybko wrócić do stanu sprzed uszkodzenia, co jest najskuteczniejszym sposobem na wyeliminowanie problemów z danymi. Stworzenie nowej bazy i przeniesienie do niej tabel również nie rozwiązuje problemu, jeżeli tabele te zawierają uszkodzone dane. Tylko przeniesienie struktury tabeli nie naprawi błędów, które już występują w danych. W każdym przypadku, kluczowym krokiem przed podjęciem jakiejkolwiek akcji powinna być analiza przyczyn uszkodzenia oraz zabezpieczenie istniejących danych, zanim podejmie się dalsze kroki.

Pytanie 25

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. INSERT INTO
B. SELECT
C. UPDATE
D. CHECK TABLE
Wybór instrukcji UPDATE, INSERT INTO oraz CHECK TABLE jako metod do generowania raportu w bazie danych jest niepoprawny. Instrukcja UPDATE służy do modyfikacji istniejących danych w tabeli, co oznacza, że nie można jej użyć do wyświetlania informacji. Gdyby użytkownik spróbował użyć UPDATE do generowania raportu, mógłby nieumyślnie zmienić wartości w bazie danych, co jest sprzeczne z zamierzeniem uzyskania jedynie informacji. Z kolei INSERT INTO jest używane do dodawania nowych rekordów do bazy danych i również nie ma zastosowania w kontekście generowania raportów. Ta instrukcja nie tylko nie udostępnia żadnych informacji o istniejących danych, ale także może prowadzić do nieporozumień, gdyż wprowadza nowe dane zamiast ich przeszukiwać. Natomiast CHECK TABLE jest instrukcją używaną do sprawdzania integralności tabeli w bazie danych i nie ma związku z pobieraniem danych ani ich wyświetlaniem. Z tego powodu, wszystkie te trzy odpowiedzi są nieodpowiednie w kontekście tworzenia raportu w bazie danych, ponieważ każda z nich działa na zupełnie innych zasadach niż SELECT, który jest właściwym narzędziem do przeszukiwania i wyświetlania danych.

Pytanie 26

Polecenie serwera MySQL w postaci

REVOKE DELETE, UPDATE ON pracownicy FROM 'tKowal'@'localhost'
spowoduje, że użytkownikowi tKowal zostaną
A. przydzielone uprawnienia do usuwania oraz aktualizowania danych w tabeli pracownicy
B. przydzielone uprawnienia do wszelkich zmian struktury tabeli pracownicy
C. odebrane uprawnienia usuwania oraz dodawania rekordów w tabeli pracownicy
D. odebrane prawa usuwania i modyfikowania danych w tabeli pracownicy
Odpowiedź wskazuje, że użytkownikowi tKowal odebrane zostały prawa usuwania i modyfikowania danych w tabeli pracownicy za pomocą polecenia REVOKE. W kontekście zarządzania uprawnieniami w MySQL, polecenie REVOKE jest kluczowym narzędziem, które umożliwia administratorom bazy danych kontrolowanie dostępu użytkowników do różnych operacji na danych. W tym przypadku, przy użyciu REVOKE DELETE, UPDATE, administrator zdejmuje z użytkownika tKowal możliwość usuwania (DELETE) oraz aktualizowania (UPDATE) rekordów w tabeli pracownicy. Praktycznym zastosowaniem tej funkcji może być sytuacja, gdy administrator chce ograniczyć dostęp do wrażliwych danych, aby zapobiec przypadkowemu lub nieuprawnionemu usunięciu informacji. Dobrą praktyką jest regularne przeglądanie i aktualizowanie uprawnień użytkowników, aby zapewnić, że mają oni tylko te uprawnienia, które są im niezbędne do wykonywania swoich obowiązków, co przyczynia się do zwiększenia bezpieczeństwa danych.

Pytanie 27

Kiedy należy użyć kwerendy SELECT DISTINCT, aby wybrać rekordy?

A. pogrupowane.
B. obecne w bazie tylko raz.
C. uporządkowane w kolejności malejącej lub rosnącej.
D. tak, aby w wskazanej kolumnie nie powtarzały się wartości.
Wybór nieodpowiednich odpowiedzi, takich jak pogrupowane, występujące w bazie tylko raz czy posortowane malejąco lub rosnąco, wskazuje na pewne nieporozumienia dotyczące funkcji kwerendy SELECT DISTINCT. Kwerenda ta nie jest używana do grupowania danych. Gdybyśmy chcieli pogrupować dane, zastosowalibyśmy grupowanie poprzez klauzulę GROUP BY, która agreguje dane na podstawie określonego kryterium, co jest zupełnie inną operacją. Podobnie, stwierdzenie, że SELECT DISTINCT wybiera rekordy występujące w bazie tylko raz, jest mylące. Funkcja DISTINCT nie ma na celu eliminacji wszystkich rekordów, które się powtarzają, ale raczej skupienie się na unikalnych wartościach w kontekście zadanej kolumny. Dodatkowo, posortowanie danych, niezależnie od kierunku (malejącego lub rosnącego), jest zupełnie inną operacją, którą osiągamy za pomocą klauzuli ORDER BY. W rzeczywistości, DISTINCT i ORDER BY mogą być używane razem, ale ich funkcje są różne. Typowe błędy myślowe prowadzące do tych niepoprawnych wniosków obejmują mylenie funkcji agregujących z funkcjami selekcyjnymi, co jest kluczowe do zrozumienia przy pracy z bazami danych. W rezultacie, kluczowym elementem jest umiejętność rozróżnienia funkcji i celów poszczególnych zapytań SQL, co jest niezbędne w efektywnym zarządzaniu danymi.

Pytanie 28

W poniższym zapytaniu SQL, co oznacza symbol gwiazdki w jego wyniku?

SELECT * FROM mieszkancy WHERE imie = 'Anna';
A. pokazanie pola o nazwie '*' (gwiazdka)
B. zignorowanie warunku dotyczącego imienia
C. wyświetlenie wszystkich kolumn z tabeli mieszkancy
D. wyświetlenie wszystkich rekordów z tabeli mieszkancy
W zapytaniu SQL znak gwiazdki (*) nie oznacza wyświetlenia wszystkich rekordów w tabeli, lecz wskazuje, że w wyniku zapytania mamy otrzymać wszystkie kolumny. To ważne rozróżnienie, ponieważ mylenie tych pojęć prowadzi do nieporozumień dotyczących struktury wyników. Każde zapytanie z gwiazdką ograniczone jest jedynie kolumnami nie rekordami. W tym przypadku część WHERE imie = 'Anna' dodatkowo sie mplementuje ograniczenie do konkretnych rekordów co należy do odrębnej części logiki zapytania. Z kolei interpretacja gwiazdki jako pola o nazwie '*' jest błędnym założeniem ponieważ w standardzie SQL nie istnieje możliwość nadania pola o takiej nazwie poprzez użycie gwiazdki. Gdybyśmy chcieli wyświetlić pole o konkretnej nazwie musielibyśmy użyć jego dokładnej nazwy a nie gwiazdki. Interpretacja gwiazdki jako zignorowania warunku WHERE również jest niepoprawna ponieważ WHERE jest integralną częścią zapytania SQL określającą kryteria filtrowania rekordów i działa niezależnie od gwiazdki. Zrozumienie różnic między wyborem kolumn a wyborem rekordów jest kluczowe dla prawidłowego konstruowania zapytań SQL i optymalizacji ich działania w praktycznych zastosowaniach.

Pytanie 29

W systemie zarządzania bazą danych MySQL, aby uzyskać listę wszystkich przywilejów przyznanych użytkownikowi anna, można użyć polecenia

A. GRANT * TO anna;
B. SHOW GRANTS FOR anna;
C. REVOKE GRANTS FROM anna;
D. SELECT GRANTS FOR anna;
Odpowiedź 'SHOW GRANTS FOR anna;' jest trafna. To polecenie w MySQL to coś jak standard do wyświetlania przydzielonych uprawnień dla konkretnego użytkownika. Dzięki temu administrator bazy danych może szybko zobaczyć, co użytkownik o imieniu 'anna' może zrobić. Na przykład, jeśli chcemy wiedzieć, jakie operacje są dozwolone dla tego użytkownika, to właśnie to polecenie będzie na to najlepsze. Przydaje się to zwłaszcza przy audytach czy rozwiązywaniu problemów z dostępem. Warto też dodać, że w MySQL można przypisywać różnorodne uprawnienia, na przykład SELECT, INSERT, UPDATE, czy DELETE, a także konkretnym bazom danych czy tabelom. Regularne sprawdzanie uprawnień to dobra praktyka, bo pomaga utrzymać bezpieczeństwo danych i zminimalizować ryzyko nieautoryzowanego dostępu. Znajomość polecenia 'SHOW GRANTS' jest naprawdę ważna, zwłaszcza w większych systemach, gdzie kontrola dostępu odgrywa istotną rolę.

Pytanie 30

W celu przyznania użytkownikowi w systemie MySQL możliwości nadawania i modyfikowania uprawnień innym użytkownikom, konieczne jest użycie klauzuli

A. TRGGER
B. GRANT OPTION
C. FLUSH PRIVILEGES
D. ALL PRIVILEGES
Wybór nieprawidłowych opcji, takich jak TRIGGER, ALL PRIVILEGES i FLUSH PRIVILEGES, wynika z braku zrozumienia ich zastosowania w kontekście zarządzania uprawnieniami w MySQL. TRIGGER odnosi się do mechanizmu automatycznego wykonywania operacji w odpowiedzi na określone zdarzenia w bazie danych, takie jak dodanie, aktualizacja lub usunięcie rekordu. Nie jest związany z nadawaniem uprawnień innym użytkownikom, ale z logiką aplikacji i automatyzacją zadań. Można go wykorzystać do implementacji reguł biznesowych, jednak nie wpływa na hierarchię uprawnień. ALL PRIVILEGES to klauzula, która pozwala przyznać wszystkie możliwe uprawnienia do bazy danych, ale nie daje możliwości ich dalszego przekazywania innym użytkownikom. Użytkownik z ALL PRIVILEGES mógłby mieć pełną kontrolę nad bazą danych, lecz nie mógłby dzielić się tymi uprawnieniami. Ostatnia z opcji, FLUSH PRIVILEGES, jest poleceniem używanym do przetwarzania zmian w uprawnieniach użytkowników i ich odświeżania w systemie, ale nie przyznaje żadnych uprawnień. Jest to istotne w kontekście wprowadzania zmian do systemu uprawnień, ale nie ma wpływu na możliwość ich dalszego nadawania innym użytkownikom. W związku z tym, wybrane odpowiedzi nie są adekwatne i nie spełniają potrzeby zarządzania uprawnieniami w MySQL.

Pytanie 31

W tabeli personel znajdują się pola: imię, nazwisko, pensja, staż. Aby obliczyć średnią pensję osób zatrudnionych z doświadczeniem od 10 do 20 lat włącznie, należy przeprowadzić kwerendę:

A. SELECT COUNT(pensja) FROM personel WHERE staz >= 10 AND staz <= 20
B. SELECT AVG(*) FROM personel WHERE staz >= 10 AND staz <= 20
C. SELECT COUNT(*) FROM personel WHERE staz >= 10 AND staz <= 20
D. SELECT AVG(pensja) FROM personel WHERE staz >= 10 AND staz <= 20
Ta odpowiedź jest prawidłowa, ponieważ używa funkcji agregującej AVG, która oblicza średnią wartość z określonego pola, w tym przypadku pensji. Warunek WHERE zapewnia, że tylko pracownicy z stażem od 10 do 20 lat są brani pod uwagę w obliczeniach. Użycie funkcji AVG w kontekście SQL jest standardową praktyką, gdy chcemy uzyskać średnią z danych numerycznych. Na przykład, jeśli w tabeli mamy pracowników z różnymi pensjami, a chcemy zrozumieć, jak wygląda średnia wynagrodzeń w określonym przedziale stażu, to właśnie ta kwerenda dostarcza nam niezbędnej informacji. Dobre praktyki w analizie danych wskazują, że obliczenie średniej pensji jest kluczowe dla zarządzania zasobami ludzkimi i podejmowania decyzji dotyczących polityki wynagrodzeń. Przykładem może być sytuacja, gdy firma decyduje o podwyżkach lub bonusach, a analiza średniej pensji w danej grupie pracowników może znacząco wpłynąć na te decyzje.

Pytanie 32

Jakie imiona spełniają warunek klauzuli LIKE w poniższym zapytaniu: SELECT imię FROM mieszkańcy WHERE imię LIKE '_r%';?

A. Gerald, Jarosław, Marek, Tamara
B. Krzysztof, Krystyna, Romuald
C. Arieta, Krzysztof, Krystyna, Tristan
D. Rafał, Rebeka, Renata, Roksana
Odpowiedź "Arieta, Krzysztof, Krystyna, Tristan" jest prawidłowa, ponieważ wszystkie te imiona spełniają warunki klauzuli LIKE w zapytaniu SQL. Klauzula LIKE z wzorcem '_r%' oznacza, że imię musi mieć na drugiej pozycji literę 'r' oraz może zawierać dowolne znaki po tej literze. Przykładowo, imię 'Krzysztof' ma 'r' na drugiej pozycji, tak samo jak 'Krystyna', a 'Tristan' również spełnia ten warunek. Imię 'Arieta' również odpowiada, ponieważ 'r' występuje na drugiej pozycji. W praktyce, zastosowanie klauzuli LIKE jest typowe przy wyszukiwaniu wzorców w bazach danych, co jest nieocenione przy tworzeniu systemów informacyjnych, w których istotna jest elastyczność w wyszukiwaniu. Dobra praktyka sugeruje również stosowanie operatora LIKE w połączeniu z innymi warunkami, aby zwiększyć precyzję zapytań, co z kolei przyczynia się do efektywności systemów bazodanowych.

Pytanie 33

Poniższe zapytanie SQL ma na celu:

UPDATE Uczen SET id_klasy = id_klasy + 1;
A. przypisać wartość kolumny id_klasy jako 1 dla wszystkich wpisów w tabeli Uczen
B. zwiększyć o jeden wartość pola Uczen
C. zwiększyć o jeden wartość kolumny id_klasy dla wszystkich wpisów w tabeli Uczen
D. ustawić wartość pola Uczen na 1
Polecenie SQL "UPDATE Uczen SET id_klasy = id_klasy + 1;" jest poprawne, ponieważ wskazuje na aktualizację kolumny 'id_klasy' w tabeli 'Uczen'. Wartość kolumny dla każdego rekordu w tabeli zostanie zwiększona o jeden. Działanie to jest przydatne w sytuacjach, gdy chcemy zaktualizować dane, na przykład po przesunięciu uczniów do wyższej klasy w systemie edukacyjnym. Przy takim podejściu, wszyscy uczniowie w danym roku szkolnym mogą zostać automatycznie przeniesieni do następnej klasy bez konieczności edytowania rekordów pojedynczo, co zwiększa efektywność i zmniejsza ryzyko błędów. Ta praktyka jest zgodna z zasadami optymalizacji baz danych, gdzie operacje masowe są preferowane dla ich wydajności. Ponadto, dobrym nawykiem jest tworzenie kopii zapasowych przed przeprowadzeniem masowych aktualizacji, aby uniknąć nieodwracalnych zmian w przypadku błędów.

Pytanie 34

GRANT SELECT, INSERT, UPDATE ON klienci TO anna;
Zakładając, że użytkownik wcześniej nie posiadał żadnych uprawnień, to polecenie SQL przyzna użytkownikowi anna prawa jedynie do:
A. wybierania, wstawiania oraz aktualizacji danych wszystkich tabel w bazie o nazwie klienci
B. wybierania, dodawania rekordów oraz zmiany struktury wszystkich tabel w bazie o nazwie klienci
C. wybierania, dodawania rekordów oraz modyfikacji struktury tabeli o nazwie klienci
D. wybierania, wstawiania oraz aktualizacji danych tabeli o nazwie klienci
Wybrane odpowiedzi mylnie sugerują, że przyznawane uprawnienia obejmują szerszy zakres niż rzeczywiście mają miejsce. Na przykład, odpowiedzi wskazujące na możliwość 'zmiany struktury tabeli' są błędne, ponieważ polecenie GRANT w tym kontekście nie daje takich uprawnień. Zmiana struktury tabeli, jak dodawanie czy usuwanie kolumn, wymagałaby uprawnień DDL (Data Definition Language), takich jak ALTER, które nie zostały przyznane w tym przypadku. Ponadto, odpowiedzi związane z 'wszystkimi tabelami w bazie' są również niepoprawne. Komenda GRANT została zastosowana wyłącznie do konkretnej tabeli 'klienci', co oznacza, że użytkownik 'anna' nie zyskuje uprawnień do innych tabel ani do bazy danych jako całości. To pokazuje istotne znaczenie precyzyjnego zarządzania uprawnieniami w środowisku baz danych, aby uniknąć nieautoryzowanego dostępu i niezamierzonych zmian w danych. Błędne interpretacje mogą wynikać z nieznajomości kontekstu użycia polecenia GRANT oraz jego ograniczeń, co często prowadzi do nadmiernego przyznawania uprawnień lub błędnych założeń dotyczących kontroli dostępu. Dążenie do dokładności w przydzielaniu uprawnień jest fundamentalne dla zapewnienia bezpieczeństwa i wydajności systemów baz danych.

Pytanie 35

Wskaż system do zarządzania treściami.

A. Apache
B. phpMyAdmin
C. Joomla!
D. MariaDB
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 36

Jakie zadanie wykonuje funkcja COUNT w języku SQL?

A. liczenie znaków w polu tekstowym
B. zliczanie rekordów uzyskanych z kwerendy
C. wyliczenie średniej wartości w danej kolumnie
D. obliczenie wartości bezwzględnej w polu liczbowym
Pierwsza z niepoprawnych odpowiedzi sugeruje, że funkcja COUNT zlicza znaki w polu tekstowym, co jest błędnym podejściem do definicji tej funkcji. W rzeczywistości, COUNT jest funkcją agregującą, która operuje na rekordach, a nie na pojedynczych znakach w danym polu. Aby zliczyć znaki, można użyć funkcji LEN lub CHAR_LENGTH, które są dedykowane do obliczania długości tekstu. Druga niepoprawna odpowiedź odnosi się do obliczania średniej wartości w kolumnie, co również jest nieprawidłowe. Funkcja do obliczania średniej wartości to AVG, która działa na liczbowych danych w wybranej kolumnie, a nie COUNT, który jedynie zlicza rekordy. Trzecia niepoprawna odpowiedź sugeruje obliczenie wartości bezwzględnej, co jest również mylące. Funkcje służące do obliczania wartości bezwzględnej to ABS, a nie COUNT. W kontekście SQL, istotne jest zrozumienie, że każda funkcja ma swoje konkretne przeznaczenie i należy je stosować zgodnie z ich definicjami, aby uzyskać prawidłowe wyniki w analizie danych.

Pytanie 37

Baza danych księgarni zawiera tabelę o nazwie książki, w której znajdują się: id, idAutor, tytul, ileSprzedanych oraz tabelę autorzy z polami: id, imie, nazwisko. Aby wygenerować raport dotyczący sprzedanych książek z tytułami i nazwiskami autorów, co należy zrobić?

A. zdefiniować relację 1..n pomiędzy tabelami książki i autorzy, a następnie przygotować kwerendę łączącą obie tabele
B. przygotować dwie oddzielne kwerendy: pierwszą wyszukującą tytuły książek, drugą wyszukującą nazwiska autorów
C. stworzyć kwerendę wyszukującą tytuły książek
D. zdefiniować relację 1..1 pomiędzy tabelami książki i autorzy, a następnie przygotować kwerendę łączącą obie tabele
Jak chcesz zrobić raport o sprzedanych książkach, musisz najpierw ustalić, jak połączone są tabelki 'książki' i 'autorzy'. W tym przypadku relacja 1..n jest najlepsza, bo każdy autor może napisać wiele książek, a każda książka ma swojego jednego autora. Kiedy już to masz ustalone, możesz zabrać się za pisanie kwerendy, która połączy te tabele. W SQL użyjesz JOIN, co pozwala połączyć dane i zobaczyć pełne informacje o sprzedanych książkach, w tym tytuły i nazwiska autorów. Przykładowa kwerenda może wyglądać tak: SELECT książki.tytul, autorzy.nazwisko FROM książki JOIN autorzy ON książki.idAutor = autorzy.id. Takie podejście umożliwia łączenie danych z różnych źródeł i jest podstawą analizy baz danych. Dobrze zdefiniowane relacje między tabelami to też klucz do utrzymania porządku w danych i efektywności zapytań.

Pytanie 38

Jakiego języka można użyć do obsługi połączenia z bazą danych MySQL podczas rozwijania aplikacji webowej?

A. HTML
B. CSS
C. XHTML
D. PHP
PHP jest językiem skryptowym, który jest szeroko stosowany do tworzenia dynamicznych aplikacji internetowych, a jego zdolność do interakcji z bazami danych, takimi jak MySQL, czyni go idealnym narzędziem do obsługi połączeń z bazą danych. PHP umożliwia programistom wysyłanie zapytań SQL do bazy danych, wykonywanie operacji CRUD (tworzenie, odczyt, aktualizacja, usuwanie) oraz przetwarzanie wyników, co jest kluczowe w nowoczesnym tworzeniu aplikacji webowych. Przykładowy kod PHP do nawiązania połączenia z bazą danych MySQL może wyglądać następująco: $conn = new mysqli('localhost', 'username', 'password', 'database');. W przypadku niepowodzenia połączenia, można użyć if ($conn->connect_error) { die('Connection failed: ' . $conn->connect_error); }. PHP wspiera również różne techniki zabezpieczeń, takie jak przygotowywanie zapytań, co znacząco zwiększa bezpieczeństwo aplikacji przed atakami typu SQL Injection. Dokumentacja PHP oraz standardy, takie jak PSR (PHP Standards Recommendations), dostarczają programistom niezbędnych wytycznych, aby tworzyć wydajne i bezpieczne aplikacje. Dzięki swojej elastyczności i wszechstronności, PHP stał się językiem pierwszego wyboru dla programistów zajmujących się tworzeniem aplikacji internetowych z interfejsem do baz danych.

Pytanie 39

Aby wyszukać w tabeli Pracownicy tylko te nazwiska, które kończą się na literę "i", można zastosować kwerendę SQL

A. SELECT nazwisko FROM Pracownicy WHERE nazwisko LIKE "%i"
B. SELECT nazwisko FROM Pracownicy WHERE nazwisko LIKE "%i%"
C. SELECT nazwisko FROM Pracownicy WHERE nazwisko LIKE "i%"
D. SELECT nazwisko FROM Pracownicy WHERE nazwisko LIKE "i"
Fajnie, że wybrałeś tę kwerendę SQL: 'SELECT nazwisko FROM Pracownicy WHERE nazwisko LIKE "%i";'. To jest naprawdę dobra robota, bo zastosowałeś operator LIKE w odpowiedni sposób. Wzorzec '%i' pozwala na wyszukiwanie nazwisk kończących się na literę 'i'. Ten symbol '%' to taki wildcard, który mówi SQL, żeby szukał czegokolwiek przed 'i', nawet niczego. To jest mega przydatne w codziennej pracy z bazami danych, bo często musimy wyciągać konkretne dane, żeby coś załatwić. Na przykład, jeśli chcemy stworzyć listę pracowników, którzy mają nazwiska kończące się na 'i', to ta kwerenda będzie strzałem w dziesiątkę. Pamiętaj, że dobrze jest testować swoje kwerendy na próbnych danych, żeby mieć pewność, że wyniki są takie, jakie chcemy.

Pytanie 40

Jakiego rodzaju relację uzyskuje się, łącząc ze sobą dwie tabele za pomocą kluczy głównych?

A. wiele do wielu
B. jeden do jednego
C. wiele do jednego
D. jeden do wielu
Wybór innych odpowiedzi, takich jak 'wiele do wielu', 'wiele do jednego' czy 'jeden do wielu', wynika zazwyczaj z nieporozumienia dotyczącego definicji i zastosowania relacji w bazach danych. Relacja wiele do wielu występuje, gdy wiele rekordów w jednej tabeli może być powiązanych z wieloma rekordami w innej tabeli, co jest często realizowane przez wprowadzenie tabeli pośredniczącej. Na przykład, w przypadku tabel 'Studenci' i 'Kursy', gdzie jeden student może zapisać się na wiele kursów, a każdy kurs może mieć wielu studentów, stosujemy relację wiele do wielu. Z kolei relacja wiele do jednego oznacza, że wiele rekordów w jednej tabeli odnosi się do jednego rekordu w innej tabeli, co ilustruje na przykład relacja 'Zamówienia' do 'Klientów', gdzie wiele zamówień może być złożonych przez jednego klienta. Natomiast relacja jeden do wielu charakteryzuje się tym, że jeden rekord w jednej tabeli może mieć wiele odpowiadających mu rekordów w innej tabeli. Zrozumienie tych typów relacji jest kluczowe dla projektowania efektywnych baz danych, ponieważ pozwala na optymalne zarządzanie danymi i ich integralnością. Użytkownicy, którzy nie dostrzegają subtelności między tymi relacjami, mogą wprowadzać błędy w projektowaniu baz danych, co prowadzi do problemów z wydajnością i spójnością danych.