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: 10 kwietnia 2026 09:54
  • Data zakończenia: 10 kwietnia 2026 09:55

Egzamin niezdany

Wynik: 10/40 punktów (25,0%)

Wymagane minimum: 20 punktów (50%)

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

Fragment kodu SQL wskazuje, że klucz obcy

Ilustracja do pytania
A. stanowi odniesienie do siebie samego
B. jest obecny w tabeli obiekty
C. wiąże się z kolumną imiona
D. jest ustawiony na kolumnie obiekty
W przedstawionym fragmencie kodu SQL klucz obcy (foreign key) służy do zapewnienia integralności referencyjnej między dwiema tabelami. W tym przypadku klucz obcy wskazuje, że pole imie w jednej tabeli jest powiązane z polem imiona w tabeli obiekty. Takie podejście pomaga w utrzymaniu spójności danych, ponieważ wymusza istnienie każdej wartości w polu imie w kolumnie imiona tabeli obiekty. W praktyce oznacza to, że nie można dodać wartości do pola imie, jeśli nie istnieje odpowiadająca wartość w kolumnie imiona. Klucze obce są kluczowym elementem w projektowaniu baz danych, wspierając normalizację i redukcję redundancji danych. Prawidłowe wykorzystanie kluczy obcych pozwala na efektywne zarządzanie relacjami pomiędzy danymi, co jest zgodne z najlepszymi praktykami w zakresie projektowania baz danych. Dodatkowo, prawidłowe stosowanie kluczy obcych przyczynia się do poprawy wydajności zapytań, ponieważ umożliwia optymalizację operacji łączenia danych. To podejście jest zgodne ze standardami SQL, a jego zastosowanie jest powszechne w różnych systemach zarządzania bazami danych jak MySQL, PostgreSQL czy Oracle.

Pytanie 2

Normalizacja tabel to proces, którego celem jest

A. wizualizacja bazy
B. dodanie danych do bazy
C. wyłącznie stworzenie tabel oraz relacji w bazie
D. sprawdzenie i optymalizację bazy danych
Podejście, które koncentruje się na dodawaniu rekordów do bazy, błędnie interpretuje cel normalizacji. W rzeczywistości, normalizacja nie dotyczy bezpośrednio procesu wprowadzania nowych danych, ale raczej organizacji i struktury istniejących danych. Wiele osób myli normalizację z innymi operacjami związanymi z bazami danych, co może prowadzić do nieporozumień. Przedstawienie graficzne bazy danych również nie jest celem normalizacji. Choć wizualizacja relacji między tabelami jest istotna, to nie jest to sedno normalizacji. Kolejnym powszechnym błędem jest przekonanie, że normalizacja ogranicza się jedynie do tworzenia tabel i relacji. W rzeczywistości, prawdziwym celem normalizacji jest zminimalizowanie redundancji oraz poprawa integralności danych, co jest osiągane poprzez szereg kroków, takich jak eliminowanie zależności funkcyjnych. Dodatkowo, nie jest to proces jedynie techniczny; wymaga również zrozumienia kontekstu biznesowego i specyfikacji wymagań, aby skutecznie zorganizować dane. Ostatecznie, zrozumienie podstaw normalizacji pozwala uniknąć typowych pułapek w projektowaniu baz danych, takich jak nieefektywne zapytania czy niespójności w danych.

Pytanie 3

Które z poniższych twierdzeń na temat języków programowania jest FAŁSZYWE?

A. PHP jest językiem do tworzenia stron w czasie rzeczywistym
B. JavaScript jest językiem skryptowym
C. SQL jest językiem programowania strukturalnego
D. C++ jest językiem obiektowym
C++ jest językiem obiektowym, co oznacza, że wspiera programowanie obiektowe, umożliwiając tworzenie klas i obiektów, co jest przydatne w przypadku dużych systemów, gdzie kod musi być modularny i łatwy do zarządzania. PHP jest często używany do tworzenia dynamicznych stron internetowych, co oznacza, że może generować treści w czasie rzeczywistym, w oparciu o interakcje użytkownika. Jednak, chociaż PHP jest doskonałym narzędziem do tworzenia aplikacji webowych, nie można go uznać za „język do tworzenia stron w czasie rzeczywistym” w sensie, że nie jest on jedynym językiem odpowiedzialnym za tę funkcjonalność. JavaScript, z drugiej strony, to język skryptowy, który działa w przeglądarkach internetowych, pozwalając na interaktywność i dynamiczne zmiany na stronach bez konieczności przeładowywania ich. Wiele osób myli terminy związane z językami programowania, co prowadzi do nieprawidłowych wniosków. Kluczowym błędem jest myślenie, że język programowania posiada jedną, niezmienną rolę. W rzeczywistości wiele języków może być używanych w różnych kontekstach, a ich zastosowanie zależy od środowiska i celów projektu. Zrozumienie tych różnic oraz wykorzystanie odpowiednich narzędzi są kluczowe dla efektywnego programowania i rozwoju aplikacji.

Pytanie 4

Rekordy do raportu mogą pochodzić z

A. tabeli
B. makropolecenia
C. innego raportu
D. zapytania INSERT INTO
Wybór innego raportu jako źródła danych może wydawać się logiczny na pierwszy rzut oka, jednak w rzeczywistości, raporty są zazwyczaj wynikiem analizy danych już zgromadzonych w bazach danych, a nie bezpośrednim źródłem tych danych. Raport oparty na innym raporcie może prowadzić do niepotrzebnej złożoności oraz braku przejrzystości w dostępie do danych. Ponadto użycie makropolecenia jako źródła do generowania raportu jest niewłaściwe, ponieważ makropolecenia są narzędziami do automatyzacji zadań, a nie strukturami danych. W kontekście zapytania 'INSERT INTO', należy zauważyć, że jest to instrukcja służąca do dodawania nowych rekordów do tabeli, a nie do pobierania danych. Wybranie takiego podejścia mogłoby wprowadzić w błąd, ponieważ nie odzwierciedla rzeczywistego procesu raportowania, który wymaga analizy istniejących danych. Często błędy myślenia w tym kontekście wynikają z pomylenia celów automatyzacji z celami analizy danych. Poprawne zrozumienie roli tabel w bazach danych pozwala na wydajne raportowanie i podejmowanie decyzji na podstawie rzeczywistych i aktualnych informacji.

Pytanie 5

Poniższy fragment kodu PHP funkcjonuje poprawnie i ma na celu wyświetlenie na stronie internetowej informacji pobranych kwerendą z bazy danych. Ile pól zostanie wyświetlonych na stronie?

$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
Wybranie niepoprawnych odpowiedzi, takich jak 'z jednego pola' czy 'z dwóch pól', może wynikać z niepoprawnego zrozumienia struktury danych zwracanych przez funkcję mysqli_fetch_row. Odpowiedzi te sugerują, że użytkownik może nie dostrzegać, że funkcja ta zwraca wszystkie kolumny z wiersza jako elementy tablicy, co ma kluczowe znaczenie w kontekście przetwarzania wyników zapytań. Odpowiedzi wskazujące na jedno lub dwa pola mogą prowadzić do błędnych wniosków, ponieważ ignorują one pełny zakres danych, które są dostępne w każdym wierszu. W praktyce, często umieszcza się w bazie danych więcej informacji, a każda kolumna odpowiada innemu atrybutowi obiektu, na przykład klienta. Dlatego jeśli zapytanie SQL zwraca trzy kolumny, to oczekiwanym wynikiem powinno być właśnie wyświetlenie tych trzech, co podkreśla istotność precyzyjnego formułowania zapytań i poprawnego odczytywania wyników. Zrozumienie struktury danych jest kluczowe dla poprawnego odczytu wyników i ich późniejszego wykorzystania, co potwierdzają standardy związane z programowaniem w PHP oraz obsługą baz danych.

Pytanie 6

Na tabeli muzyka, przedstawionej na rysunku, zostało wykonane następujące zapytanie SQL. Jaki wynik zwróci ta kwerenda?

SELECT wykonawca FROM `muzyka` WHERE wykonawca LIKE 'C%w';
IDtytul_plytywykonawcarok_nagraniaopis
1Czas jak rzekaCzeslaw Niemen2005Przyjdz W Taka Noc itd.
2IkonaStan Borys2014
3AerolitCzeslaw Niemen2017Winylowa reedycja płyty „Aerolit”.
4JourneyMikolaj Czechowski2013
A. Czeslaw, Czechowski
B. pusty wynik
C. Czeslaw
D. Czeslaw, Niemen
Niepoprawna odpowiedź wynika ze złego zrozumienia, jak działa operator LIKE w zapytaniach SQL. Operator LIKE jest używany do porównania wartości z określonym wzorcem. W naszym przypadku, wzorzec to 'C%w', gdzie '%' oznacza dowolne zero lub więcej znaków. Czyli szukamy wykonawców, których nazwy zaczynają się na 'C' i kończą na 'w'. Błędne odpowiedzi sugerują, że niezrozumienie polega na tym, że '%w' miałoby oznaczać 'wszystkie nazwy kończące się na w', co nie jest prawdą. W rzeczywistości, '%w' oznacza 'dowolne znaki, po których następuje litera w'. Dlatego, żadne z podanych wykonawców nie spełnia tego kryterium, a wynik zapytania jest pusty. To ważne, aby zrozumieć, jak działają wzorce w SQL, gdyż są one bardzo użyteczne przy wyszukiwaniu danych w bazie.

Pytanie 7

W SQL komenda ALTER TABLE ma na celu

A. dodanie tabeli do bazy danych
B. zmianę kolumn w tabeli
C. zmianę danych rekordów w tabeli
D. usunięcie tabeli z bazy danych
Polecenie ALTER TABLE w języku SQL jest kluczowym narzędziem do modyfikacji struktury istniejących tabel w bazie danych. Umożliwia ono dodawanie, usuwanie lub modyfikowanie kolumn oraz zmianę właściwości istniejących kolumn, takich jak typ danych, domyślne wartości czy ograniczenia. Przykładem użycia polecenia ALTER TABLE może być dodawanie nowej kolumny do tabeli: 'ALTER TABLE nazwa_tabeli ADD nowa_kolumna VARCHAR(255);', co dodaje kolumnę o nazwie 'nowa_kolumna' z typem danych VARCHAR i maksymalną długością 255 znaków. Można również usunąć kolumnę, używając składni: 'ALTER TABLE nazwa_tabeli DROP COLUMN kolumna;'. Ważnym aspektem jest to, że zmiany wprowadzone przez ALTER TABLE są natychmiastowe i dotyczą wszystkich przyszłych operacji na tabeli. Standard SQL definiuje to polecenie jako część DDL (Data Definition Language), co oznacza, że zmienia strukturę bazy danych, a nie dane same w sobie. Warto pamiętać o tym, że operacje te mogą powodować blokady tabel i wpływać na wydajność, zwłaszcza w przypadku dużych zbiorów danych.

Pytanie 8

Jakie jest zadanie funkcji agregującej AVG w zapytaniu?

SELECT AVG(cena) FROM uslugi;
A. obliczyć średnią arytmetyczną wartości wszystkich usług
B. zliczyć całkowity koszt wszystkich usług
C. określić najwyższą wartość spośród cen usług
D. sprawdzić, ile usług znajduje się w tabeli
W kontekście analizy danych użycie niepoprawnej funkcji agregującej w SQL może prowadzić do błędnych wniosków. Funkcja AVG jest przeznaczona do obliczania średniej arytmetycznej wartości z wybranej kolumny a nie do innych operacji takich jak zsumowanie wartości czy liczenie rekordów. Częstym błędem jest mylenie AVG z funkcją SUM która służy do zsumowania wszystkich wartości w kolumnie co jest przydatne gdy potrzebujemy całkowitej wartości np. całkowitego przychodu z usług. Natomiast jeśli chodzi o policzenie liczby dostępnych usług powinniśmy używać funkcji COUNT która zwraca liczbę wierszy w kolumnie co jest istotne w analizach ilościowych. Kolejny błąd to przypisywanie AVG zadania wskazania najwyższej wartości co jest domeną funkcji MAX. Zrozumienie różnicy między tymi funkcjami jest kluczowe dla poprawnej analizy danych w SQL. Funkcje AVG SUM COUNT i MAX mają swoje specyficzne zastosowania i ich poprawne użycie jest standardem w pracy z bazami danych. Unikanie takich błędów wymaga praktyki i zrozumienia teoretycznych podstaw działania funkcji agregujących co jest niezbędne w profesjonalnym zarządzaniu danymi.

Pytanie 9

W systemie baz danych sklepu komputerowego znajduje się tabela o nazwie komputery. Aby stworzyć raport, który wyświetli dane dla konkretnego zestawu informacji z tej tabeli, zawierający tylko te komputery, które mają co najmniej 8 GB pamięci RAM oraz procesor Intel, można wykorzystać zapytanie:

A. SELECT * FROM komputery WHERE procesor= 'Intel' OR pamiec>=8
B. SELECT * FROM komputery WHERE procesor= 'Intel' AND pamiec<8
C. SELECT * FROM komputery WHERE procesor= 'Intel' OR pamiec<8
D. SELECT * FROM komputery WHERE procesor= 'Intel' AND pamiec>=8
Pierwsza z niepoprawnych odpowiedzi wykorzystuje operator 'OR' w połączeniu z warunkiem 'pamiec<8', co jest niewłaściwe, ponieważ pozwala na zwrócenie komputerów, które mają procesor Intel, ale pamięć RAM mniejszą niż 8 GB. To nie spełnia wymagań dotyczących minimalnej pamięci. Druga odpowiedź również błędnie używa operatora 'OR', co pozwala na zwrócenie komputerów z procesorem Intel, które mogą mieć pamięć większą lub równą 8 GB, ale także te, które nie mają procesora Intel, ale ich pamięć RAM jest mniejsza niż 8 GB. To narusza zasadę, że obydwa warunki muszą być jednocześnie spełnione, co prowadzi do nieprawidłowych wyników. Ostatnia niepoprawna odpowiedź wykorzystuje operator 'AND', jednak warunek dotyczący pamięci jest błędny, ponieważ odnosi się do pamięci mniejszej niż 8 GB, co jest sprzeczne z wymaganiami. Każda z tych odpowiedzi wprowadza w błąd, ponieważ nie spełniają one kryteriów, które zostały jasno określone w pytaniu, co może prowadzić do nieefektywnego zarządzania danymi w bazie i błędnych analiz.

Pytanie 10

Celem testów wydajnościowych jest ocena

A. stopnia, w jakim system lub moduł spełnia wymagania dotyczące wydajności
B. zdolności programu do funkcjonowania w sytuacjach, gdy sprzęt działa niepoprawnie
C. ciągu zdarzeń, w którym prawdopodobieństwo danego zdarzenia zależy tylko od wyniku zdarzenia wcześniejszego
D. zdolności programu do funkcjonowania w sytuacjach, gdy system działa niepoprawnie
Testy wydajnościowe są kluczowym elementem procesu zapewnienia jakości oprogramowania, mającym na celu ocenę zdolności systemu lub modułu do spełnienia określonych wymagań wydajnościowych. Ich głównym celem jest zmierzenie, jak system radzi sobie w warunkach obciążenia, a także w różnych scenariuszach użytkowania. W ramach testów wydajnościowych analizuje się takie parametry jak czas reakcji, przepustowość oraz zasoby zużywane przez aplikację. Praktycznym przykładem może być testowanie aplikacji internetowej w warunkach, gdy korzysta z niej wielu użytkowników jednocześnie, co pozwala ocenić, jak skaluje się system. W kontekście standardów, organizacje często odnoszą się do metodologii takich jak Performance Testing Framework, a także do narzędzi jak JMeter czy LoadRunner, które umożliwiają automatyzację procesu testowania. Testy te pomagają w identyfikacji wąskich gardeł, które mogą wpływać na wydajność, co przekłada się na lepsze doświadczenia użytkowników oraz minimalizację kosztów związanych z utrzymaniem systemu.

Pytanie 11

Na przedstawionym diagramie ER zapis FK1 oznacza

Ilustracja do pytania
A. klucz obcy.
B. relację 1:N.
C. relację 1:1.
D. klucz podstawowy.
Na diagramach ER oznaczenia typu FK1 zwykle odnoszą się do kluczy obcych, a nie do samej relacji ani do kluczy podstawowych. Łatwo się tu pomylić, bo obok tego symbolu widać też graficzne oznaczenie relacji 1:N między tabelami Klienci i Zamówienia, więc część osób automatycznie kojarzy podpis z typem połączenia. Tymczasem relacja 1:1 czy 1:N jest przedstawiana linią i odpowiednimi znacznikami przy końcach (kreska, „gałązki”, kółko), natomiast skróty PK i FK pojawiają się wewnątrz tabel i opisują role konkretnych kolumn. PK to primary key, czyli klucz podstawowy – unikalny identyfikator w danej tabeli. Na diagramie widać go przy NR_klienta w tabeli Klienci oraz przy ID_Zamówienia w tabeli Zamówienia. Oznaczenie FK1 przy NR_klienta w tabeli Zamówienia nie może więc oznaczać kolejnego klucza podstawowego ani samej relacji, tylko właśnie klucz obcy, który wskazuje na PK w innej tabeli. Częsty błąd polega na mieszaniu pojęć „relacja 1:N” z „kluczem obcym”. Relacja 1:N jest pojęciem konceptualnym: mówi, że jeden klient może mieć wiele zamówień. Klucz obcy to implementacja tej relacji w fizycznym modelu bazy: konkretna kolumna, która przechowuje wartość klucza podstawowego z drugiej tabeli. Innymi słowy, FK jest narzędziem, a 1:N opisem zależności. Kiedy ktoś interpretuje FK1 jako relację 1:1 albo 1:N, miesza warstwę symboliki linii z opisem kolumn. Dobra praktyka w projektowaniu baz danych i w narzędziach CASE jest taka, że PK i FK stoją zawsze przy nazwach atrybutów, a typ relacji rozczytujemy z grafiki między encjami, nie z tych skrótów. Zrozumienie tej różnicy jest kluczowe, bo potem w SQL dokładnie tak samo rozdzielamy definicję struktury tabel (PRIMARY KEY, FOREIGN KEY) od logicznej interpretacji, ile rekordów może być po każdej stronie relacji.

Pytanie 12

Jakie zapytanie SQL dotyczące tabeli pracownicy, której struktura to: id, imie, nazwisko, plec, zarobek, pozwoli na osobne obliczenie średniego wynagrodzenia kobiet oraz średniego wynagrodzenia mężczyzn?

A. SELECT AVG(zarobek) FROM pracownicy GROUP BY plec HAVING plec='k' AND plec='m'
B. SELECT AVG(zarobek) FROM pracownicy AS sredni_zarobek
C. SELECT AVG(zarobek) FROM pracownicy GROUP BY plec
D. SELECT AVG(zarobek) FROM pracownicy WHERE plec='k' AND plec='m'
Pierwsza opcja nie jest poprawna, ponieważ nie oblicza średnich zarobków osobno dla każdej płci, lecz zwraca jedną średnią, jeśli w tabeli są pracownicy różnych płci. Kolejne zapytanie, które wykorzystuje alias, jest błędne, ponieważ użycie 'AS sredni_zarobek' nie wprowadza żadnej funkcjonalności do obliczania średni dla płci. Nie definiuje ono kontekstu grupowania danych, przez co zwróci jedną wartość, a nie różne średnie dla każdej płci. Następnie, zapytanie z warunkiem WHERE plec='k' AND plec='m' jest całkowicie niepoprawne, ponieważ nie można, aby jedna wartość plec jednocześnie była równa 'k' i 'm'. Takie zapytanie nic nie zwróci, ponieważ nie znajdzie żadnych wierszy spełniających ten warunek. Ostatnia odpowiedź z GROUP BY plec HAVING plec='k' AND plec='m' również zawiera błędne założenia. Klauzula HAVING służy do filtrowania grup, ale podobnie jak w poprzednich przypadkach warunek 'plec='k' AND plec='m'' nie ma sensu, ponieważ nie można grupować wyników w ten sposób. Dlatego wszystkie te zapytania nie osiągną celu związanego z obliczeniem średnich zarobków osobno dla kobiet i mężczyzn.

Pytanie 13

W języku SQL, w wyniku wykonania poniższego zapytania:

ALTER TABLE osoba DROP COLUMN grupa;
A. zostanie zmieniona nazwa kolumny na grupa
B. zostanie dodana kolumna grupa
C. zostanie usunięta kolumna grupa
D. zostanie zmieniona nazwa tabeli na grupa
Pierwsza odpowiedź sugeruje, że kolumna 'grupa' zostanie dodana do tabeli, co jest błędne, ponieważ użycie słowa 'DROP' sugeruje usunięcie, a nie dodanie. W SQL do dodawania kolumn używa się komendy 'ADD', a nie 'DROP'. Druga odpowiedź, która stwierdza, że kolumna zostanie usunięta, jest poprawna, ale nie są podane inne aspekty jej działania. Trzecia odpowiedź dotyczy zmiany nazwy tabeli na 'grupa', co również jest niepoprawne, ponieważ komenda 'ALTER TABLE' z 'DROP COLUMN' nie ma na celu zmiany nazwy tabeli, lecz jedynie modyfikację jej struktury poprzez usunięcie kolumny. Zmiana nazwy tabeli wymagałaby użycia komendy 'RENAME'. Ostatnia odpowiedź, która mówi, że zmienia nazwę kolumny na 'grupa', jest również fałszywa, ponieważ do zmiany nazwy kolumny w SQL używa się komendy 'ALTER COLUMN' z 'RENAME', a nie 'DROP'. Tak więc, wszystkie te odpowiedzi zawierają błędne interpretacje dotyczące funkcji komendy 'ALTER TABLE DROP COLUMN', a zrozumienie tej komendy jest kluczowe dla prawidłowego zarządzania strukturą bazy danych.

Pytanie 14

W sklepie internetowym wykorzystuje się tabelę faktura. W trakcie generowania faktury pole dataPlatnosci nie zawsze jest uzupełnione. Aby to skorygować, pod koniec dnia należy wprowadzić bieżącą datę do wierszy, gdzie to pole jest puste. W tym celu można wykorzystać kwerendę

A. UPDATE faktury SET dataPlatnosci=CURTIME() WHERE dataPlatnosci IS NOT NULL
B. UPDATE faktury SET dataPlatnosci=CURDATE() WHERE dataplatnosci = '0000-00-00'
C. UPDATE faktury SET dataPlatnosci=CURTIME() WHERE id = 3
D. UPDATE faktury SET dataPlatnosci=CURDATE() WHERE dataPlatnosci IS NULL
Niepoprawne odpowiedzi zawierają różne koncepcje, które prowadzą do błędnych wniosków. W pierwszej z nich zastosowano 'UPDATE faktury SET dataPlatnosci=CURTIME() WHERE id = 3;', co jest niewłaściwe, ponieważ ta kwerenda aktualizuje tylko jedną fakturę o identyfikatorze 3 i używa CURTIME(), co zwraca czas, a nie datę. W rezultacie, pole 'dataPlatnosci' pozostanie puste dla większości faktur. W innej odpowiedzi znalazła się kwerenda 'UPDATE faktury SET dataPlatnosci=CURTIME() WHERE dataPlatnosci IS NOT NULL;', co jest sprzeczne z założeniem, że aktualizować powinno się tylko te wpisy, gdzie pole jest puste. Kwerenda ta mogłaby zaktualizować datę tylko dla wierszy, które już zawierają datę płatności, co nie ma sensu. Ostatnia odpowiedź 'UPDATE faktury SET dataPlatnosci=CURDATE() WHERE dataplatnosci = '0000-00-00';' również nie jest skuteczna, ponieważ nie uwzględnia sytuacji, gdy pole 'dataPlatnosci' jest NULL. Zastosowanie wartości '0000-00-00' nie jest standardem w bazach danych, a operacje na takich wartościach mogą prowadzić do niejednoznaczności oraz problemów z integralnością danych. W kontekście programowania baz danych, istotne jest, aby stosować się do standardów, które umożliwiają zachowanie spójności i poprawności danych. Kwestie takie jak brak wartości NULL w kolumnach powinny być rozwiązywane w sposób systematyczny, aby uniknąć problemów w przyszłości.

Pytanie 15

Jaki typ danych w MySQL należy zastosować, aby w jednym polu zapisać zarówno datę, jak i czas?

A. YEAR
B. TIMESTAMP
C. DATE
D. BOOLEAN
Odpowiedzi DATE, YEAR i BOOLEAN są niewłaściwe w kontekście przechowywania zarówno daty, jak i czasu w bazie danych MySQL. DATE jest typem danych, który przechowuje tylko datę, bez informacji o godzinie. Użycie DATE oznaczałoby utratę ważnych informacji o czasie, co może być istotne w wielu aplikacjach, na przykład w systemach rejestracji zdarzeń. YEAR, z kolei, jest ograniczonym typem danych, który służy jedynie do przechowywania roku. Oznacza to, że nie może być użyty do rejestrowania pełnej daty ani czasu, co jest niewystarczające w przypadku wielu praktycznych zastosowań. BOOLEAN to typ danych, który przechowuje jedynie wartości logiczne (prawda/fałsz) i nie ma zastosowania w kontekście daty i czasu. Typowe błędy myślowe, które mogą prowadzić do wyboru niewłaściwych typów danych, obejmują myślenie, że daty i czasy można zrealizować oddzielnie, co w praktyce może prowadzić do problemów z synchronizacją i zarządzaniem danymi. Właściwe rozumienie dostępnych typów danych w MySQL jest kluczowe dla efektywnego projektowania baz danych i zapewnienia ich integralności.

Pytanie 16

W systemie MySQL trzeba użyć polecenia REVOKE, aby użytkownikowi anna cofnąć możliwość wprowadzania zmian jedynie w definicji struktury bazy danych. Odpowiednia komenda do odebrania tych uprawnień ma postać

A. REVOKE CREATE ALTER DROP ON tabela1 FROM 'anna'@'localhost'
B. REVOKE ALL ON tabela1 FROM 'anna'@'locaihost'
C. REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'
D. REVOKE CREATE INSERT DELETE ON tabela1 FROM 'anna'@'localhost'
W analizie odpowiedzi, które są niepoprawne, kluczowe jest zrozumienie, jakie uprawnienia są odbierane i dlaczego to ma znaczenie. Odpowiedzi takie jak 'REVOKE ALL ON tabela1 FROM 'anna'@'localhost'' są niewłaściwe, ponieważ polecenie REVOKE ALL odbiera wszystkie prawa użytkownikowi, co może być zbyt drastycznym krokiem. W kontekście zarządzania uprawnieniami, ważne jest, aby podejść do tego z miarą i precyzją, a nie stosować ogólne odbieranie wszystkich praw. Ponadto, odpowiedzi, które obejmują niewłaściwe kombinacje uprawnień, takie jak 'REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'', są również błędne. Odbieranie prawa UPDATE nie jest zgodne z celem pytania, które dotyczy jedynie strukturalnych zmian, a nie wprowadzania danych. Właściwe podejście do konfiguracji uprawnień powinno koncentrować się na ograniczaniu dostępu użytkowników tylko tam, gdzie jest to absolutnie konieczne, a nie na eliminacji ich zdolności do pracy z danymi w ogóle. Użytkownicy często popełniają błąd myślowy, myśląc, że odebranie zbyt wielu uprawnień jest rozwiązaniem problemu bezpieczeństwa, podczas gdy w rzeczywistości może to prowadzić do zablokowania niezbędnych operacji, co zagraża efektywności pracy organizacji.

Pytanie 17

W SQL, aby utworzyć tabelę, konieczne jest użycie polecenia

A. CREATE TABLE
B. ALTER TABLE
C. INSERT TABLE
D. ADD TABLE
Wybranie innych odpowiedzi jest nietrafione, bo polecenia ADD TABLE, ALTER TABLE i INSERT TABLE nie są odpowiednie do tworzenia nowych tabel. ADD TABLE w ogóle nie istnieje w SQL, bo to słowo jest używane, jak chcesz zmienić coś w już istniejącej tabeli, a nie tworzyć nową. ALTER TABLE też służy do zmian w strukturze tabeli, czy dodawania kolumn, więc nie pasuje tutaj. A INSERT TABLE? To też nie działa, bo polecenie INSERT dodaje dane do tabel, które już są. Nieznajomość tych komend to prosta droga do błędów w projektowaniu baz danych. Każde z tych poleceń ma swoje miejsce, dlatego warto je znać i umieć rozróżniać.

Pytanie 18

W języku SQL, jaki będzie efekt wykonania poniższego zapytania?

ALTER TABLE osoba DROP COLUMN grupa;
A. Zmieniona zostanie nazwa tabeli na grupa.
B. Dodana zostanie kolumna grupa.
C. Usunięta zostanie kolumna grupa.
D. Zmieniona zostanie nazwa kolumny na grupa.
Wybrana odpowiedź jest niepoprawna, ale nie martw się, to jest okazja do nauki. Zapytanie SQL w pytaniu nie dotyczyło zmiany nazwy tabeli ani kolumny, a także nie dotyczyło dodawania nowej kolumny. W języku SQL do zmiany nazwy tabeli używamy zapytania 'RENAME', natomiast do zmiany nazwy kolumny używamy 'ALTER TABLE' z dodatkiem 'RENAME COLUMN'. Dodawanie nowej kolumny wymaga natomiast użycia 'ALTER TABLE' z dodatkiem 'ADD COLUMN'. Wszystkie te operacje są ważne i niezbędne w różnych scenariuszach pracy z bazą danych. Jednak w tym przypadku mieliśmy do czynienia z instrukcją 'ALTER TABLE' z dodatkiem 'DROP COLUMN', które służy do usunięcia kolumny. Pamiętaj, że każde z tych zapytań ma inne skutki i odpowiednie zastosowania, więc ważne jest dokładne zrozumienie różnic między nimi.

Pytanie 19

W przedstawionym kodzie PHP w miejscu kropek powinno znajdować się polecenie

Ilustracja do pytania
A. mysqli_free_result($zapytanie);
B. mysqli_query($zapytanie);
C. mysqli_num_fields($zapytanie);
D. mysqli_fetch_row($zapytanie);
Funkcja mysqli_fetch_row jest prawidłowa w tym kontekście ponieważ służy do pobierania jednego wiersza wyników z zestawu wyników zapytań do bazy danych. Każde wywołanie tej funkcji zwraca tablicę indeksowaną numerycznie reprezentującą wiersz danych co doskonale pasuje do zaprezentowanego kodu PHP. W przedstawionym kodzie mamy do czynienia z pętlą for która iteruje po każdym wierszu zestawu wyników. W każdym kroku pętli echo wyprowadza wartości z wiersza. Użycie mysqli_fetch_row jest zgodne z najlepszymi praktykami ponieważ pozwala na kontrolowane przetwarzanie danych z bazy danych i jest bardziej efektywne przy pracy z dużymi zbiorami danych niż pobieranie wszystkich danych na raz. Dodatkowo taka metoda pozwala na lepsze zarządzanie pamięcią ponieważ przetwarzamy dane wiersz po wierszu co jest ważne przy dużych zbiorach danych. Warto pamiętać że mysqli_fetch_row zwraca null gdy nie ma więcej wierszy do pobrania co jest przydatne do wykrywania końca zestawu wyników. Jest to częsty wybór w wielu aplikacjach webowych do przetwarzania danych pobranych z bazy danych

Pytanie 20

Tabele Osoby oraz Adresy są ze sobą połączone relacją typu jeden do wielu. Jakie zapytanie SQL powinno być użyte, aby poprawnie wyświetlić nazwiska oraz odpowiadające im miasta?

Ilustracja do pytania
A. SELECT nazwisko, Miasto FROM Osoby, Adresy WHERE Osoby.id=Adresy.id
B. SELECT nazwisko, Miasto FROM Osoby, Adresy
C. SELECT nazwisko, Miasto FROM Osoby.Adresy_id=Adresy.id FROM Osoby, Adresy
D. SELECT nazwisko, Miasto FROM Osoby JOIN Adresy ON Osoby.Adresy_id=Adresy.id
Błędy w niepoprawnych odpowiedziach wynikają z niewłaściwego użycia konstrukcji SQL, co prowadzi do złego łączenia tabel. Pierwsze zapytanie korzysta z niejawnego łączenia, tylko oddzielając tabelę przecinkami, co jest już trochę staroświeckie. To prowadzi do tzw. iloczynu kartezjańskiego, co w praktyce oznacza, że każdy rekord z jednej tabeli łączy się z każdym rekordem z drugiej, co jest na ogół nieefektywne. W drugiej odpowiedzi próbujesz użyć warunku WHERE do łączenia tabel, ale niestety używasz identyfikatora id dla obu tabel, co psuje połączenie danych. Poprawne łączenie powinno opierać się na kluczu głównym i odpowiednim kluczu obcym. W trzeciej wersji zapytania masz błędną składnię, która nie trzyma się zasad SQL. W SQL każde FROM powinno być użyte tylko raz do określenia źródła danych. Często błędy wynikają z braku zrozumienia zasad łączenia tabel oraz niewłaściwego używania kluczy. Zrozumienie tych mechanizmów jest kluczowe, jeśli chcesz efektywnie korzystać z relacyjnych baz danych. Zdecydowanie warto znać poprawne konstrukcje SQL, żeby pracować z danymi w środowisku IT.

Pytanie 21

Używając polecenia BACKUP LOG w MS SQL Server, można

A. połączyć się z kopią zapasową
B. wykonać kopię zapasową dziennika transakcji
C. przeglądać komunikaty wygenerowane w trakcie tworzenia kopii
D. wykonać całkowitą kopię zapasową
Pierwsza odpowiedź sugeruje, że polecenie BACKUP LOG może być użyte do wykonania pełnej kopii bezpieczeństwa bazy danych. W rzeczywistości, pełna kopia bezpieczeństwa jest realizowana za pomocą polecenia BACKUP DATABASE, które zgrywa całą bazę danych, w tym wszystkie obiekty i dane. BACKUP LOG dotyczy jedynie dziennika transakcyjnego, co oznacza, że nie jest to odpowiednia odpowiedź. Druga odpowiedź sugeruje, że można zalogować się do kopii bezpieczeństwa, co jest konceptualnie niepoprawne. Kopie zapasowe są plikami, które można przywrócić, ale nie oferują bezpośredniego dostępu do bazy danych. Użytkownik nie może zalogować się do backupu, dopóki nie zostanie przywrócony do instancji SQL Server. Wreszcie, trzecia odpowiedź sugeruje, że BACKUP LOG pozwala na przeczytanie komunikatów wygenerowanych podczas tworzenia kopii. W rzeczywistości, przy tworzeniu kopii zapasowych, komunikaty są rejestrowane w logach serwera, a polecenie BACKUP LOG nie służy do ich przeglądania. Można je jednak monitorować przy pomocy narzędzi do zarządzania SQL Server lub poprzez odpowiednie zapytania do systemowych tabel logów. Dlatego wszystkie te odpowiedzi są błędne w kontekście polecenia BACKUP LOG.

Pytanie 22

Funkcja pg_connect w PHP pozwala na nawiązanie połączenia z bazą danych

A. mySQL
B. MS SQL
C. PostgreSQL
D. MS ACCESS
Polecenie pg_connect w języku PHP jest używane do nawiązywania połączenia z bazą danych PostgreSQL. PostgreSQL to zaawansowany system zarządzania relacyjnymi bazami danych, który obsługuje wiele zaawansowanych funkcji, takich jak transakcje, złożone zapytania czy wsparcie dla różnych typów danych. Funkcja pg_connect przyjmuje jako argumenty łańcuch połączenia, w którym określamy host, port, nazwę bazy danych, użytkownika oraz hasło. Przykładowe użycie polecenia to: $conn = pg_connect("host=localhost dbname=mydb user=myuser password=mypass");. Przy prawidłowym połączeniu, zmienna $conn będzie zawierała uchwyt do bazy danych, który można używać w dalszych operacjach, takich jak wykonywanie zapytań SQL. PostgreSQL jest często wybierany ze względu na swoje możliwości dostosowywania, silne wsparcie dla standardów SQL oraz szeroką społeczność. Warto zauważyć, że pg_connect jest częścią rozszerzenia PHP o nazwie pgsql, które musi być włączone, aby umożliwić korzystanie z tej funkcji.

Pytanie 23

W bazie danych sklepu internetowego, w tabeli klienci znajdują się m.in. pola całkowite: punkty, liczbaZakupow oraz pole ostatnieZakupy o typie DATE. Klauzula WHERE dla zapytania wybierającego klientów, którzy mają ponad 3000 punktów lub dokonali zakupów więcej niż 100 razy, a ich ostatnie zakupy miały miejsce co najmniej w roku 2022, przyjmuje postać

A. WHERE punkty > 3000 AND liczbaZakupow > 100 AND ostatnieZakupy >= '2022-01-01'
B. WHERE punkty > 3000 AND liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'
C. WHERE punkty > 3000 OR liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'
D. WHERE (punkty > 3000 OR liczbaZakupow > 100) AND ostatnieZakupy >= '2022-01'
W przypadku pozostałych odpowiedzi pojawiają się istotne błędy związane z logiką stosowania operatorów w klauzuli WHERE. W pierwszej z niepoprawnych opcji zastosowano operator OR w połączeniu z operatorami AND, co prowadzi do niejednoznaczności w logice kwerendy. Taki zapis sugeruje, że każdy klient, który spełnia tylko jeden z podanych warunków, zostanie wybrany, co nie jest zgodne z wymaganiami zadania. W drugim przypadku, zastosowanie operatora AND dla wszystkich warunków implikuje, że klient musi jednocześnie spełniać wszystkie trzy warunki, co znacząco zawęża grupę wyników i może prowadzić do pominięcia klientów, którzy są wartościowi z punktu widzenia transakcji, ale nie spełniają wszystkich kryteriów jednocześnie. W ostatniej opcji również zastosowano operator AND we wszystkich warunkach, co jest niezgodne z zamysłem zapytania. Ważne jest, aby w takich sytuacjach dobrze rozumieć logikę operacji logicznych oraz ich konsekwencje w praktyce. Kluczowym błędem jest nieodpowiednie zrozumienie relacji między warunkami oraz ich wzajemnego wpływu na ostateczny wynik zapytania. W SQL istotne jest precyzyjne formułowanie zapytań, aby uniknąć niezamierzonych wyników, dlatego warto na etapie pisania schematów myśleć o logice, która będzie spełniać założone cele analizy danych.

Pytanie 24

Wbudowanym w pakiet XAMPP narzędziem służącym do zarządzania bazą danych jest

A. pgAdmin
B. MySQL Workbench
C. SQLite
D. phpMyAdmin
W tym pytaniu łatwo się pomylić, bo wszystkie podane nazwy są w jakiś sposób związane z bazami danych, ale tylko jedna z nich jest faktycznie wbudowana w XAMPP jako standardowe narzędzie. XAMPP to pakiet, który ma ułatwić uruchomienie lokalnego środowiska serwerowego (Apache, PHP, MySQL/MariaDB itd.) jednym instalatorem. Jego celem jest „postawienie” gotowego stosu webowego na komputerze programisty. Z tego powodu twórcy XAMPP dołączyli phpMyAdmin, bo jest lekkie, webowe i napisane w PHP, więc idealnie pasuje do tego ekosystemu. MySQL Workbench bywa mylony z narzędziami w XAMPP, bo też służy do zarządzania MySQL, ale jest to osobna, natywna aplikacja instalowana oddzielnie, dostarczana przez Oracle. Nie jest częścią XAMPP, nie uruchamia się z panelu XAMPP i nie działa w przeglądarce. To bardziej rozbudowane środowisko do projektowania schematów, administrowania serwerami MySQL, analizowania wydajności. Dla wielu początkujących wygląda „profesjonalniej”, ale w typowej instalacji XAMPP go po prostu nie ma. pgAdmin z kolei jest narzędziem do zarządzania PostgreSQL, a XAMPP domyślnie korzysta z MySQL/MariaDB, nie z PostgreSQL. Stąd pgAdmin nie ma żadnego naturalnego powiązania z XAMPP, występuje raczej w pakietach, które celują w środowisko PostgreSQL (np. instalatory Postgresa). Wybranie tej odpowiedzi zwykle wynika z myślenia: „to jakieś narzędzie do bazy, więc pewnie będzie pasować”, ale tu trzeba zwracać uwagę na konkretny silnik bazy danych. SQLite natomiast nie jest nawet narzędziem administracyjnym, tylko samym silnikiem bazy danych, w dodatku wbudowanym, plikowym. Można z niego korzystać w PHP, ale nie ma tu mowy o tym, że byłby to graficzny panel w XAMPP. Typowy błąd polega na wrzuceniu do jednego worka „wszystko co ma coś wspólnego z bazami” i zakładaniu, że to będzie interfejs do zarządzania. W praktyce warto rozróżniać: silnik bazy (MySQL, MariaDB, PostgreSQL, SQLite) od narzędzia klienckiego/administracyjnego (phpMyAdmin, MySQL Workbench, pgAdmin). W XAMPP, jako narzędzie wbudowane, występuje właśnie phpMyAdmin i to jego nazwę trzeba kojarzyć bezpośrednio z tym pakietem.

Pytanie 25

W systemach baz danych, aby przedstawić dane spełniające określone kryteria, należy stworzyć

A. raport
B. makropolecenie
C. relację
D. formularz
Raport w bazach danych jest narzędziem, które pozwala na prezentację danych w formacie dostosowanym do konkretnych potrzeb użytkownika. Jego głównym celem jest przedstawienie informacji, które spełniają określone kryteria, co jest niezwykle istotne w kontekście analizy danych. Raporty mogą być generowane na podstawie różnych źródeł danych, a ich struktura może obejmować tabele, wykresy i podsumowania. W praktyce, raporty są często używane w procesach decyzyjnych, na przykład w raportowaniu wyników finansowych, analizie sprzedaży czy monitorowaniu wydajności operacyjnej. Wiele systemów zarządzania bazami danych (DBMS) oferuje funkcje do tworzenia raportów, co jest zgodne z najlepszymi praktykami w dziedzinie analizy i wizualizacji danych. Dobrze zbudowany raport nie tylko dostarcza kluczowych informacji, ale także umożliwia efektywniejsze podejmowanie decyzji poprzez dostarczenie kontekstu i analizy danych.

Pytanie 26

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. 4
B. 0
C. 1
D. 3
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 27

Na zaprezentowanym schemacie bazy danych biblioteka, elementy takie jak: czytelnik, wypożyczenie oraz książka stanowią

Ilustracja do pytania
A. krotki
B. atrybuty
C. encje
D. pola
Na tym schemacie bazy danych warto najpierw odróżnić kilka podstawowych pojęć: encja, atrybut, krotka i pole. To jest taki fundament, bez którego łatwo się pogubić. Prostokąty podpisane „czytelnik”, „wypożyczenie” i „książka” reprezentują ogólne typy obiektów, które występują w systemie. W języku modelowania danych nazywamy je encjami. Encja to nie pojedynczy rekord, tylko pewien rodzaj bytu, np. każdy konkretny czytelnik będzie instancją encji CZYTELNIK. Częsty błąd polega na myleniu encji z atrybutami. Atrybut to pojedyncza cecha encji – na przykład imię, nazwisko, tytuł, rok wydania. Na diagramie są one wypisane wewnątrz prostokąta, pod nazwą encji. Gdyby „czytelnik” był atrybutem, to musiałby opisywać jakąś inną encję, co tu nie ma sensu. Podobnie jest z pojęciem pola: w praktyce pola kojarzymy z kolumnami w tabeli lub polami formularza. Pole to techniczna reprezentacja atrybutu w konkretnej tabeli, a nie osobny obiekt biznesowy. Zdarza się też, że uczniowie zaznaczają odpowiedź „krotki”, bo widzą powiązanie z relacyjną bazą danych. Krotka (rekord, wiersz tabeli) oznacza jednak pojedyńczy wpis w tabeli, np. jednego konkretnego Kowalskiego jako czytelnika albo jedną konkretną książkę. Na diagramie nie widzimy pojedynczych rekordów, tylko definicję struktur, z których te rekordy będą się składać. Innymi słowy: encja to wzór, a krotka to jego konkretne wystąpienie. Moim zdaniem najbezpieczniejsza metoda zapamiętania jest taka: na etapie projektowania koncepcyjnego mówimy o encjach i atrybutach, na etapie fizycznej bazy – o tabelach, kolumnach (polach) i rekordach (krotkach). W tym pytaniu mówimy właśnie o poziomie modelu koncepcyjnego, dlatego poprawnym pojęciem są encje, a nie atrybuty, krotki czy pola.

Pytanie 28

Jakim poleceniem SQL można zlikwidować z tabeli artykuly wiersze, które zawierają słowo "sto" w dowolnej lokalizacji pola tresc?

A. DELETE FROM artykuly WHERE tresc LIKE "%sto%"
B. DELETE FROM artykuly WHERE tresc = "%sto%"
C. DELETE * FROM artykuly WHERE tresc LIKE "%sto%"
D. DELETE * FROM artykuly WHERE tresc = "%sto%"
Wybór odpowiedzi "DELETE * FROM artykuly WHERE tresc = '%sto%';" jest po prostu zły z paru powodów. Po pierwsze, w SQL nie używamy znaku '*' przy DELETE. Jak chcemy usunąć wiersze, to piszemy tylko "DELETE FROM nazwa_tabeli". To '*' sugeruje, że chcesz usunąć jakieś konkretne kolumny, a to w SQL się nie sprawdzi. Druga sprawa to operator '=' zamiast 'LIKE'. '=' używamy do porównania wartości, nie do wyszukiwania wzorców, a tu właśnie szukamy wystąpienia słowa 'sto' w dłuższym tekście. Dlatego operator LIKE z wildcardami jest tu konieczny, by znaleźć i usunąć te wiersze, które mają 'sto' gdziekolwiek. Często ludzie mylą te operatory w SQL, co prowadzi do problemów i nieefektywnego wyszukiwania.

Pytanie 29

Jak kwerenda SQL przedstawiona w ramce wpłynie na tabelę pracownicy?

ALTER TABLE pracownicy MODIFY plec char(9);
A. Zmieni typ danych kolumny plec na znakowy o stałej długości 9
B. Zmieni typ danych kolumny plec na znakowy o zmiennej długości 9
C. Doda kolumnę plec ze znakowym typem danych o stałej długości 9
D. Doda kolumnę plec ze znakowym typem danych o zmiennej długości 9
Jak widzisz, polecenie SQL ALTER TABLE pracownicy MODIFY plec char(9) zmienia typ kolumny plec na CHAR o stałej długości 9 znaków. To znaczy, że wszystkie wartości w tej kolumnie będą miały dokładnie 9 znaków. Jeśli dana wartość będzie krótsza, to automatycznie dopełni się spacjami. W praktyce to jest przydatne, gdy musimy mieć dane zawsze w tej samej długości, na przykład przy kodach pocztowych czy numerach identyfikacyjnych. Twoja odpowiedź jest poprawna, ponieważ mówi dokładnie o tym, co się dzieje przy użyciu MODIFY, a typ CHAR wskazuje, że mamy do czynienia z danymi o stałej długości. Wiesz, czasami w aplikacjach biznesowych trzeba mieć dane w jednolitej formie, bo to ułatwia ich przetwarzanie i porównywanie. Dlatego tak ważne jest, żeby znać różne typy danych i ich zastosowania podczas projektowania baz danych.

Pytanie 30

Wśród technik rozwiązywania problemów w przedsiębiorstwie znajdują się: ignorowanie, separacja, arbitraż oraz kompromis. Wskaż metodę, która szczególnie może być niebezpieczna i prowadzić do zaostrzenia konfliktu w firmie?

A. kompromis
B. arbitraż
C. separacja
D. ignorowanie
Wybór arbitrażu, separacji czy kompromisu jako technik rozwiązywania problemów jest często mylny, gdyż wiele osób nie dostrzega ich potencjalnych ograniczeń i ryzyk. Arbitraż, na przykład, może być postrzegany jako skuteczna metoda, ponieważ angażuje bezstronną osobę, która podejmuje decyzję w sprawie sporu. Jednakże, w praktyce, takie podejście może prowadzić do frustracji stron, które czują się wykluczone z procesu podejmowania decyzji, co z kolei może zwiększyć napięcie i niechęć do współpracy w przyszłości. Separacja, czyli fizyczne lub psychiczne oddzielenie stron, natomiast, może prowadzić do dalszego wyobcowania i braku komunikacji, co w dłuższej perspektywie osłabia zespół oraz zdolność do współpracy między działami. Z drugiej strony, kompromis, mimo że wydaje się być zrównoważonym rozwiązaniem, często prowadzi do niepełnego zaspokojenia potrzeb obu stron, co może w przyszłości powodować niezadowolenie i dalsze konflikty. Zastosowanie tych technik bez wcześniejszej analizy sytuacji oraz zrozumienia ich potencjalnych skutków może prowadzić do poważnych problemów w organizacji, a także do utraty zaufania między członkami zespołu. Dlatego kluczowe jest, aby w procesie rozwiązywania konfliktów opierać się na solidnych podstawach teoretycznych oraz praktycznych, takich jak te opisane w badaniach dotyczących dynamiki grup i zarządzania konfliktami.

Pytanie 31

W tabeli podzespoly należy zaktualizować wartość pola URL na "toshiba.pl" dla wszystkich rekordów, w których pole producent jest równe TOSHIBA. Jak będzie wyglądała ta zmiana w języku SQL?

A. UPDATE podzespoly.producent='TOSHIBA' SET URL = 'toshiba.pl';
B. UPDATE podzespoly SET URL = 'toshiba.pl';
C. UPDATE producent='TOSHIBA' SET URL = 'toshiba.pl';
D. UPDATE podzespoly SET URL='toshiba.pl' WHERE producent='TOSHIBA';
Wszystkie odpowiedzi, które nie zawierają poprawnej składni SQL, prowadzą do błędów w wykonywaniu aktualizacji. Przykładowo, pierwsze podejście do aktualizacji polega na usunięciu klauzuli WHERE, co skutkuje zaktualizowaniem wartości URL dla wszystkich rekordów w tabeli, a nie tylko dla tych, które dotyczą producenta 'TOSHIBA'. Taki błąd może prowadzić do masowej utraty danych, co jest niedopuszczalne w zarządzaniu bazami danych. W drugiej niepoprawnej odpowiedzi następuje zmiana w logicznym układzie zapytania, co prowadzi do błędu składniowego. Nie możemy zacząć od przypisania wartości do pola producent, a następnie ustawić URL; składnia aktualizacji wymaga innego porządku. Trzecia odpowiedź również jest niepoprawna, ponieważ sugeruje użycie kropki w odniesieniu do pola producent, co jest sprzeczne z konwencjami SQL. W SQL nie stosuje się kropki do oddzielania pól i tabeli w kontekście aktualizacji. Takie błędy składniowe mogą prowadzić do tego, że zapytanie nie zostanie wykonane, a użytkownik nie osiągnie zamierzonego efektu aktualizacji. Użycie niepoprawnej składni w SQL nie tylko ogranicza funkcjonalność, ale może również generować poważne problemy w zarządzaniu danymi.

Pytanie 32

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

A. UNIQUE
B. IDENTITY FIELD
C. PRIMARY KEY
D. MAIN KEY
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.

Pytanie 33

W hurtowni utworzono tabelę sprzedaż, która zawiera pola: id, kontrahent, grupa_cenowa oraz obrot. Jakie polecenie należy wykorzystać, aby znaleźć tylko kontrahentów z drugiej grupy cenowej, których obrót przekracza 4000 zł?

A. SELECT sprzedaz FROM kontrahent WHERE obrot>4000
B. SELECT sprzedaz FROM kontrahent WHERE grupa_cenowa=2 AND obrot>4000
C. SELECT kontrahent FROM sprzedaz WHERE grupa_cenowa=2 OR obrot>4000
D. SELECT kontrahent FROM sprzedaz WHERE grupa_cenowa=2 AND obrot>4000
Aby skutecznie wyszukać kontrahentów z drugiej grupy cenowej, których obrót przekracza 4000 zł, należy zastosować odpowiednie zapytanie SQL. W tym przypadku, kluczowe jest zrozumienie użycia klauzul WHERE, które filtrują wyniki na podstawie określonych warunków. Poprawne zapytanie to 'SELECT kontrahent FROM sprzedaz WHERE grupa_cenowa=2 AND obrot>4000;'. W tym zapytaniu wybieramy kolumnę kontrahent z tabeli sprzedaz, filtrując wyniki na podstawie dwóch warunków: przynależności do drugiej grupy cenowej oraz obrotu większego niż 4000 zł. Operator AND jest istotny, ponieważ oba warunki muszą być spełnione, aby dany rekord został zwrócony. Takie podejście jest zgodne z zasadami normalizacji baz danych, co pozwala na zachowanie integralności danych i efektywność zapytań. Przykładem może być sytuacja, w której w tabeli znajdują się kontrahenci o różnych grupach cenowych i obrotach; zastosowanie powyższego zapytania pozwoli nam na wyselekcjonowanie tylko tych kontrahentów, którzy spełniają oba kryteria, co jest niezwykle przydatne w analizie sprzedaży i podejmowaniu decyzji biznesowych.

Pytanie 34

Jakie są określenia typowych komend języka SQL, które dotyczą przeprowadzania operacji na danych SQL DML (np.: dodawanie danych do bazy, usuwanie, modyfikowanie danych)?

A. DELETE, INSERT, UPDATE
B. ALTER, CREATE, DROP
C. SELECT, SELECT INTO
D. DENY, GRANT, REVOKE
Odpowiedź DELETE, INSERT, UPDATE jest prawidłowa, ponieważ te polecenia stanowią podstawowe instrukcje języka SQL DML (Data Manipulation Language), które są wykorzystywane do manipulacji danymi w bazie danych. DELETE służy do usuwania rekordów z tabel, co jest niezbędne w sytuacjach, gdy dane są już nieaktualne lub niepotrzebne. INSERT umożliwia dodawanie nowych rekordów, co jest kluczowe w procesie wprowadzania danych, na przykład dodawania nowych klientów do bazy danych. Z kolei UPDATE pozwala na modyfikację już istniejących danych, co jest istotne w przypadku zmiany informacji, takich jak aktualizacja adresu klienta. W praktyce te operacje są niezwykle ważne dla utrzymania spójności i aktualności danych w systemach zarządzania bazami danych. Warto również zauważyć, że stosowanie tych poleceń zgodnie z dobrymi praktykami, takimi jak transakcje, pozwala na zabezpieczenie integralności danych oraz umożliwia łatwe wycofywanie zmian w przypadku błędów.

Pytanie 35

Jakie rozwiązanie powinno być wdrożone w organizacji danych, aby przyspieszyć wykonanie zapytań w bazie danych?

A. Indeksy
B. Wartości domyślne
C. Reguły
D. Klucze podstawowe
Klucze podstawowe pełnią inną rolę w bazach danych niż indeksy. Służą one do jednoznacznej identyfikacji każdego wiersza w tabeli i zapewniają, że nie ma duplikatów danych. Choć klucze podstawowe mogą być automatycznie indeksowane przez system bazy danych, ich głównym celem jest zapewnienie integralności danych, a nie przyspieszanie wyszukiwania. Reguły, z drugiej strony, dotyczą logiki aplikacji i kontroli danych, ale nie wpływają na szybkość dostępu do danych. Mogą one być używane do walidacji danych przed ich zapisaniem w bazie, co jest ważne, lecz nie przyspiesza samego procesu wyszukiwania. Wartości domyślne definiują, jakie dane mają być wstawiane, gdy nie podano żadnej wartości, ale również nie mają wpływu na wydajność zapytań. Wszystkie te elementy mają swoje istotne miejsce w projektowaniu baz danych, jednak nie są bezpośrednio związane z optymalizacją szybkości zapytań jak to jest w przypadku indeksów. Często mylnie zakłada się, że klucze podstawowe i inne mechanizmy są wystarczające do poprawy wydajności, co może prowadzić do nieefektywnego projektowania i nieodpowiednich optymalizacji w systemie bazodanowym.

Pytanie 36

W SQL, po wykonaniu przedstawionych poleceń GRANT, prawo do edytowania struktury tabeli oraz jej usunięcia zostanie przyznane

GRANT ALL ON firmy TO 'adam'@'localhost';
GRANT ALTER, CREATE, DROP ON firmy TO 'anna'@'localhost';
GRANT SELECT, INSERT, UPDATE ON firmy TO 'tomasz'@'localhost';
A. Tomaszowi i Adamowi
B. Tomaszowi i Annie
C. tylko Annie
D. Adamowi i Annie
SQL jest językiem służącym do zarządzania bazami danych a przydzielanie uprawnień jest kluczowym aspektem utrzymania ich bezpieczeństwa i integralności. W powyższym kontekście niepoprawne odpowiedzi wynikają z błędnego zrozumienia mechanizmu przydzielania uprawnień. W przypadku Tomasza polecenie GRANT SELECT INSERT UPDATE ON firmy odnosi się do uprawnień które nie obejmują zmiany struktury tabeli czy jej usuwania. SELECT INSERT i UPDATE to operacje które dotyczą przetwarzania danych wewnątrz tabeli a nie jej struktury. Podobnie przydzielenie uprawnień tylko Annie nie obejmowałoby pełnego zestawu uprawnień do wszystkich operacji które Adam otrzymuje poprzez GRANT ALL. W praktyce często spotyka się błędne założenie że przydzielenie wszystkich uprawnień jednemu użytkownikowi jest optymalnym rozwiązaniem jednak w rzeczywistości wiąże się to z potencjalnym ryzykiem związanym z bezpieczeństwem dlatego właściwe zarządzanie uprawnieniami wymaga głębokiego zrozumienia i przemyślanej strategii. Dzięki zrozumieniu różnicy między tymi uprawnieniami można lepiej planować bezpieczeństwo i zarządzanie dostępem do bazy danych w organizacji co jest zgodne z najlepszymi praktykami branżowymi.

Pytanie 37

Użytkownik Jan będzie miał możliwość realizacji

GRANT ALL PRIVILEGES ON dane.* TO 'Jan'@'localhost';
A. wyłącznie operacje CREATE, ALTER, DROP na tabelach w bazie dane
B. tylko operacje manipulacji danymi oraz zmienić jedynie swoje uprawnienia
C. wszystkie operacje na tabelach bazy dane oraz przekazywać prawa innym użytkownikom
D. wszystkie operacje na tabelach w bazie dane
Niepoprawne odpowiedzi wynikają z nieporozumień dotyczących zakresu uprawnień, jakie mogą być przyznane użytkownikom w systemie baz danych. Ograniczanie możliwości Jan do jedynie operacji CREATE, ALTER, DROP na tabelach bazy danych jest błędne, ponieważ przyznanie ALL PRIVILEGES pozwala na znacznie szerszy zakres operacji, w tym manipulację danymi poprzez SELECT i INSERT. Warto zauważyć, że w kontekście baz danych, operacje związane z manipulowaniem danymi są kluczowe dla prawidłowego funkcjonowania aplikacji i utrzymania integralności danych. Twierdzenie, że Jan miałby jedynie możliwość zmiany własnych praw, jest również mylne, ponieważ uprawnienia ALL PRIVILEGES dają użytkownikowi kontrolę nad wszystkimi tabelami oraz możliwość nadawania uprawnień innym użytkownikom. Koncepcja ograniczenia uprawnień do jedynie manipulacji danymi nie uwzględnia pełnego potencjału, jaki niesie ze sobą przyznanie ALL PRIVILEGES, co prowadzi do nieefektywnego zarządzania bazą danych. Zrozumienie, jak działają uprawnienia w systemach baz danych, jest kluczowe dla bezpieczeństwa i prawidłowego zarządzania danymi, dlatego konieczne jest, aby administratorzy baz danych dokładnie analizowali zasady, według których przyznają uprawnienia użytkownikom.

Pytanie 38

Tabela Pacjenci zawiera kolumny: imie, nazwisko, wiek, lekarz_id. Aby stworzyć raport, który będzie zawierał jedynie imiona oraz nazwiska pacjentów mających mniej niż 18 lat i zapisanych do lekarza o id równym 6, można wykorzystać kwerendę SQL

A. SELECT imie, nazwisko FROM Pacjenci WHERE wiek<18 OR lekarz_id=6
B. SELECT imie, nazwisko WHERE wiek<18 OR lekarz_id=6
C. SELECT imie, nazwisko WHERE wiek<18 AND lekarz_id=6
D. SELECT imie, nazwisko FROM Pacjenci WHERE wiek<18 AND lekarz_id=6
Wybrane odpowiedzi zawierają błędy w logice i zastosowaniu operatorów w zapytaniach SQL. W pierwszym przypadku, brakująca klauzula FROM w kwerendzie sprawia, że zapytanie jest niepoprawne. Operator WHERE wymaga wskazania tabeli, na której ma zostać wykonane zapytanie. To fundamentalna zasada w SQL, która odnosi się do struktury zapytań. Z kolei w przypadku zastosowania operatora OR, kwerenda może zwrócić wyniki, które nie są zgodne z wymaganiami zadania, ponieważ zwróciłaby również pacjentów powyżej 18 roku życia, którzy są zapisani do lekarza o id równym 6. To narusza logikę, ponieważ celem zapytania jest uzyskanie tylko tych pacjentów, którzy są młodsi niż 18 lat i zapisani do konkretnego lekarza. Zastosowanie AND w tym kontekście jest kluczowe, aby uzyskać precyzyjne wyniki. Przykład błędnych zapytań ilustruje, jak ważne jest zrozumienie relacji między warunkami w SQL. Bez prawidłowego użycia operatorów, kwerenda staje się nieefektywna i nieprecyzyjna. Dlatego kluczowe jest przeszkolenie w zakresie logiki zapytań SQL oraz praktyka w ich pisaniu.

Pytanie 39

Jakie zapytanie SQL należy użyć, aby zmienić strukturę już istniejącej tabeli?

A. ALTER TABLE
B. INSERT INTO
C. CREATE TABLE
D. UPDATE
Wybór poleceń 'UPDATE', 'INSERT INTO' oraz 'CREATE TABLE' na modyfikację struktury tabeli jest niewłaściwy z kilku powodów. 'UPDATE' jest używane do zmiany danych w już istniejących rekordach w tabeli, a nie do zmiany jej struktury. Zastosowanie tego polecenia sugeruje, że użytkownik myli modyfikację danych z modyfikacją struktury, co jest kluczową różnicą w SQL. 'INSERT INTO' z kolei służy do dodawania nowych wierszy do tabeli, a nie do zmiany jej definicji. Takie błędne rozumienie poleceń może prowadzić do nieefektywnego zarządzania danymi oraz problemów z ich integralnością. 'CREATE TABLE' jest stosowane do tworzenia nowej tabeli, a nie do modyfikacji istniejącej, co również wskazuje na brak zrozumienia kontekstu zapytania. Całość tych pomyłek może wynikać z niepełnej znajomości struktury SQL i jego podstawowych poleceń, co często zdarza się wśród początkujących programistów. Zrozumienie różnic pomiędzy tymi poleceniami jest niezbędne do efektywnego zarządzania bazami danych, ponieważ każde z nich spełnia inną funkcję i stosowane w odpowiednim kontekście wpływa na jakość oraz wydajność systemu bazodanowego.

Pytanie 40

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

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