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: 21 kwietnia 2026 11:41
  • Data zakończenia: 21 kwietnia 2026 11:57

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

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

A. każdej kolumnie przypisany zostanie typ danych
B. klucz główny zawsze będzie liczbą całkowitą
C. dla każdej tabeli zostanie ustanowiony klucz główny
D. każdy klucz główny będzie miał odpowiadający mu klucz obcy w innej tabeli
Wszystkie zaproponowane odpowiedzi mogą wydawać się związane z tematyką integralności encji, jednak nie każda z nich rzeczywiście przyczynia się do jej zachowania w kontekście baz danych. Użycie klucza głównego jako liczby całkowitej nie jest kryterium zapewniającym integralność; klucz główny może być również tekstowy lub złożony, o ile spełnia warunki unikalności i braku wartości NULL. Przypisanie typu danych dla każdej kolumny jest ważne dla sprawności operacji na danych, ale samo w sobie nie zapewnia integralności encji, ponieważ nie kontroluje unikalności rekordów. Kolejnym błędnym podejściem jest twierdzenie, że każdy klucz główny musi mieć odpowiadający klucz obcy w innej tabeli. Klucz obcy jest używany do ustanowienia relacji między tabelami, ale nie jest wymagany do zapewnienia integralności encji w pojedynczej tabeli. Klucz główny w jednej tabeli działa niezależnie od kluczy obcych w innych tabelach; jego główną rolą jest zapewnienie, że każdy rekord w tabeli jest unikalny. W praktyce, brak zrozumienia tych koncepcji może prowadzić do projektowania baz danych, które są nieefektywne i trudne do zarządzania, co w dłuższej perspektywie wpływa na jakość danych i ich dostępność.

Pytanie 2

Jakiego wyniku można się spodziewać po wykonaniu zapytania na przedstawionej tabeli?

SELECTCOUNT(DISTINCT wykonawca)
FROM`muzyka`;
IDtytul_plytywykonawcarok_nagraniaopis
1Czas jak rzekaCzesław Niemen2005Przyjdź W Taka Noc itp.
2IkonaStan Borys2014
3AerolitCzesław Niemen2017Winylowa reedycja płyty "Aerolit"
4JourneyMikołaj Czechowski2013
A. 1
B. 3
C. 0
D. 4
Zapytanie SELECT COUNT(DISTINCT wykonawca) FROM muzyka; ma na celu zliczenie unikalnych wykonawców w tabeli muzyka. Kluczowym błędem jest brak zrozumienia działania funkcji DISTINCT która eliminuje duplikaty i pozwala na zliczenie jedynie różniących się wartości. Należy zatem odrzucić wszelkie odpowiedzi sugerujące liczbę większą niż 3 ponieważ w tabeli są obecne tylko trzy unikalne wartości w kolumnie wykonawca: Czesław Niemen Stan Borys oraz Mikołaj Czechowski. Często popełnianym błędem jest mylne założenie że każda unikalna wartość w konkretnej kolumnie powinna być liczona wielokrotnie co odbiega od celu analizy unikalności danych. W kontekście administracji bazami danych i analizy SQL zrozumienie funkcji DISTINCT jest kluczowe dla dokładności raportowania i optymalizacji wydajności zapytań. Wiedza o tym jak działa COUNT w połączeniu z DISTINCT pomaga w skutecznym projektowaniu zapytań w celu uzyskania dokładnych wyników. Zastosowanie tej wiedzy jest niezbędne w analizie danych biznesowych i przy tworzeniu precyzyjnych raportów dla różnych interesariuszy. Poprawne zrozumienie i implementacja tego mechanizmu wspiera efektywne zarządzanie danymi i podejmowanie decyzji opartych na faktach. Przygotowanie do egzaminu powinno obejmować praktyczne zastosowanie tych koncepcji co ułatwi ich intuicyjne wykorzystanie w sytuacjach zawodowych.

Pytanie 3

W programie Microsoft Access mechanizmem ochrony danych związanym z tabelą i kwerendą jest

A. wykorzystanie makr
B. określanie zakresu tabel
C. przypisanie uprawnień
D. ustalanie limitów przestrzeni na dysku
Przypisanie uprawnień jest kluczowym elementem zarządzania bezpieczeństwem w Microsoft Access, ponieważ pozwala na kontrolowanie, kto ma dostęp do danych w tabelach i kwerendach. W praktyce, administratorzy baz danych mogą definiować, które grupy użytkowników mogą przeglądać, edytować lub usuwać dane. To podejście jest zgodne z zasadą najmniejszych uprawnień, co oznacza, że użytkownicy otrzymują tylko te uprawnienia, które są im niezbędne do wykonywania swoich zadań. Na przykład, jeśli pracownik potrzebuje jedynie przeglądać dane w konkretnej tabeli, administrator może przyznać mu jedynie uprawnienia do odczytu, co minimalizuje ryzyko nieautoryzowanych zmian. Warto także wspomnieć, że przypisanie uprawnień nie ogranicza się tylko do tabel, ale dotyczy również kwerend, formularzy i raportów, co pozwala na szczegółowe zarządzanie dostępem do różnych zasobów systemu. Dobre praktyki w zakresie bezpieczeństwa baz danych zalecają regularne audyty uprawnień, aby upewnić się, że są one nadal odpowiednie do zmieniających się potrzeb organizacji oraz roli użytkowników.

Pytanie 4

Aby cofnąć uprawnienia dostępu do serwera MySQL, należy wykorzystać polecenie

A. DELETE
B. USAGE
C. REVOKE
D. GRANT
Aby odebrać prawa dostępu do serwera MySQL, używa się polecenia REVOKE. To polecenie jest kluczowe w zarządzaniu uprawnieniami użytkowników w systemie zarządzania bazą danych MySQL. REVOKE pozwala na usunięcie wcześniej przydzielonych praw dostępu do określonych zasobów, takich jak tabele, bazy danych lub inne obiekty. Przykładowo, aby odebrać prawo SELECT dla użytkownika 'janek' na tabeli 'produkty', należy użyć komendy: REVOKE SELECT ON produkty FROM 'janek'@'localhost';. Dzięki temu użytkownik 'janek' nie będzie miał możliwości wykonywania zapytań SELECT na tej tabeli. Warto zaznaczyć, że REVOKE działa w oparciu o hierarchię uprawnień, co oznacza, że można je łączyć z innymi poleceniami, aby skutecznie zarządzać dostępem. Zgodnie z dokumentacją MySQL, REVOKE jest integralną częścią systemu autoryzacji, co czyni je niezbędnym dla zapewnienia bezpieczeństwa danych w bazach danych. Użycie REVOKE jest również istotne w kontekście audytów bezpieczeństwa, gdzie konieczne jest zarządzanie dostępem do danych.

Pytanie 5

Jakie zadania programistyczne należy wykonać na serwerze?

A. Zapisanie danych pozyskanych z aplikacji internetowej w bazie danych
B. Weryfikacja danych wprowadzonych do pola tekstowego na bieżąco
C. Ukrywanie i wyświetlanie elementów strony w zależności od aktualnej pozycji kursora
D. Zmiana stylu HTML na stronie spowodowana ruchem kursora
Zapisanie danych pobranych z aplikacji internetowej w bazie danych to zadanie, które powinno być wykonywane po stronie serwera ze względów bezpieczeństwa, integralności danych oraz zarządzania zasobami. Serwer jest odpowiedzialny za przechowywanie informacji, które mogą być wykorzystywane przez wielu użytkowników, co wymaga centralizacji ich przetwarzania. W przypadku aplikacji internetowych, dane są często przesyłane z klienta (przeglądarki) do serwera, gdzie są walidowane oraz zapisywane w bazach danych. Na przykład, gdy użytkownik rejestruje się w aplikacji, jego dane osobowe są wysyłane do serwera, który sprawdza poprawność tych informacji i zapisuje je w bazie danych. Właściwe implementacje powinny stosować bezpieczne połączenia (np. HTTPS), a także techniki, takie jak sanitizacja danych, aby unikać ataków typu SQL Injection. Dobrą praktyką jest także stosowanie ORM (Object-Relational Mapping), co umożliwia łatwiejsze zarządzanie danymi i ich relacjami. Przechowywanie danych po stronie serwera pozwala na efektywne zarządzanie zasobami i umożliwia późniejsze przetwarzanie informacji w sposób zorganizowany i bezpieczny.

Pytanie 6

W bazie danych znajdują się dwie tabele, które są ze sobą połączone relacją 1..n. Jakiej klauzuli SQL należy użyć, aby uzyskać odpowiadające sobie dane z obu tabel?

A. INNER LINK
B. AND
C. JOIN
D. OUTER LINK
Klauzula JOIN w SQL służy do łączenia tabel w bazie danych, pozwalając na pobranie powiązanych danych z różnych tabel. W przypadku relacji 1..n, przy której jedna tabela (nazwa tabeli `A`) może mieć wiele powiązanych rekordów w drugiej tabeli (nazwa tabeli `B`), klauzula JOIN jest idealna do uzyskania korespondujących wartości z obu tabel. Przykład zastosowania to: SELECT A.*, B.* FROM A JOIN B ON A.id = B.a_id; W powyższym zapytaniu `A.id` to klucz główny tabeli `A`, a `B.a_id` to klucz obcy w tabeli `B`, który odnosi się do `A`. Klauzula JOIN może przyjmować różne formy, takie jak INNER JOIN, LEFT JOIN, RIGHT JOIN, i FULL JOIN, które różnią się sposobem łączenia danych i wynikami. JOIN jest standardem SQL, co oznacza, że jest wspierany przez większość systemów zarządzania bazami danych, takich jak MySQL, PostgreSQL, Oracle, czy Microsoft SQL Server. Użycie klauzuli JOIN jest kluczowe w relacyjnych bazach danych, gdzie dane są rozdzielone w różnych tabelach, ale muszą być analizowane łącznie.

Pytanie 7

Funkcja CONCAT() w SQL służy do

A. uzyskiwania podłańcucha ze wskazanego tekstu
B. łączenia tekstów do wyświetlenia
C. przycinania tekstu do wyświetlenia
D. usuwania określonego tekstu
Funkcja CONCAT() w SQL nie ma nic wspólnego z usuwaniem tekstu, przycinaniem go ani wyznaczaniem podłańcuchów. Usunięcie wskazanego tekstu to inaczej operacja związana z funkcją REPLACE lub DELETE, które służą do usuwania fragmentów danych z tabel, a nie ich łączenia. Przycinanie tekstu, z kolei, może być realizowane za pomocą funkcji CHARINDEX lub LEN, które są używane do określenia długości tekstu lub jego pozycji, ale nie mają one zastosowania w kontekście łączenia różnych elementów. Odpowiedź sugerująca, że CONCAT() wyznacza podłańcuchy znaków, również jest mylna, ponieważ do tego celu służą funkcje takie jak SUBSTRING czy LEFT, które pozwalają na wyodrębnianie określonych części tekstu na podstawie pozycji. Typowym błędem myślowym jest mylenie różnych funkcji SQL, które pełnią odrębne role. Należy pamiętać, że każda z tych operacji ma swoje unikalne zastosowanie i są one wykorzystywane w różnych kontekstach. Dlatego przed przystąpieniem do użycia konkretnej funkcji, warto dokładnie zrozumieć jej przeznaczenie i działanie, aby uniknąć nieporozumień i błędów w zapytaniach SQL.

Pytanie 8

Którą kwerendę należy wykonać, aby zaktualizować wszystkim rekordom z tabeli pracownicy wartość w kolumnie plec na K, przyjmując na potrzeby zadania, że każde imię żeńskie kończy się literą a?

A. UPDATE pracownicy SET plec='K' WHERE imie='%a';
B. ALTER TABLE pracownicy SET plec='K' WHERE imie LIKE '%a';
C. UPDATE pracownicy SET plec='K' WHERE imie LIKE '%a';
D. ALTER TABLE pracownicy SET plec='K' WHERE imie='%a';
W tym zadaniu łatwo się potknąć na dwóch rzeczach: pomyleniu operacji na strukturze tabeli z operacjami na danych oraz na nieprawidłowym użyciu wzorca tekstowego. W SQL istnieje dość wyraźny podział na instrukcje służące do definiowania struktury bazy (DDL) oraz te, które manipulują rekordami (DML). ALTER TABLE należy do tej pierwszej grupy. Używa się go do dodawania kolumn, zmiany typu danych, ustawiania kluczy obcych, czasem indeksów. Nie ma on mechanizmu typu SET kolumna='wartość' z warunkiem WHERE, który modyfikuje poszczególne wiersze. Próba napisania ALTER TABLE ... SET plec='K' WHERE imie LIKE '%a' po prostu nie jest zgodna ze składnią SQL i nie zadziała w żadnym normalnym systemie bazodanowym. Drugi typ błędu dotyczy użycia WHERE imie='%a'. W wielu językach programowania znak % kojarzy się z operacjami na łańcuchach albo z formatowaniem, ale w czystym SQL porównanie z operatorem = oznacza ścisłą równość, bez żadnych wildcardów. Wyrażenie imie = '%a' oznacza: imie ma być dokładnie dwuznakowym ciągiem składającym się z procenta i litery „a”. Żadne „dowolne znaki przed a” się tu nie pojawiają. Do dopasowywania wzorców tekstowych służy operator LIKE, a dopiero przy LIKE znaczek % ma specjalne znaczenie – „dowolny ciąg znaków”. To jest bardzo typowe nieporozumienie: ktoś pamięta, że w LIKE używa się % i _ jako wildcardów, i odruchowo wrzuca % także przy zwykłym =. Z mojego doświadczenia wynika, że dobrym nawykiem jest rozdzielenie w głowie: UPDATE + SET + WHERE – do zmiany danych; ALTER TABLE – tylko do zmian struktury. A przy wyszukiwaniu tekstów: jeśli chcę sztywne porównanie, używam =, jeśli szukam po fragmencie, używam LIKE z % (wieloznak) lub _ (pojedynczy znak). W praktyce webowej błędne użycie tych konstrukcji może prowadzić do sytuacji, że kwerenda nic nie zwraca albo nie aktualizuje żadnego rekordu, a programista długo szuka błędu np. po stronie PHP czy JavaScript, zamiast zacząć od samego SQL-a. Warto też pamiętać, że aktualizacje bez poprawnego WHERE są niebezpieczne, bo mogą zmienić wszystkie rekordy w tabeli, więc warunek oparty na właściwie użytym LIKE jest kluczowy zarówno dla poprawności, jak i bezpieczeństwa danych.

Pytanie 9

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 ON Zamówienia.id = Firmy.id WHERE poziom = 4
B. SELECT Zamówienia.id, nazwa FROM Zamówienia JOIN Firmy WHERE poziom = 4
C. SELECT Zamówienia.id, nazwa FROM Zamówienia JOIN Firmy ON Zamówienia.Firmy_id = Firmy.id WHERE poziom = 4
D. SELECT 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 10

Zgodnie z zasadami ACID, które odnoszą się do realizacji transakcji, wymóg trwałości (ang. durability) oznacza, że

A. transakcja może w pewnych okolicznościach być podzielona na dwa niezależne etapy
B. w przypadku naruszenia spójności bazy danych transakcja usuwa tabele z kluczami obcymi
C. dane zatwierdzone przez transakcję powinny być dostępne niezależnie od wydarzeń, które nastąpią po jej zakończeniu
D. w trakcie wykonywania transakcji dane mogą być zmieniane przez inne transakcje
Wybranie odpowiedzi, że w przypadku naruszenia spójności bazy danych transakcja usuwa tabele z kluczami obcymi, nie jest zbyt mądre. Usuwanie tabel mogłoby naprawdę zaszkodzić strukturze danych i doprowadzić do poważnych problemów. Spójność baz danych to jeden z elementów ACID, ale to nie znaczy, że w razie kłopotów można po prostu rzucać się na tabele. W kontekście trwałości (durability) warto unikać działań, które mogą skutkować utratą danych. Zauważyłem też, że druga opcja sugeruje, że dane mogą być zmieniane przez inne transakcje w trakcie trwania jednej. To jest naruszenie zasady izolacji, która mówi, że każda transakcja powinna działać niezależnie. Zmiany równocześnie mogą prowadzić do chaosu, a zasady ACID starają się temu zapobiegać. Co do podziału transakcji na dwa etapy, to też jest niezgodne z zasadami ACID, zwłaszcza w kontekście trwałości i izolacji. Takie coś może tylko skomplikować sprawę i doprowadzić do niespójności. Dlatego, żeby dobrze zarządzać transakcjami w bazach danych, trzeba naprawdę zrozumieć zasady ACID i wdrażać strategie, które pomogą unikać błędów i zapewnić porządek.

Pytanie 11

Poziom izolacji transakcji Repeatable Read (tryb powtarzalnego odczytu) używany przez MS SQL jest związany z problemem

A. niepowtarzalnych odczytów
B. odczytów widm
C. utraty aktualizacji
D. brudnych odczytów
Odpowiedź 'odczytów widm' jest właściwa, ponieważ poziom izolacji transakcji Repeatable Read zapobiega brudnym odczytom i niepowtarzalnym odczytom, ale nie rozwiązuje problemu odczytów widm. Odczyty widmowe występują, gdy w czasie trwania transakcji inne transakcje mogą dodać nowe wiersze, które spełniają kryteria zapytania tej transakcji, co prowadzi do sytuacji, w której transakcja widzi różne dane w kolejnych odczytach. W praktyce, implementując poziom izolacji Repeatable Read, aplikacje muszą być świadome tego, że mogą wystąpić takie sytuacje, co może prowadzić do nieprzewidywalnych wyników. Przykładowo, jeśli jedna transakcja odczytuje zestaw danych, a inna transakcja w międzyczasie dodaje nowe rekordy, to podczas kolejnego odczytu pierwsza transakcja może zobaczyć te nowe rekordy, co jest problemem. Z tego powodu standardy i dobre praktyki w projektowaniu aplikacji bazodanowych zalecają używanie bardziej ścisłych poziomów izolacji, takich jak Serializable, kiedy to konieczne, aby uniknąć takich problemów. Warto zwrócić uwagę, że stosowanie odpowiednich poziomów izolacji jest kluczowe dla zapewnienia spójności i integralności danych, co jest niezbędne w większości nowoczesnych aplikacji bazodanowych.

Pytanie 12

W bazie danych MySQL znajduje się tabela z programami komputerowymi, posiadająca kolumny: nazwa, producent, rokWydania. Jaką kwerendę SELECT należy zastosować, aby uzyskać listę wszystkich producentów, unikając powtórzeń?

A. SELECT UNIQUE producent FROM programy
B. SELECT producent FROM programy WHERE producent NOT DUPLICATE
C. SELECT DISTINCT producent FROM programy
D. SELECT producent FROM programy WHERE UNIQUE
Wybór pierwszej odpowiedzi, która sugeruje użycie słowa kluczowego UNIQUE, jest błędny. W MySQL, UNIQUE nie jest słowem kluczowym stosowanym do eliminacji duplikatów w kwerendzie SELECT; zamiast tego jest używane w kontekście definiowania unikalnych kluczy w tabelach. Również, odpowiedź zawierająca WHERE UNIQUE jest niepoprawna, ponieważ kombinacja WHERE z UNIQUE jest syntaktycznie niepoprawna w SQL. WHERE służy do filtrowania wyników, ale UNIQUE nie jest używane w tej konstrukcji. Kolejną nieprawidłową odpowiedzią jest użycie WHERE producent NOT DUPLICATE; termin 'NOT DUPLICATE' jest również nieznany w kontekście SQL. Takie frazy nie są uznawane przez silnik baz danych MySQL. W praktyce, aby wykluczyć duplikaty, niezbędne jest zastosowanie słowa kluczowego DISTINCT, które jest standardowym podejściem i zapewnia prawidłowe wyniki. Ostatecznie, wszystkie te niepoprawne odpowiedzi wskazują na brak zrozumienia podstawowych zasad działania języka SQL oraz funkcji przeznaczonych do manipulacji danymi w bazach danych.

Pytanie 13

Jak wykonanie zapytania SQL przedstawionego poniżej wpłynie na tabelę pracownicy?

ALTER TABLE pracownicy MODIFY plec char(9);
A. Utworzy kolumnę plec o typie znakowym o zmiennej długości 9.
B. Utworzy kolumnę plec o typie znakowym o stałej długości 9.
C. Zmieni typ danych kolumny plec na znakowy o stałej długości 9.
D. Zmieni typ danych kolumny plec na znakowy o zmiennej długości 9.
Wiele osób może mylnie zakładać, że polecenie SQL ALTER TABLE z instrukcją MODIFY dodaje nową kolumnę, co jest nieprawdziwe. W rzeczywistości, ta instrukcja wprowadza zmiany w już istniejącej kolumnie, a nie tworzy nowej. Pojęcie „dodawania kolumny” odnosi się do instrukcji ADD, a nie MODIFY. Kolejnym błędnym założeniem może być mylenie typów danych - istnieje tendencja do myślenia, że „zmienna długość” oznacza typ char, podczas gdy jest to charakterystyczne dla typu varchar. Typ char jest używany do przechowywania danych o stałej długości, co oznacza, że nawet jeśli przechowywana wartość jest krótsza niż zadana długość, system automatycznie wypełni pozostałe znaki spacjami. Zmiana typu danych na char(9) nie umożliwia przechowywania zmiennych długości danych, a użycie varchar w tym kontekście byłoby właściwsze, gdyby istniała potrzeba przechowywania danych o różnej długości. Wydaje się, że niektórzy mogą też źle interpretować pojęcie „zmiennej długości” i myśleć, że jest to coś, co można przypisać kolumnie typu char, co prowadzi do nieprawidłowych wniosków.

Pytanie 14

W bazie danych samochodów pole kolor z tabeli samochody przyjmuje wartości kolorów jedynie ze słownika lakier. Aby połączyć tabele samochody i lakier relacją należy, zastosować kwerendę

A. ALTER TABLE samochody
   ADD FOREIGN KEY kolor REFERENCES lakier;

B. ALTER TABLE samochody
   ADD FOREIGN KEY (kolor) REFERENCES lakier(lakierId);

C. ALTER TABLE samochody
   ADD FOREIGN KEY barwa REFERENCES samochody.lakier;

D. ALTER TABLE lakier
   ADD FOREIGN KEY (barwa) REFERENCES samochody(kolor);
A. C.
B. D.
C. B.
D. A.
Błędne odpowiedzi wynikają z niezrozumienia jak działa łączenie tabel w SQL lub z błędów w składni. W przypadku relacji między tabelami, klucz obcy w jednej tabeli odpowiada kluczowi głównemu w drugiej tabeli. Tymczasem, niektóre z błędnych odpowiedzi zawierają niewłaściwe odniesienia do kluczy głównych i obcych. Próby utworzenia klucza obcego bez odwołania do odpowiadającego mu klucza głównego, lub odwołanie się do nieistniejących pól w tabeli, skutkują błędami i niepoprawnym działaniem bazy danych. Błędy w składni SQL, takie jak niepoprawne użycie słów kluczowych czy polecenia utworzenia klucza obcego, mogą także prowadzić do nieprawidłowych wyników. Zrozumienie relacji między tabelami i prawidłowe stosowanie składni SQL są kluczowe dla efektywnej pracy z bazami danych.

Pytanie 15

Aby zmienić strukturę tabeli w bazie danych MySQL, należy użyć komendy

A. GRANT
B. UPDATE
C. ALTER TABLE
D. INSERT INTO
Odpowiedź 'ALTER TABLE' jest poprawna, gdyż to polecenie w MySQL służy do modyfikacji struktury istniejącej tabeli. Dzięki niemu możemy dodawać nowe kolumny, zmieniać typy danych kolumn, usuwać kolumny, a także zmieniać właściwości tabeli, takie jak klucze główne czy unikalne. Przykład zastosowania polecenia ALTER TABLE to dodanie kolumny do tabeli: 'ALTER TABLE pracownicy ADD COLUMN wiek INT;' co skutkuje dodaniem kolumny 'wiek' o typie INT do tabeli 'pracownicy'. Zgodnie z najlepszymi praktykami, przed wykonaniem takich operacji warto wykonać kopię zapasową bazy danych, aby uniknąć utraty danych w przypadku nieprawidłowego wykonania polecenia. Używanie ALTER TABLE jest kluczowe podczas rozwoju aplikacji, gdyż często zachodzi potrzeba dostosowania struktury bazy danych do zmieniających się wymagań biznesowych.

Pytanie 16

Jakie mechanizmy przydzielania zabezpieczeń, umożliwiające wykonywanie działań na bazie danych, są związane z tematyką zarządzania kontami, użytkownikami oraz ich uprawnieniami?

A. Z właściwościami
B. Z przywilejami systemowymi
C. Z przywilejami obiektowymi
D. Z zasadami
Zarządzanie kontami, użytkownikami i uprawnieniami w kontekście baz danych opiera się na przywilejach systemowych, które umożliwiają kontrolowanie dostępu do zasobów i operacji w systemie bazodanowym. Przywileje systemowe są definiowane jako zestaw uprawnień przypisanych do użytkowników lub ról, które decydują o tym, jakie operacje mogą być wykonywane na poziomie systemu, takie jak tworzenie, modyfikowanie i usuwanie baz danych oraz zarządzanie danymi. Przykłady przywilejów systemowych obejmują 'CREATE USER', 'DROP USER' czy 'GRANT ALL PRIVILEGES', które pozwalają na pełne zarządzanie użytkownikami oraz ich uprawnieniami. Standardy takie jak SQL92 czy ISO/IEC 9075 określają zasady dotyczące definiowania i stosowania przywilejów w systemach zarządzania bazami danych, co sprawia, że są one kluczowe dla zapewnienia bezpieczeństwa oraz integralności danych. Właściwe zarządzanie tymi przywilejami jest niezbędne do minimalizacji ryzyka nieautoryzowanego dostępu oraz do ochrony wrażliwych informacji przed potencjalnymi zagrożeniami.

Pytanie 17

Jaką wiadomość należy umieścić w przedstawionym fragmencie kodu PHP zamiast znaków zapytania? $a=mysql_connect('localhost','adam','mojeHasło'); if(!$a) echo "?????????????????????????";

A. Wybrana baza danych nie istnieje
B. Rekord został pomyślnie dodany do bazy
C. Błąd w przetwarzaniu zapytania SQL
D. Błąd połączenia z serwerem SQL
W sytuacji, gdy nie udaje się nawiązać połączenia z serwerem baz danych MySQL, komunikat błędu powinien jasno wskazywać na problem związany z połączeniem. W kodzie PHP, używając funkcji mysql_connect(), jeśli połączenie się nie powiedzie, zwracany jest błąd, który powinien być odpowiednio obsłużony. W tym przypadku odpowiednia treść komunikatu powinna brzmieć 'Błąd połączenia z serwerem SQL'. Ważne jest, aby programiści dbali o poprawne komunikaty błędów, ponieważ ułatwiają one diagnozowanie problemów. Dobrą praktyką jest także stosowanie obsługi wyjątków, co zwiększa stabilność aplikacji. Przykład: zamiast używać mysql_connect(), zaleca się korzystanie z mysqli lub PDO, które oferują bardziej zaawansowane opcje zarządzania błędami oraz obsługę wyjątków. W przypadku użycia mysqli, mógłbyś to zrobić w następujący sposób: $mysqli = new mysqli('localhost', 'adam', 'mojeHasło'); if ($mysqli->connect_error) { echo 'Błąd połączenia z serwerem SQL: ' . $mysqli->connect_error; } Poprawne raportowanie błędów jest kluczowym elementem programowania, ponieważ pozwala na szybką identyfikację i naprawę potencjalnych problemów.

Pytanie 18

Aby przyznać użytkownikowi prawa do tabel w bazie danych, powinno się użyć polecenia

A. GRANT
B. REVOKE
C. SELECT
D. CREATE
Polecenie GRANT jest kluczowym elementem zarządzania uprawnieniami w systemach baz danych, takich jak MySQL, PostgreSQL czy Oracle. Umożliwia ono administratorom nadawanie określonych uprawnień użytkownikom lub rolom, co jest niezbędne do zapewnienia bezpieczeństwa danych oraz kontroli dostępu. Przykładowo, aby umożliwić użytkownikowi o nazwie 'Jan' dostęp do tabeli 'Klienci', można użyć polecenia: GRANT SELECT ON Klienci TO Jan; co przyznaje użytkownikowi prawo do odczytu danych z tej tabeli. Z perspektywy dobrych praktyk, zaleca się stosowanie minimalnych uprawnień, co oznacza, że użytkownik powinien mieć przyznane tylko te uprawnienia, które są mu niezbędne do wykonywania swoich zadań. Dzięki temu można zredukować ryzyko nieautoryzowanego dostępu do wrażliwych informacji. Dodatkowo, operacja GRANT może być stosowana w połączeniu z innymi poleceniami, takimi jak REVOKE, które służy do odbierania wcześniej nadanych uprawnień, co stanowi integralną część zarządzania bezpieczeństwem w bazach danych.

Pytanie 19

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' OR cena BETWEEN 1000 AND 1500;
B. SELECT nazwa FROM artykuły WHERE typ=,pralka' AND cena BETWEEN 1000 AND 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 OR 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 20

Kwerenda ma za zadanie w tabeli artykuly ALTER TABLE artykuly MODIFY cena float;

A. dodać kolumnę cena o typie float, jeśli nie istnieje
B. zmienić nazwę kolumny z cena na float
C. usunąć kolumnę cena typu float
D. zmienić typ na float dla kolumny cena
Odpowiedź, która zmienia typ kolumny 'cena' na 'float' jest prawidłowa, gdyż użycie kwerendy ALTER TABLE z poleceniem MODIFY pozwala na modyfikację istniejącej kolumny w już utworzonej tabeli. W praktyce, jeśli w tabeli 'artykuły' kolumna 'cena' była wcześniej zdefiniowana jako typ inny niż float, zastosowanie polecenia ALTER TABLE jest właściwą metodą, by dostosować ten typ do wymagań aplikacji, które mogą wymagać precyzyjnych wartości liczbowych, na przykład w kontekście obliczeń finansowych. W SQL, typ float jest używany do przechowywania liczb zmiennoprzecinkowych, co jest szczególnie istotne w przypadku cen, które mogą mieć wartości dziesiętne. Dobre praktyki sugerują, aby zmiana typu danych dokonywana była w sposób przemyślany i po uprzednim sprawdzeniu, czy zmiana nie wpłynie negatywnie na istniejące dane. Warto pamiętać, że przed modyfikacją schematu bazy danych, dobrze jest wykonać kopię zapasową, aby zminimalizować ryzyko utraty danych.

Pytanie 21

GRANT SELECT, INSERT, UPDATE ON klienci TO anna; Przy założeniu, że użytkownik nie miał wcześniej przyznanych żadnych uprawnień, to polecenie SQL przypisuje użytkownikowi anna wyłącznie prawa do

A. wybierania, wstawiania oraz aktualizacji danych w każdej tabeli w bazie o nazwie klienci
B. wybierania, dodawania kolumn oraz zmiany struktury wszystkich tabel w bazie o nazwie klienci
C. wybierania, dodawania kolumn oraz zmiany struktury tabeli o nazwie klienci
D. wybierania, wstawiania oraz aktualizacji danych w tabeli o nazwie klienci
Podane odpowiedzi przedstawiają różne koncepcje związane z przyznawaniem uprawnień, które są jednak nieprawidłowe w kontekście polecenia GRANT przedstawionego w pytaniu. Po pierwsze, odpowiedzi sugerujące, że użytkownik anna ma prawo do dodawania pól lub zmiany struktury tabeli, są błędne. GRANT w tym kontekście nie przyznaje uprawnień do modyfikacji strukturalnych tabeli, takich jak dodawanie kolumn; te operacje wymagają osobnych uprawnień, jak ALTER. Po drugie, koncepcja przyznawania praw do wszystkich tabel w bazie danych jest mylna, ponieważ polecenie odnosi się wyłącznie do konkretnej tabeli o nazwie klienci. W praktyce oznacza to, że nawet jeśli użytkownik ma uprawnienia do jednej tabeli, nie ma automatycznie dostępu do innych tabel w bazie. Często mylnie przyjmuje się, że nadanie praw na poziomie jednej tabeli automatycznie rozszerza te prawa na wszystkie elementy w bazie danych, co jest fundamentalnym błędem w zrozumieniu zarządzania uprawnieniami. Kluczowe w tej problematyce jest zrozumienie, że uprawnienia w systemach baz danych są przyznawane w sposób bardzo precyzyjny i specyficzny, co pozwala na ochronę danych i kontrolę dostępu zgodnie z najlepszymi praktykami w zakresie bezpieczeństwa informacji.

Pytanie 22

Jakie imiona spełniają warunki klauzuli LIKE w zapytaniu?

SELECT imie FROM mieszkancy WHERE imie LIKE '_r%';
A. Arleta, Krzysztof, Krystyna, Tristan
B. Rafał, Rebeka, Renata, Roksana
C. Krzysztof, Krystyna, Romuald
D. Gerald, Jarosław, Marek, Tamara
Zapytanie SQL wykorzystuje klauzulę LIKE, która pozwala na wyszukiwanie wzorców w danych tekstowych. W tym przypadku wzór '_r%' oznacza, że szukamy imion, które mają na drugiej pozycji literę 'r' i mogą mieć dowolne znaki po tej literze. W analizowanych imionach, Arleta, Krzysztof, Krystyna oraz Tristan spełniają ten warunek, ponieważ: Arleta ma 'r' na drugiej pozycji, Krzysztof również, Krystyna także, a Tristan ma 'r' na drugiej pozycji. Przykład użycia klauzuli LIKE jest szczególnie przydatny w systemach, gdzie często zachodzi potrzeba filtrowania danych tekstowych na podstawie określonych wzorców. W praktyce, stosowanie klauzuli LIKE w zapytaniach SQL powinno być zgodne z najlepszymi praktykami, takimi jak optymalizacja indeksów i unikanie nadmiernego używania znaków wieloznacznych, które mogą prowadzić do spadku wydajności. Warto również pamiętać, że w wielu systemach baz danych klauzula LIKE jest czuła na wielkość liter, co może wpływać na wyniki zapytań.

Pytanie 23

W aplikacji PHP do bazy danych została wysłana kwerenda SELECT przy pomocy funkcji mysqli_query. Jaką funkcję powinien wykorzystać użytkownik, aby ustalić, ile rekordów zostało zwróconych przez zapytanie?

A. mysqli_query
B. mysqli_num_rows
C. mysqli_fetch_row
D. mysqli_connect
Funkcja mysqli_num_rows jest kluczowym narzędziem w interakcji z bazą danych w PHP, umożliwiającym sprawdzenie liczby rekordów zwróconych przez zapytanie SELECT. Po wywołaniu mysqli_query, które wykonuje zapytanie SQL, można uzyskać wynik, który jest obiektem typu mysqli_result. Używając mysqli_num_rows, możemy szybko i efektywnie dowiedzieć się, ile rekordów zostało zwróconych przez to zapytanie. Przykładowo, po wykonaniu zapytania do bazy danych można użyć poniższego kodu: $result = mysqli_query($conn, 'SELECT * FROM users'); $count = mysqli_num_rows($result); echo 'Liczba rekordów: ' . $count;. Dzięki temu użytkownik ma pełną kontrolę nad danymi, co jest zgodne z najlepszymi praktykami w programowaniu, gdzie liczenie rekordów może być niezbędne do dalszej logiki aplikacji, jak stronicowanie wyników czy walidacja danych. Warto również wiedzieć, że mysqli_num_rows nie tylko zwraca liczbę rekordów, ale także działa wydajnie, co ma znaczenie przy dużych zbiorach danych, gdzie minimalizowanie obciążenia serwera i bazy jest kluczowe.

Pytanie 24

Z tabel Klienci oraz Uslugi należy wyodrębnić tylko imiona klientów oraz odpowiadające im nazwy usług, które kosztują więcej niż 10 zł. Kwerenda uzyskująca te informacje ma formę

Ilustracja do pytania
A. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = uslugi_id
B. SELECT imie, nazwa FROM klienci, uslugi WHERE cena < 10
C. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = uslugi_id WHERE cena > 10
D. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = klienci.id
Odpowiedź 4 jest prawidłowa, ponieważ prawidłowo wykorzystuje składnię SQL do połączenia dwóch tabel oraz filtrowania danych na podstawie podanego warunku. Kwerenda używa JOIN, aby połączyć tabele Klienci i Uslugi na podstawie wspólnej kolumny uslugi_id, co jest zgodne z zasadami relacyjnej bazy danych, gdzie klucz obcy w jednej tabeli odnosi się do klucza głównego w innej tabeli. Następnie, kwerenda stosuje filtrację WHERE cena > 10, co pozwala na wybór tylko tych rekordów, gdzie cena usługi przekracza 10 zł. Jest to zgodne z praktyką selektywnego pobierania danych, co jest kluczowe w optymalizacji zapytań i skutecznym zarządzaniu zasobami bazy danych. Zastosowanie takich technik jest standardem w branży, umożliwiając efektywne zarządzanie dużymi zbiorami danych oraz zwiększenie wydajności aplikacji poprzez ograniczenie liczby zwracanych wierszy do tych, które spełniają określone kryteria. Zrozumienie i umiejętność implementacji takich zapytań SQL to podstawowa umiejętność dla specjalistów IT pracujących z bazami danych.

Pytanie 25

Dla jakich nazwisk użyta w zapytaniu klauzula LIKE jest poprawna?

SELECT imie FROM mieszkancy WHERE imie LIKE '_r%';
A. Rafał, Rebeka, Renata, Roksana
B. Arleta, Krzysztof, Krystyna, Tristan
C. Krzysztof, Krystyna, Romuald
D. Gerald, Jarosław, Marek, Tamara
Prawidłowa odpowiedź Arleta Krzysztof Krystyna Tristan jest zgodna z klauzulą LIKE w języku SQL która pozwala na wyszukiwanie wzorców w danych tekstowych W zapytaniu użyto wzorca '_r%' gdzie podkreślenie oznacza dowolny pojedynczy znak a procent dowolną liczbę znaków W tym przypadku imiona muszą mieć 'r' jako drugi znak co jest spełnione dla Arleta Krzysztof Krystyna i Tristan Klauzula LIKE jest często używana w aplikacjach bazodanowych do filtrowania danych tekstowych na przykład w systemach zarządzania klientami gdzie można wyszukiwać nazwiska klientów zaczynające się na określoną literę Dobre praktyki zalecają ostrożne używanie wzorców które mogą prowadzić do pełnych skanów tabel co wpływa na wydajność Indeksowanie kolumn może poprawić szybkość zapytań LIKE jednak należy unikać wzorców zaczynających się od symbolu procenta gdyż pomijają indeksy Warto zrozumieć że LIKE jest potężnym narzędziem w SQL które może znacznie ułatwić pracę z tekstem jednak wymaga ono przemyślanego użycia by nie pogorszyć wydajności bazy danych

Pytanie 26

Co oznacza skrót SQL?

A. Sequential Question Language
B. Structured Query Language
C. Simple Query Logic
D. Standard Quality Language
SQL, czyli <em>Structured Query Language</em>, to bardzo istotny język w świecie baz danych. Pozwala na tworzenie, modyfikowanie i zarządzanie danymi w relacyjnych bazach danych. Język ten umożliwia użytkownikom definiowanie struktury bazy danych poprzez tworzenie tabel oraz określanie relacji między nimi. Ponadto, SQL jest kluczowy do manipulacji danymi, oferując szeroki wachlarz komend do selekcji, wstawiania, aktualizacji i usuwania danych. Dzięki SQL można także kontrolować dostęp do danych, definiując uprawnienia użytkowników. W praktyce, SQL jest używany w wielu narzędziach i systemach zarządzania bazami danych, takich jak MySQL, PostgreSQL, Microsoft SQL Server czy Oracle Database. Jego standaryzacja przez ANSI i ISO zapewnia, że podstawowe komendy są zrozumiałe i spójne w wielu systemach. Dla programistów i administratorów baz danych znajomość SQL jest kluczowa, ponieważ pozwala na efektywne zarządzanie i analizę danych, co jest podstawą w podejmowaniu decyzji biznesowych.

Pytanie 27

Które dane zostaną wybrane w wyniku działania kwerendy na przedstawionych rekordach?

SELECT id FROM samochody WHERE rocznik LIKE "2%4";
idmarkamodelrocznik
1FiatPunto2016
2FiatPunto2002
3FiatPunto2007
4OpelCorsa2016
5OpelAstra2003
6ToyotaCorolla2016
7ToyotaCorolla2014
8ToyotaYaris2004
A. Identyfikatory równe 7 oraz 8.
B. Brak danych.
C. Tylko identyfikator równy 8.
D. Wszystkie identyfikatory.
W analizowanej kwerendzie zastosowanie operatora LIKE z wzorcem '2%4' skutkuje koniecznością zrozumienia, jak działają operatory porównania w SQL. Odpowiedzi sugerujące puste dane lub zwracające wszystkie id są błędne, ponieważ nie uwzględniają specyfiki zastosowanego wzorca. Mówiąc o pustych danych, zakłada się, że żaden z rekordów nie spełniałby kryteriów, co jest fałszywe, gdyż odpowiednie rekordy istnieją. Z kolei odpowiedź dotycząca wszystkich id ignoruje kluczową funkcję operatora LIKE, który pozwala na filtrowanie danych na podstawie rozpoznawania wzorców, a nie zwracanie całości. Odpowiedzi wskazujące na konkretne id, takie jak 8 lub kombinacje 7 i 8, nie uwzględniają logicznego rozumienia, że kwerenda zwraca wyniki spełniające określone kryteria. Ważne jest, aby pamiętać, że w analizach SQL kluczowe jest zrozumienie, jak operatory wpływają na wyniki, co może być łatwo pominięte w przypadku niewłaściwej interpretacji syntaktycznej zapytania.

Pytanie 28

Która z funkcji SQL nie wymaga podania argumentów?

A. year
B. upper
C. len
D. now
Funkcje takie jak len(), year() oraz upper() są przykładami funkcji, które wymagają przynajmniej jednego argumentu, co czyni je nieodpowiednimi w kontekście pytania o funkcję bezargumentową. Funkcja len() jest używana do obliczania długości łańcucha znaków. Wymaga podania łańcucha jako argumentu, na przykład SELECT len('Przykład'); zwróci długość 9, co wskazuje na to, że len() jest funkcją, która nie może działać bez informacji o analizowanym łańcuchu. Funkcja year() jest z kolei używana do wyodrębnienia roku z daty. Przykład użycia to SELECT year('2023-10-01');, który zwróci 2023. Zatem, również ta funkcja potrzebuje daty jako argumentu, aby móc prawidłowo działać. Ostatnia z wymienionych funkcji, upper(), konwertuje wszystkie znaki w łańcuchu na wielkie litery. Aby to przeprowadzić, należy podać łańcuch jako argument, na przykład SELECT upper('tekst');, co zwróci 'TEKST'. Wobec tego, len(), year() oraz upper() są przykładami funkcji, które wymagają podania argumentów, co wyklucza je z kategorii funkcji bezargumentowych.

Pytanie 29

Jakie imiona spełniają warunki klauzuli LIKE w podanym zapytaniu?

SELECT imie FROM mieszkancy WHERE imie LIKE '_r%';
A. Arleta, Krzysztof, Krystyna, Tristan
B. Rafał, Rebeka, Renata, Roksana
C. Krzysztof, Krystyna, Romuald
D. Gerald, Jarosław, Marek, Tamara
No, więc ta odpowiedź jest totalnie na miejscu, bo klauzula LIKE w SQL służy do szukania ciągów, które pasują do jakiegoś wzoru. W tym przypadku wzór '_r%' mówi nam, że przed literą 'r' musi być dokładnie jeden dowolny znak, a po 'r' może być cokolwiek. Jak spojrzymy na imiona, które wybrałeś, 'Arleta' i 'Krzysztof' mają 'r' na drugiej pozycji, a 'Krystyna' i 'Tristan' na trzeciej. Czyli wszystko się zgadza. W ogóle, klauzula LIKE jest super przydatna w wyszukiwaniu danych, na przykład w aplikacjach, gdy chcemy znaleźć kogoś po imieniu czy nazwisku. A ten symbol '%' to genialny sposób na dopasowywanie, bo pozwala na różne kombinacje. Fajna sprawa, nie?

Pytanie 30

Utworzono bazę danych z tabelą mieszkancy, która zawiera pola: nazwisko, imie, miasto. Następnie zrealizowano poniższe zapytanie do bazy: ```SELECT nazwisko, imie FROM mieszkancy WHERE miasto='Poznań' UNION ALL SELECT nazwisko, imie FROM mieszkancy WHERE miasto='Kraków';``` Wskaź, które zapytanie zwróci te same dane.

A. ```SELECT nazwisko, imie FROM mieszkancy WHERE miasto BETWEEN 'Poznań' OR 'Kraków';```
B. ```SELECT nazwisko, imie FROM mieszkancy AS 'Poznań' OR 'Kraków';```
C. ```SELECT nazwisko, imie FROM mieszkancy WHERE miasto HAVING 'Poznań' OR 'Kraków';```
D. ```SELECT nazwisko, imie FROM mieszkancy WHERE miasto='Poznań' OR miasto='Kraków';```
Zapytanie SELECT nazwisko, imie FROM mieszkancy WHERE miasto='Poznań' OR miasto='Kraków'; jest poprawne, ponieważ umożliwia uzyskanie danych mieszkańców, którzy znajdują się w jednym z dwóch zadanych miast. Użycie operatora 'OR' pozwala na połączenie dwóch warunków, co sprawia, że zapytanie zwróci mieszkańców zarówno z Poznania, jak i z Krakowa. Takie podejście jest zgodne z zasadami SQL i umożliwia elastyczne filtrowanie danych. Alternatywnie, zastosowanie operatora UNION ALL w pierwszym zapytaniu łączy wyniki z dwóch oddzielnych zapytań, co jest również poprawne, ale może być mniej wydajne w przypadku dużych zbiorów danych. Używając UNION ALL, zwracane są wszystkie wiersze, w tym duplikaty, natomiast w przypadku zapytania z OR, uzyskujemy wiersze spełniające przynajmniej jeden z warunków. Dobrą praktyką jest testowanie zapytań w rzeczywistej bazie danych, aby ocenić ich wydajność i poprawność. W kontekście standardów SQL, takie zapytania są zgodne z definicjami języka zapytań i są stosowane do przetwarzania danych w relacyjnych bazach danych.

Pytanie 31

Dostępna jest tabela uczniowie, która zawiera pól id, imie, nazwisko, data_ur (format rrrr-mm-dd). Które zapytanie w SQL wyświetli tylko imiona oraz nazwiska uczniów urodzonych w roku 2001?

A. SELECT * FROM uczniowie WHERE data_ur like "2001"
B. SELECT imie, nazwisko FROM uczniowie WHERE data_ur like "2001-%-%"
C. SELECT id, imie, nazwisko, data_ur FROM uczniowie WHERE data_ur like "2001-*-*"
D. SELECT * FROM uczniowie WHERE data_ur == 2001-%-%
Wybrana odpowiedź jest prawidłowa, ponieważ wykorzystuje odpowiednią składnię SQL do wyszukania imion i nazwisk uczniów, których data urodzenia przypada na rok 2001. Użycie klauzuli 'LIKE' wraz z wzorcem '2001-%-%' jest kluczowe – znak '%' w SQL reprezentuje dowolny ciąg znaków (w tym również brak znaków). Oznacza to, że jakiekolwiek miesiące i dni mogą występować po roku '2001', co jest zgodne z formatem daty 'rrrr-mm-dd'. Tego typu zapytania są używane w praktycznych zastosowaniach w bazach danych, na przykład przy tworzeniu raportów dotyczących uczniów, którzy urodzili się w określonym roku. Umożliwia to efektywne zarządzanie danymi i przyspiesza proces analizy, co jest zgodne z dobrymi praktykami w zakresie przetwarzania danych. W kontekście SQL, selekcja konkretnych kolumn, takich jak 'imie' i 'nazwisko', jest bardziej efektywna niż pobieranie wszystkich danych, co może być istotne w przypadku większych zestawów danych. Warto również zwrócić uwagę na znaczenie odpowiedniego formatowania dat, co jest kluczowe dla poprawności zapytań do baz danych.

Pytanie 32

Na zakończenie dnia w systemie zarządzania magazynem sklepu spożywczego generowany jest raport, który przedstawia produkty oraz ich dostawców, dla których ilość na stanie jest mniejsza niż 10 sztuk. Do stworzenia tego raportu zastosowano kwerendę

A. UPDATE
B. INSERT INTO
C. SELECT
D. CHECK TABLE
Odpowiedź 'SELECT' jest poprawna, ponieważ to polecenie służy do pobierania danych z bazy danych. Kwerenda SELECT umożliwia zdefiniowanie, jakie kolumny oraz z jakich tabel chcemy wyświetlić. W kontekście raportu dla sklepu spożywczego, który wyświetla produkty z ich dostawcami, gdzie stan magazynowy jest mniejszy niż 10 sztuk, kwerenda SELECT pozwoli na precyzyjne określenie kryteriów wyszukiwania, takich jak nazwa produktu, nazwa dostawcy oraz warunek dotyczący stanu magazynowego. Przykładowa kwerenda mogłaby wyglądać następująco: 'SELECT product_name, supplier_name FROM inventory WHERE stock < 10'. W praktyce, stosowanie kwerend SELECT w raportach umożliwia monitorowanie stanów magazynowych, co jest kluczowe dla efektywnego zarządzania zapasami oraz podejmowania decyzji o zamówieniach. Takie podejście jest zgodne z dobrymi praktykami w zarządzaniu danymi w sklepach detalicznych, gdzie ciągłe monitorowanie stanu magazynowego jest kluczowe dla utrzymania płynności sprzedaży i zadowolenia klientów.

Pytanie 33

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. pierwotnym
B. sterującym
C. zagnieżdżonym
D. głównym
Odpowiedzi takie jak 'główny', 'pierwotny' czy 'zagnieżdżony' nie odpowiadają rzeczywistości funkcjonalnej formularzy w systemach baz danych. Formularz główny może być mylony z formularzem sterującym, jednakże jego funkcjonalność jest zazwyczaj ograniczona do wyświetlania danych w jednym kontekście, bez zapewnienia możliwości nawigacji między różnymi sekcjami bazy. Z kolei termin 'pierwotny' nie jest standardowym określeniem w kontekście formularzy; może prowadzić do nieporozumień związanych z terminologią baz danych, gdzie termin 'pierwotny klucz' zyskuje znaczenie w innej sferze. Formularz zagnieżdżony odnosi się do formularzy umieszczonych wewnątrz innych formularzy, co jest zupełnie inną koncepcją i nie ma związku z ogólną nawigacją po systemie. Typowe błędy myślowe, które prowadzą do takich odpowiedzi, obejmują mylenie różnych typów formularzy i ich funkcji. Użytkownicy powinni być świadomi, że prawidłowe nazewnictwo i zrozumienie kontekstu jest kluczowe w pracy z bazami danych, co może wpływać na efektywność działania oraz na jakość wytwarzanych aplikacji.

Pytanie 34

Jaką funkcję w języku PHP należy wykorzystać, aby nawiązać połączenie z bazą danych o nazwie zwierzaki?

A. $polacz = mysqli_connect('localhost', 'root','','zwierzaki');
B. $polacz = sql_connect('localhost', 'root','','zwierzaki');
C. $polacz = db_connect('localhost', 'root','','zwierzaki');
D. $polacz = server_connect('localhost', 'root','','zwierzaki');
Odpowiedź $polacz = mysqli_connect('localhost', 'root','','zwierzaki'); jest poprawna, ponieważ funkcja mysqli_connect jest standardowym sposobem nawiązywania połączenia z bazą danych MySQL w języku PHP. Funkcja ta jest częścią rozszerzenia MySQLi, które oferuje bardziej zaawansowane możliwości w porównaniu do oryginalnego rozszerzenia MySQL. Umożliwia obsługę złożonych zapytań i zabezpieczeń, a także wspiera techniki programowania obiektowego. Warto zauważyć, że przy wywołaniu tej funkcji przekazujemy cztery argumenty: adres serwera (w tym przypadku 'localhost'), nazwę użytkownika ('root'), hasło (które jest puste w tym przypadku), oraz nazwę bazy danych ('zwierzaki'). Praktyczne zastosowanie tej funkcji jest kluczowe w kontekście aplikacji webowych, gdzie interakcja z bazą danych jest niezbędna. Na przykład, po nawiązaniu połączenia możemy wykonywać zapytania SQL, pobierać dane, a także dodawać nowe rekordy. Warto również dodać, że przed użyciem tej funkcji, powinniśmy zawsze sprawdzić, czy rozszerzenie MySQLi jest zainstalowane i aktywne, co jest zgodne z dobrymi praktykami programistycznymi.

Pytanie 35

W systemie MySQL przyznanie roli o nazwie DBManager umożliwia użytkownikowi wykonywanie

A. wszystkie operacje związane z bazami danych oraz użytkownikami serwera
B. wszystkie operacje na bazach danych serwera
C. zakładanie użytkowników serwera oraz definiowanie ich haseł
D. nadzór nad serwerem
Wybór odpowiedzi, która sugeruje, że rola DBManager przyznaje prawa do monitorowania serwera, tworzenia użytkowników serwera oraz wykonywania wszystkich operacji na bazach danych i użytkownikach, może prowadzić do mylnych wniosków na temat rzeczywistych możliwości tej roli. Monitorowanie serwera jako funkcja nie jest bezpośrednio związane z rolą DBManager. Chociaż monitorowanie jest istotnym aspektem zarządzania bazami danych, odpowiednie uprawnienia związane z tą funkcjonalnością są przyznawane innym rolom lub użytkownikom posiadającym konkretne przywileje, takie jak rola DBMonitor. Tworzenie użytkowników serwera i ustawianie im haseł również wykracza poza standardowe uprawnienia roli DBManager. Zwykle te czynności są przypisane administratorom systemu, którzy mają kontrolę nad bezpieczeństwem całego środowiska bazodanowego. Odpowiedzi sugerujące możliwość wykonywania wszelkich operacji na bazach danych i użytkownikach mogą sugerować, że rola DBManager obejmuje pełne uprawnienia administracyjne, co nie jest zgodne z praktykami bezpieczeństwa, które zalecają ograniczanie uprawnień w oparciu o zasadę najmniejszych uprawnień. Takie zrozumienie jest kluczowe, ponieważ przyznawanie zbyt szerokich uprawnień może prowadzić do luk w zabezpieczeniach i nadużyć, co narusza standardy zarządzania danymi i bezpieczeństwa w organizacjach. Dlatego ważne jest, aby dokładnie rozumieć zakres dostępnych ról i ich odpowiedzialności, aby zapewnić właściwe zarządzanie dostępem i bezpieczeństwem danych.

Pytanie 36

Według którego pola tabeli zostały pogrupowane dane w przedstawionym raporcie?

Ilustracja do pytania
A. nazwa
B. rok
C. wynik
D. id_uczestnika
Poprawnie wskazano, że dane w raporcie zostały pogrupowane według pola „rok”. Widać to po tym, że poszczególne rekordy są zebrane w bloki oznaczone nagłówkami 2009, 2010, 2011, 2012, 2020, a dopiero pod każdym z tych lat pojawiają się konkretne konkursy, id_uczestnika i wynik. To jest właśnie klasyczny przykład grupowania danych w raporcie po jednym z pól tabeli – w tym przypadku po kolumnie roku. W praktyce, czy to w SQL, czy w kreatorach raportów (np. w MS Access, LibreOffice Base, Crystal Reports, narzędziach BI), gdy projektujemy raport, często definiujemy tzw. sekcję grupującą (group header) opartą na wybranym polu. Tutaj takim polem jest rok, więc każda zmiana wartości roku powoduje rozpoczęcie nowej grupy i wyświetlenie nagłówka z tą wartością. To poprawia czytelność i pozwala łatwo analizować dane w podziale na lata. Moim zdaniem warto zapamiętać, że grupowanie po dacie lub roku to jedna z najczęściej stosowanych praktyk raportowych: używa się tego do raportów sprzedaży w latach, statystyk odwiedzin strony WWW, wyników egzaminów itd. W SQL można by to od strony danych poprzedzić np. zapytaniem sortującym: SELECT * FROM konkursy ORDER BY rok, nazwa; a samo faktyczne grupowanie wizualne realizuje już mechanizm raportów. Dobrą praktyką jest też, żeby pole, po którym grupujemy, było najpierw użyte do sortowania – inaczej grupy mogą się „rozsypać” i raport stanie się nieczytelny.

Pytanie 37

Jaką funkcję agregującą można zastosować, aby uzyskać ilość rekordów?

A. AVG
B. NUMBER
C. SUM
D. COUNT
Funkcja agregująca COUNT jest używana w bazach danych do zwracania liczby rekordów spełniających określone kryteria. Jest to jedna z podstawowych funkcji agregujących, która pozwala na szybkie uzyskanie informacji o objętości danych w tabeli. Na przykład, w zapytaniu SQL, które ma na celu policzenie liczby wszystkich klientów w tabeli "klienci", możemy użyć: SELECT COUNT(*) FROM klienci. Zwróci to całkowitą liczbę rekordów. Funkcja COUNT może być również używana z warunkami, co pozwala na bardziej zaawansowane analizy, takie jak: SELECT COUNT(*) FROM klienci WHERE kraj = 'Polska', co policzy tylko tych klientów, którzy są z Polski. W praktyce, COUNT jest nieoceniony w raportowaniu i analizie danych, umożliwiając analitykom i programistom szybkie zrozumienie struktury danych. Dobra praktyka to zawsze stosować COUNT w kontekście grupowania danych przy użyciu klauzuli GROUP BY, co pozwala na uzyskanie liczby rekordów w poszczególnych grupach.

Pytanie 38

W firmowej tabeli znajdują się kolumny: nazwa, adres, NIP, obrót (obrót w ostatnim miesiącu), rozliczenie oraz status. Po wykonaniu kwerendy SQL

SELECT nazwa, NIP FROM firmy WHERE obrot < 4000;
na ekranie pojawią się:
A. tylko nazwa oraz numer NIP firm, które w ostatnim miesiącu miały obrót mniejszy niż 4000 zł
B. tylko nazwa oraz numer NIP firm, które w ostatnim miesiącu miały obrót co najmniej 4000 zł
C. wszystkie informacje o firmach, które w ostatnim miesiącu miały obrót poniżej 4000 zł
D. wszystkie informacje o firmach, które w ostatnim miesiącu uzyskały obrót co najmniej 4000 zł
W tej kwerendzie SQL chodziło o to, aby zrozumieć, że zapytanie 'SELECT nazwa, NIP FROM firmy WHERE obrót < 4000;' zwróci tylko nazwy firm i ich numery NIP. Tylko te firmy, co miały obrót poniżej 4000 zł w ostatnim miesiącu. SQL jako język zapytań daje nam możliwość wybierania konkretnych kolumn z tabeli i filtrowania wyników według różnych warunków. Tu wybraliśmy kolumny 'nazwa' i 'NIP', a filtr 'WHERE obrót < 4000' pokazuje nam tylko te firmy, które spełniają ten warunek. To bardzo ważne w praktycznym użyciu SQL, bo często musimy wyświetlać dane według określonych kryteriów. Dzięki temu zapytaniu łatwo możemy zidentyfikować firmy, które mogą potrzebować wsparcia finansowego lub jakiejś pomocy z powodu niskiego obrotu.

Pytanie 39

Wskaż zapytanie, w którym dane zostały uporządkowane.

A. SELECT DISTINCT produkt, cena FROM artykuly;
B. SELECT imie, nazwisko FROM mieszkancy WHERE wiek > 18 ORDER BY wiek;
C. SELECT nazwisko FROM firma WHERE pensja > 2000 LIMIT 10;
D. SELECT AVG(ocena) FROM uczniowie WHERE klasa = 2;
Odpowiedź SELECT imie, nazwisko FROM mieszkancy WHERE wiek > 18 ORDER BY wiek jest poprawna, ponieważ zawiera klauzulę ORDER BY, która jest używana do sortowania wyników zapytania w SQL. W tym przypadku, dane są sortowane według wieku mieszkańców, co pozwala na łatwe zrozumienie rozkładu wiekowego w tej grupie. Klauzula ORDER BY jest standardowym elementem SQL, który może sortować wyniki w porządku rosnącym (ASC) lub malejącym (DESC). Przykładowe zastosowanie to raporty, w których użytkownik chce zobaczyć dane uporządkowane według konkretnego kryterium, np. wiek, cena, data. Dobre praktyki sugerują, aby zawsze jasno definiować, które kolumny mają być używane do sortowania, a także zrozumieć, że sortowanie wpływa na wydajność zapytań, zwłaszcza przy dużych zbiorach danych. W przypadku bardziej złożonych zapytań można także łączyć klauzulę ORDER BY z innymi klauzulami, takimi jak GROUP BY, co zwiększa elastyczność w analizie danych.

Pytanie 40

W instrukcji CREATE TABLE w SQL atrybut wskazujący, która kolumna w tabeli pełni rolę klucza podstawowego, to

A. UNIQUE
B. MAIN KEY
C. PRIMARY KEY
D. IDENTITY FIELD
Odpowiedź 'PRIMARY KEY' jest poprawna, ponieważ w poleceniu CREATE TABLE w SQL, klucz podstawowy jest definiowany właśnie za pomocą tego atrybutu. Klucz podstawowy to unikalny identyfikator dla każdej wiersza w tabeli, co oznacza, że wartość w tej kolumnie musi być unikalna i nie może być pusta. Definiowanie klucza podstawowego jest kluczowe dla zapewnienia integralności danych oraz efektywności operacji na bazie danych, ponieważ umożliwia szybkie wyszukiwanie i sortowanie. Na przykład, jeśli tworzysz tabelę 'Użytkownicy', możesz zdefiniować kolumnę 'UserID' jako klucz podstawowy, co zagwarantuje, że każdy użytkownik ma unikalny identyfikator. Warto również pamiętać, że w praktyce, jeśli nie określisz klucza podstawowego, baza danych nie będzie mogła zapewnić unikalności w tabeli, co może prowadzić do problemów z danymi. Zgodnie z dobrymi praktykami, klucz podstawowy powinien być stabilny oraz niezmienny, co oznacza, że nie powinno się go zmieniać po jego utworzeniu.