Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 15 czerwca 2026 10:52
  • Data zakończenia: 15 czerwca 2026 10:57

Egzamin niezdany

Wynik: 13/40 punktów (32,5%)

Wymagane minimum: 20 punktów (50%)

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

Które stwierdzenie dotyczące klucza głównego (podstawowego) jest prawdziwe?

A. składa się tylko z jednego pola
B. jest unikalny w obrębie tabeli
C. dla danych osobowych może to być pole nazwisko
D. może przyjmować wyłącznie wartości liczbowe
Klucz główny musi być UNIKALNY w obrębie tabeli - jego wartości nie mogą się powtarzać, bo jednoznacznie identyfikują każdy wiersz. Dlatego prawdziwe jest, że klucz główny jest unikalny w obrębie tabeli.

Pytanie 2

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 podzespoly SET URL='toshiba.pl' WHERE producent='TOSHIBA';
D. UPDATE producent='TOSHIBA' SET URL = 'toshiba.pl';
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 3

W tabeli psy znajdują się kolumny: imie, rasa, telefon_wlasciciela, rok_szczepienia. Jakie polecenie SQL należy zastosować, aby uzyskać numery telefonów właścicieli psów, które były szczepione przed rokiem 2015?

A. SELECT telefon_wlasciciela FROM psy WHERE rok_szczepienia > 2015
B. SELECT psy FROM rok_szczepienia < 2015
C. SELECT imie, rasa FROM psy WHERE rok_szczepienia > 2015
D. SELECT telefon_wlasciciela FROM psy WHERE rok_szczepienia < 2015
Wybór błędnych odpowiedzi wynika z nieporozumienia dotyczącego zastosowania różnych operatorów porównania i struktury zapytań SQL. W pierwszej analizowanej odpowiedzi 'SELECT imie, rasa FROM psy WHERE rok_szczepienia > 2015', zamiast wydobywać telefony właścicieli, zapytanie skupia się na imionach i rasach psów, co nie odpowiada na zadane pytanie. Użycie operatora '>' w kontekście roku szczepienia jest sprzeczne z wymaganiem, które dotyczy psów zaszczepionych przed 2015 rokiem, co jest podstawowym błędem logicznym. Inna odpowiedź, 'SELECT psy FROM rok_szczepienia < 2015', jest niepoprawna z powodu błędnej składni SQL; nie można wybierać całej tabeli w ten sposób, co pokazuje brak znajomości podstaw struktury zapytań. Ostatnia niepoprawna odpowiedź, 'SELECT telefon_wlasciciela FROM psy WHERE rok_szczepienia > 2015', również wskazuje na błąd w interpretacji kryteriów czasowych, ponieważ operator '>' nie uwzględnia psów zaszczepionych przed rokiem 2015. Ta sytuacja pokazuje, jak ważne jest dokładne czytanie wymagań oraz znajomość podstawowych zasad składni SQL, aby unikać błędów i skutecznie korzystać z baz danych.

Pytanie 4

W jaki sposób będzie uporządkowana lista stworzona z wszystkich kolumn tabeli uczniowie, obejmująca uczniów o średniej wyższej niż 5, która zostanie zwrócona jako rezultat przedstawionego zapytania?

SELECT *
FROM uczniowie
WHERE srednia > 5
ORDER BY klasa DESC;
A. Rosnaco według parametru srednia
B. Malejąco według parametru srednia
C. Malejąco według parametru klasa
D. Rosnąca według parametru klasa
Zapytanie SQL używa klauzuli ORDER BY klasa DESC co oznacza że wyniki będą posortowane malejąco według kolumny klasa Klauzula ORDER BY jest używana w języku SQL do sortowania wyników zapytania Użycie DESC oznacza że sortowanie będzie w porządku malejącym co w praktyce oznacza że najwyższe wartości będą na początku listy a najniższe na końcu To jest przydatne gdy chcemy uzyskać strukturę danych w której najważniejsze lub najbardziej istotne rekordy są prezentowane na samym początku na przykład gdy analizujemy dane w kontekście hierarchicznym lub priorytetowym W tym przypadku sortujemy malejąco według klasy co może być użyteczne na przykład gdy chcemy szybko zidentyfikować uczniów z wyższych klas którzy osiągają wysokie wyniki średnia powyżej 5 Dobre praktyki w SQL zalecają jasne i precyzyjne definiowanie kryteriów sortowania co ułatwia zrozumienie logiki zapytania oraz zapewnia jego przewidywalne działanie Jeśli dane wymagają częstego sortowania warto rozważyć optymalizację poprzez odpowiednie indeksy co może znacząco poprawić wydajność zapytań zwłaszcza w dużych zestawach danych

Pytanie 5

Jak system CMS realizuje oddzielenie treści serwisu od jego wyglądu?

A. treść generuje z bazy danych, a wygląd ze zdefiniowanego szablonu
B. treść z bazy danych, a wygląd za pomocą atrybutów HTML
C. treść ze statycznych plików HTML, a wygląd we Flashu
D. treść ze statycznych plików HTML, a wygląd ze szablonu
CMS oddziela treść od wyglądu: TREŚĆ przechowuje w bazie danych i pobiera dynamicznie, a WYGLĄD definiuje osobny szablon (motyw). Dzięki temu zmiana szablonu nie rusza treści i odwrotnie. Dlatego CMS generuje treść z bazy danych, a wygląd ze zdefiniowanego szablonu.

Pytanie 6

Które polecenie SQL zmieni w tabeli tab, w kolumnie kol, wartość „Ania” na „Zosia”?

A.
ALTER TABLE tab CHANGE kol = 'Ania' kol = 'Zosia';
B.
UPDATE tab SET kol = 'Ania' WHERE kol = 'Zosia';
C.
UPDATE tab SET kol = 'Zosia' WHERE kol = 'Ania';
D.
ALTER TABLE tab CHANGE kol = 'Zosia' kol = 'Ania';
Pozostałe zapisy zawodzą. Wariant z SET kol = 'Ania' WHERE kol = 'Zosia' działa odwrotnie. Polecenia ALTER TABLE ... CHANGE zmieniają STRUKTURĘ tabeli (definicję kolumny), a nie zapisane w niej dane. Zmianę wartości daje UPDATE tab SET kol = 'Zosia' WHERE kol = 'Ania';.

Pytanie 7

W języku SQL, aby wstawić wiersz danych do tabeli w bazie danych, należy zastosować polecenie

A. CREATE INTO
B. SELECT ROW
C. INSERT INTO
D. CREATE ROW
W języku SQL nazewnictwo poleceń nie jest przypadkowe i mocno wynika ze standardu ANSI/ISO. Jeżeli chcemy dodać nowy wiersz danych do istniejącej tabeli, używamy instrukcji INSERT INTO, a nie żadnych konstrukcji typu SELECT ROW, CREATE ROW czy CREATE INTO. Te błędne formy często biorą się z intuicyjnego mieszania pojęć z języków programowania i potocznego opisu danych.
SELECT służy wyłącznie do odczytu danych, czyli do tworzenia zapytań wybierających wiersze z tabel. Dodawanie słowa ROW do SELECT wygląda może „logicznie” po ludzku, ale w SQL nie istnieje taka konstrukcja jak SELECT ROW do wstawiania rekordu. SELECT może co najwyżej dostarczyć dane, które potem wstawimy za pomocą INSERT INTO w formie INSERT INTO tabela (kolumny) SELECT .... To jest poprawny, standardowy mechanizm masowego wstawiania, ale sama instrukcja SELECT niczego nie zapisuje do tabeli.
Z kolei CREATE w SQL służy do tworzenia obiektów strukturalnych: CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE DATABASE. Tworzymy w ten sposób samą strukturę, a nie dane w środku. Stąd pomysły typu CREATE ROW albo CREATE INTO są po prostu sprzeczne z logiką składni SQL. Wiersz danych (rekord) nie jest osobnym obiektem, który się „tworzy” poleceniem CREATE, tylko zawartością tabeli, którą modyfikujemy poleceniami INSERT, UPDATE albo DELETE.
Częsty błąd myślowy polega na tym, że ktoś próbuje tłumaczyć SQL dosłownie z języka naturalnego: „chcę utworzyć wiersz, więc napiszę CREATE ROW”. Niestety SQL ma swoje utrwalone słownictwo i trzeba się go nauczyć jak języka obcego. Dobra praktyka w branży to trzymanie się dokładnych konstrukcji ze standardu: INSERT INTO do dodawania rekordów, SELECT do odczytu, UPDATE do modyfikacji i DELETE do usuwania. Dzięki temu kod jest czytelny dla każdego programisty czy administratora, który zna SQL, a zapytania są przenośne między różnymi silnikami baz danych.

Pytanie 8

Systemem zarządzania wersjami w projekcie programistycznym, który działa w trybie rozproszonym, jest

A. FileZilla
B. Eclipse
C. TotalCommander
D. GIT
FileZilla to program służący do transferu plików przez protokoły FTP, SFTP i FTPS. Chociaż może być użyty w kontekście zarządzania plikami projektów, nie oferuje funkcji kontroli wersji, co jest kluczowym elementem rozproszonych systemów kontroli wersji. TotalCommander jest menedżerem plików, który współpracuje z lokalnym systemem plików, a nie z repozytoriami kodu źródłowego. W przypadku projektów programistycznych jego zastosowanie ogranicza się głównie do porządkowania i kopiowania plików, co nie ma związku z kontrolą wersji. Eclipse to zintegrowane środowisko programistyczne (IDE), które może wspierać różne systemy kontroli wersji, w tym GIT, ale samo w sobie nie jest rozproszonym systemem kontroli wersji. Typowe błędy myślowe prowadzące do takich wniosków to mieszanie pojęć związanych z zarządzaniem plikami i kontrolą wersji. Systemy kontroli wersji, takie jak GIT, wprowadzają struktury i procesy, które umożliwiają śledzenie zmian, zarządzanie wersjami kodu oraz współpracę w zespołach, co jest całkowicie odmiennym podejściem od prostego przesyłania plików czy zarządzania nimi w lokalnym systemie. W związku z tym, zrozumienie podstawowych różnic między tymi narzędziami jest kluczowe dla efektywnego zarządzania projektami programistycznymi.

Pytanie 9

W bazie danych znajduje się tabela uczniowie z kolumnami: imie, nazwisko, klasa. Jakie polecenie SQL należy wykorzystać, aby znaleźć imiona oraz nazwiska uczniów, których nazwiska zaczynają się na literę M?

A. SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko IN 'M%';
B. SELECT nazwisko, imie FROM uczniowie WHERE nazwisko IN 'M%';
C. SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko = 'M%';
D. SELECT nazwisko, imie FROM uczniowie WHERE nazwisko LIKE 'M%';
Podejście, które wykorzystuje IN w kontekście wyszukiwania wzorców jest niepoprawne, ponieważ operator IN służy do porównywania wartości z zestawem możliwych wartości, a nie do wyszukiwania wzorców. W SQL IN używa się, gdy chcemy sprawdzić, czy dana kolumna posiada jedną z kilku określonych wartości. Na przykład, gdybyśmy chcieli znaleźć wszystkich uczniów o nazwiskach 'Mroz', 'Michał' lub 'Malinowski', moglibyśmy użyć zapytania z IN, ale nie w kontekście wzorców. Kolejny błąd w zapytaniu dotyczy użycia ORDER BY w sposób, który nie ma sensu w kontekście filtrowania danych. ORDER BY służy do sortowania wyników, a nie do ich selekcji. Próba użycia tej konstrukcji do stworzenia warunku wyszukiwania prowadzi do nieporozumień, ponieważ nie można łączyć warunków filtrujących z sortowaniem w jednym poleceniu w podany sposób. Podobnie, użycie '=' w połączeniu z LIKE jest błędne, ponieważ '=' nie obsługuje symboli wieloznacznych. Typowym błędem jest mylenie funkcji służących do wyszukiwania z funkcjami do porządkowania danych, co skutkuje niepoprawnym zrozumieniem sposobu działania SQL. Ważne jest, aby znać funkcjonalność i ograniczenia poszczególnych operatorów SQL, aby poprawnie formułować zapytania i osiągać zamierzone cele w pracy z bazami danych.

Pytanie 10

Do czego służy pole insert_id z biblioteki MySQLi w PHP?

A. do pobrania najwyższego indeksu bazy do inkrementacji
B. do uzyskania id ostatnio wstawionego wiersza
C. do pobrania pierwszego wolnego indeksu
D. do uzyskania kodu błędu nieudanego wstawienia
insert_id dotyczy udanego wstawienia, a nie kodu błędu (od tego są errno/error). Nie pobiera też „pierwszego wolnego” ani „najwyższego” indeksu z góry - zwraca konkretny id WSTAWIONEGO właśnie rekordu. To id ostatnio wstawionego wiersza.

Pytanie 11

Zdefiniowana jest tabela uczniowie z polami id, nazwisko, imie oraz klasa. Jakie zapytanie SQL pozwoli nam uzyskać liczbę osób w danym klasa i wskazać jej nazwę?

A. SELECT SUM(id), klasa FROM uczniowie GROUP BY klasa
B. SELECT COUNT(id), klasa FROM uczniowie GROUP BY klasa
C. SELECT SUM(id), klasa FROM uczniowie ORDER BY klasa
D. SELECT COUNT(id), klasa FROM uczniowie ORDER BY klasa
Odpowiedź 'SELECT COUNT(id), klasa FROM uczniowie GROUP BY klasa;' jest prawidłowa, ponieważ wykorzystuje funkcję agregującą COUNT do zliczenia liczby uczniów w każdej klasie. Kluczowym elementem jest tutaj klauzula GROUP BY, która grupuje wyniki według kolumny 'klasa'. Dzięki temu uzyskujemy dla każdej klasy osobny wynik z liczbą uczniów. To podejście jest zgodne z dobrymi praktykami w SQL, gdzie użycie funkcji agregujących z grupowaniem pozwala na efektywne przetwarzanie danych. Przykładowo, w przypadku szkoły, taka analiza może być użyta do zarządzania zasobami lub planowania, na przykład, przy ustalaniu liczby nauczycieli potrzebnych w danej klasie. Użycie COUNT zapewnia również, że wynik będzie liczbowy, co jest istotne dla dalszej analizy danych. Warto również pamiętać, że korzystanie z odpowiednich aliasów dla wyników może poprawić czytelność wyników zapytania.

Pytanie 12

Celem testów wydajnościowych jest ocena

A. sekwencji zdarzeń, w której prawdopodobieństwo wystąpienia każdego zdarzenia zależy wyłącznie od wyniku zdarzenia poprzedniego
B. poziomu spełnienia wymagań dotyczących wydajności przez system bądź moduł
C. możliwości oprogramowania do funkcjonowania w warunkach błędnej pracy sprzętu
D. możliwości oprogramowania do funkcjonowania w warunkach niewłaściwej pracy systemu
Odpowiedzi sugerujące, że testy wydajnościowe mają na celu sprawdzenie ciągu zdarzeń, w którym prawdopodobieństwo każdego zdarzenia zależy jedynie od wyniku poprzedniego, dotyczą zupełnie innej dziedziny – statystyki i teorii prawdopodobieństwa. W kontekście testów wydajnościowych mówimy o analizie zachowania systemu w odpowiedzi na obciążenie, a nie o modelowaniu zdarzeń losowych. Kolejne koncepcje, takie jak zdolność oprogramowania do działania w warunkach wadliwej pracy systemu lub sprzętu, odnoszą się do testów odpornościowych i awaryjnych, a nie do testów wydajnościowych. Testy te mają na celu zbadanie, jak system reaguje na sytuacje awaryjne, jednak nie są one bezpośrednio związane z oceną jego wydajności. Te nieporozumienia mogą wynikać z mylnego założenia, że testy wydajnościowe obejmują wszystkie aspekty funkcjonalności systemu, podczas gdy w rzeczywistości koncentrują się one na specyficznych wymaganiach dotyczących szybkości i efektywności działania. Właściwe rozumienie testów wydajnościowych jako narzędzia do pomiaru i optymalizacji wydajności systemu jest kluczowe dla zapewnienia jego sukcesu na rynku. Każda z tych nieprawidłowych odpowiedzi prowadzi do niedosłownego zrozumienia celów i metodologii stosowanych w testach wydajnościowych, co może skutkować poważnymi błędami w procesie wytwarzania oprogramowania.

Pytanie 13

Wykonano następującą kwerendę na tabeli Pracownicy:

SELECT imie FROM pracownicy WHERE nazwisko = 'Kowal' OR stanowisko > 2;

Na tabeli Pracownicy, której wiersze zostały pokazane na obrazie, wykonano przedstawioną kwerendę SELECT. Które dane zostaną wybrane?

idimienazwiskostanowisko
1AnnaKowalska1
2MonikaNowak2
3EwelinaNowakowska2
4AnnaPrzybylska3
5MariaKowal3
6EwaNowacka4
A. Tylko Maria.
B. Tylko Anna.
C. Anna, Maria, Ewa.
D. Monika, Ewelina, Maria.
Niestety, wybrane odpowiedzi są nieprawidłowe. Wydaje się, że mogło dojść do nieporozumienia odnośnie działania kwerendy SQL. Kwerenda 'SELECT imie FROM pracownicy WHERE nazwisko = 'Kowal' OR stanowisko > 2;' zwraca imiona pracowników, którzy mają nazwisko 'Kowal' lub zajmują stanowisko o numerze większym niż 2. W kontekście przedstawionej tabeli, zwróciłaby imiona 'Anna, Maria, Ewa'. Błędne odpowiedzi sugerują, że nie zostało to w pełni zrozumiane. Na przykład, odpowiedź 'Tylko Maria' sugeruje, że nie zrozumiano, że warunek 'stanowisko > 2' również ma wpływ na wynik zapytania. Podobnie, odpowiedzi zawierające imiona pracowników, którzy nie spełniają żadnego z warunków, są nieprawidłowe. Pamiętaj, że SQL to potężne narzędzie do manipulowania danymi i zrozumienie, jak formułować skomplikowane zapytania, jest kluczem do efektywnego zarządzania bazami danych. Zachęcam do dalszej praktyki i eksperymentowania z różnymi zapytaniami, aby lepiej zrozumieć, jakie dane zostaną zwrócone.

Pytanie 14

W SQL przy użyciu kwerendy ALTER można

A. dodać dane do tabeli
B. stworzyć tabelę
C. zlikwidować tabelę
D. zmienić strukturę tabeli
Kwerenda <i>ALTER</i> w SQL ma na celu modyfikację istniejących tabel, a nie ich usuwanie czy tworzenie nowych. Usunięcie tabeli realizowane jest za pomocą komendy <i>DROP</i>, która trwałego eliminuje tabelę z bazy danych, wraz z wszystkimi danymi, które zawiera. Tworzenie nowych tabel odbywa się za pomocą kwerendy <i>CREATE</i>, która definiuje nową strukturę i jest niezbędna, gdy potrzebujemy zacząć od zera lub wprowadzić nowe dane w zgodzie z innymi wymaganiami lub projektami. Natomiast wprowadzanie danych do tabeli zrealizowane jest przy pomocy komendy <i>INSERT</i>, która pozwala na dodawanie nowych rekordów do już istniejących tabel w bazie. Odpowiedzi te mogą prowadzić do mylnych wniosków, ponieważ nie uwzględniają konkretnej funkcjonalności kwerendy <i>ALTER</i</i>, co jest kluczowe dla zrozumienia relacyjnych baz danych. W praktyce, brak zrozumienia roli i zastosowania poszczególnych kwerend SQL może prowadzić do błędów w projektowaniu baz danych oraz ich administracji, co może skutkować utratą danych lub wydajności. Ważne jest zatem, aby jasno rozróżniać te komendy i ich zastosowania w kontekście zarządzania danymi w systemach bazodanowych.

Pytanie 15

Do przechowywania jakich wartości przeznaczony jest typ DECIMAL?

A. liczb rzeczywistych zmiennoprzecinkowych
B. danych tekstowych o określonej długości
C. liczb rzeczywistych stałoprzecinkowych
D. liczb zapisanych w systemie binarnym
Typ DECIMAL przechowuje liczby rzeczywiste STAŁOPRZECINKOWE - z dokładną liczbą miejsc po przecinku, bez zaokrągleń typowych dla typów zmiennoprzecinkowych. Dlatego stosuje się go np. do kwot pieniężnych. Dlatego DECIMAL przechowuje liczby stałoprzecinkowe.

Pytanie 16

Kiedy stosuje się kwerendę SELECT DISTINCT?

A. gdy w wybranej kolumnie wartości nie mają się powtarzać
B. gdy rekordy występują w bazie tylko raz
C. gdy chcemy pogrupować rekordy
D. gdy chcemy posortować rekordy
Pozostałe sytuacje obsługują inne klauzule. Grupowanie rekordów to zadanie GROUP BY, a sortowanie rosnące lub malejące - ORDER BY. DISTINCT nie wybiera też „rekordów istniejących w bazie tylko raz” - on usuwa powtórzenia dopiero w wyniku zapytania.

Pytanie 17

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

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

Pytanie 18

Co spowoduje

DELETE FROM mieszkania WHERE status = 1;
?
A. usunięcie całej tabeli mieszkania
B. usunięcie pola status z tabeli
C. usunięcie rekordów z status = 1 z tabeli mieszkania
D. usunięcie tabel z bazy mieszkania
DELETE kasuje WIERSZE spełniające warunek, a nie całą tabelę (to robi DROP TABLE) ani kolumnę (to ALTER TABLE ... DROP COLUMN). Nie usuwa też innych tabel z bazy. Polecenie usunie rekordy, w których status = 1.

Pytanie 19

Kiedy między dwiema tabelami zachodzi relacja wiele-do-wielu?

A. gdy jednemu wierszowi z A odpowiada dokładnie jeden wiersz z B
B. gdy jednemu wierszowi z A odpowiada wiele wierszy z B
C. gdy wielu wierszom z A odpowiada tylko jeden wiersz z B
D. gdy wielu wierszom z tabeli A odpowiada wiele wierszy z tabeli B
Relacja wiele-do-wielu zachodzi, gdy WIELU wierszom z tabeli A może odpowiadać WIELE wierszy z tabeli B (i odwrotnie) - np. wielu autorów pisze wiele książek wspólnie. W praktyce rozbija się ją na dwie relacje 1..n przez tabelę pośrednią. Zapamiętaj: „wielu z obu stron” = wiele-do-wielu.

Pytanie 20

Jak określa się podzbiór strukturalnego języka zapytań, który dotyczy formułowania zapytań do bazy danych przy użyciu polecenia SELECT?

A. SQL DDL (ang. Data Definition Language)
B. SQL DML (ang. Data Manipulation Language)
C. SQL DCL (ang. Data Control Language)
D. SQL DQL (ang. Data Query Language)
Wybór SQL DML, SQL DDL lub SQL DCL jako odpowiedzi na pytanie dotyczące podzbioru języka SQL, który służy do formułowania zapytań do bazy danych, wskazuje na pewne nieporozumienia dotyczące struktury i funkcji języka SQL. SQL DML (Data Manipulation Language) obejmuje polecenia takie jak INSERT, UPDATE i DELETE, które umożliwiają manipulację danymi w bazie, jednak nie jest to odpowiedź na zapytania, lecz na operacje modyfikujące dane. Z kolei SQL DDL (Data Definition Language) służy do definiowania struktury bazy danych, w tym tworzenia, modyfikowania i usuwania tabel oraz indeksów. Obejmuje polecenia takie jak CREATE, ALTER i DROP, które są kluczowe dla administracji bazy danych, ale nie dotyczą bezpośrednio pobierania danych. SQL DCL (Data Control Language) koncentruje się na zarządzaniu uprawnieniami i dostępem do danych w bazie, obejmując polecenia takie jak GRANT i REVOKE. Każda z tych odpowiedzi wprowadza w błąd, ponieważ nie odnosi się do kluczowych funkcji DQL, które skupiają się na wydobywaniu i analizie danych. Przy wyborze odpowiedzi ważne jest, aby zrozumieć różnice między tymi podzbiorami SQL i ich zastosowanie w praktyce. Typowe błędy myślowe obejmują mylenie manipulacji danymi z ich zapytaniem oraz niezrozumienie roli, jaką każda z tych kategorii pełni w zarządzaniu bazami danych. Kluczowe jest zatem, aby w kontekście pracy z bazami danych dokładnie rozróżniać te funkcje, co wpływa na efektywność i poprawność wykonywanych operacji.

Pytanie 21

Co umożliwia polecenie BACKUP LOG w MS SQL Server?

A. kopię zapasową dziennika transakcji
B. odczyt komunikatów z tworzenia kopii
C. wykonanie pełnej kopii bazy
D. zalogowanie się do kopii zapasowej
Polecenie BACKUP LOG w MS SQL Server tworzy kopię zapasową DZIENNIKA TRANSAKCJI - zapisuje zmiany od ostatniej kopii, co pozwala odtworzyć bazę do konkretnego momentu w czasie. Dlatego BACKUP LOG wykonuje kopię dziennika transakcji.

Pytanie 22

W SQL, aby zabezpieczyć kwerendę CREATE USER przed utworzeniem konta, jeżeli ono już istnieje, należy użyć składni

A. CREATE USER IF NOT EXISTS 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
B. CREATE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
C. CREATE USER OR DROP 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
D. CREATE OR REPLACE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
Odpowiedź 'CREATE USER IF NOT EXISTS 'anna'@'localhost' IDENTIFIED BY 'yu&T%';' jest poprawna, ponieważ zastosowanie klauzuli 'IF NOT EXISTS' pozwala na utworzenie użytkownika tylko w przypadku, gdy konto o podanej nazwie nie istnieje w systemie. Jest to niezwykle użyteczne w praktyce, ponieważ minimalizuje ryzyko wystąpienia błędów związanych z próbą utworzenia użytkownika, który już został wcześniej zdefiniowany, co mogłoby prowadzić do niepotrzebnych komplikacji w zarządzaniu bazą danych. Dzięki temu podejściu administratorzy mogą tworzyć skrypty, które są bardziej elastyczne i odporne na błędy, co jest zgodne z najlepszymi praktykami w zakresie zarządzania bazami danych. Warto także zaznaczyć, że odpowiednia obsługa błędów oraz unikanie zbędnych operacji wpływa na wydajność systemu, co jest kluczowym aspektem w środowiskach produkcyjnych, gdzie każda operacja ma znaczenie dla dostępności i efektywności aplikacji korzystających z bazy danych.

Pytanie 23

W SQL, aby w tabeli Towar dodać kolumnę rozmiar typu znakowego z maksymalną długością 20 znaków, jakie polecenie należy wykonać?

A. ALTER TABLE Towar ALTER COLUMN rozmiar varchar(20)
B. ALTER TABLE Towar DROP COLUMN rozmiar varchar(20)
C. ALTER TABLE Towar ADD rozmiar varchar(20)
D. ALTER TABLE Towar CREATE COLUMN rozmiar varchar(20)
Podane odpowiedzi nie są poprawne z kilku powodów. Odpowiedź sugerująca użycie 'DROP COLUMN' jest myląca, ponieważ to polecenie służy do usuwania istniejącej kolumny z tabeli, a nie dodawania nowej. Usunięcie kolumny bez zrozumienia konsekwencji może prowadzić do utraty danych, co podkreśla znaczenie przemyślenia operacji modyfikujących strukturę bazy danych. Inna odpowiedź, która proponuje 'CREATE COLUMN', jest nieprawidłowa, ponieważ nie jest uznawana za standardową składnię w SQL; nie istnieje polecenie 'CREATE COLUMN'. Zamiast tego, kolumny są dodawane za pomocą 'ADD' w kontekście ALTER TABLE. W przypadku 'ALTER COLUMN' - to polecenie odnosi się do zmiany właściwości już istniejącej kolumny, a nie do dodawania nowej. Dlatego mylenie tych pojęć prowadzi do nieprawidłowych wniosków. Zrozumienie tych różnic jest kluczowe dla poprawnego posługiwania się SQL. Niezrozumienie zasad modyfikacji struktury tabeli może skutkować nieefektywnym zarządzaniem bazą danych oraz błędami w aplikacjach korzystających z danych.

Pytanie 24

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

A. REVOKE CREATE INSERT DELETE ON tabela1 FROM 'anna'@'localhost'
B. REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'
C. REVOKE ALL ON tabela1 FROM 'anna'@'localhost'
D. REVOKE CREATE ALTER DROP ON tabela1 FROM 'anna'@'localhost'
Wszystkie inne odpowiedzi są nieprawidłowe z kilku powodów. W pierwszej z nich, 'REVOKE ALL ON tabela1 FROM 'anna'@'localhost'', przyznawane są wszystkie uprawnienia, co jest sprzeczne z intencją odebrania tylko określonych praw. Użytkownicy powinni być ograniczani jedynie w tych obszarach, gdzie to konieczne. Z kolei odpowiedź 'REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'' zawiera 'UPDATE', co jest związane z danymi, a nie strukturą bazy, co również czyni ją niewłaściwą. Odmowa praw do aktualizacji danych nie jest odpowiednia w kontekście modyfikacji struktury bazy. Z kolei opcja 'REVOKE CREATE INSERT DELETE ON tabela1 FROM 'anna'@'localhost'' ponownie nie odnosi się do struktury bazy, ponieważ odnosi się do manipulacji danymi, nie do struktury. Kluczowym błędem w tym kontekście jest mylenie uprawnień związanych z danymi z uprawnieniami związanymi ze strukturą bazy danych. W zarządzaniu uprawnieniami w MySQL istotne jest zrozumienie różnicy pomiędzy tymi kategoriami, aby skutecznie zabezpieczyć bazę danych. W praktyce dobrym podejściem jest wdrożenie zasady minimalnych uprawnień, co zmniejsza ryzyko nieautoryzowanych zmian w strukturze i danych bazy.

Pytanie 25

W języku SQL aby zmodyfikować dane w tabeli, należy posłużyć się poleceniem

A. JOIN
B. SELECT
C. UPDATE
D. CREATE
Polecenie UPDATE to w SQL podstawowe narzędzie do modyfikowania istniejących danych w tabelach. W praktyce oznacza to, że jeśli chcesz np. zmienić wartość jakiegoś pola dla wybranego rekordu, to właśnie tego polecenia używasz. Przykład z życia: masz tabelę pracowników i ktoś zmienił numer telefonu – nie robisz nowego wpisu, nie tworzysz nowej tabeli, tylko aktualizujesz jedną kolumnę w odpowiednim wierszu. Składnia tego polecenia jest dość intuicyjna: UPDATE nazwa_tabeli SET kolumna=nowa_wartość WHERE warunek. Bardzo ważne jest stosowanie klauzuli WHERE, bo inaczej możesz przez przypadek podmienić dane we wszystkich wierszach tabeli, co niestety zdarza się nawet doświadczonym programistom, zwłaszcza przy pracy na środowiskach testowych. Warto wiedzieć, że SQL-92 (czyli jeden z najważniejszych standardów języka SQL) dokładnie opisuje sposób działania tego polecenia. Często w praktyce spotyka się też połączenie UPDATE z transakcjami, żeby mieć możliwość cofnięcia zmian, gdyby coś poszło nie tak. Moim zdaniem umiejętne stosowanie UPDATE to podstawa pracy z bazami danych – prawie każdy większy system korzysta z tego polecenia na co dzień. Dobrze też pamiętać o bezpieczeństwie i zawsze sprawdzać, czy warunek w WHERE jest poprawny, żeby nie napsuć w danych. Praktyka czyni mistrza i z czasem takie operacje wchodzą w krew.

Pytanie 26

Którym poleceniem w MySQL wyświetli się listę uprawnień nadanych użytkownikowi anna?

A.
SELECT GRANTS FOR anna;
B.
REVOKE GRANTS FROM anna;
C.
SHOW GRANTS FOR anna;
D.
GRANT * TO anna;
Pozostałe polecenia są błędne lub robią co innego. SELECT GRANTS FOR anna to niepoprawna składnia (SELECT odczytuje dane z tabel, nie uprawnienia). REVOKE GRANTS FROM anna ODBIERAŁby prawa, a GRANT * TO anna próbowałby je nadać. Do podejrzenia uprawnień służy SHOW GRANTS FOR anna;.

Pytanie 27

ALTER TABLE transport MODIFY COLUMN rok_produkcji INT;
Wykonanie powyższej kwerendy SQL w bazie MySQL spowoduje:
A. usunięcie kolumny rok_produkcji w tabeli transport.
B. dodanie kolumny rok_produkcji typu INT w tabeli transport.
C. zmianę typu danych w kolumnie rok_produkcji na INT.
D. utworzenie tabeli transport zawierającej kolumnę rok_produkcji.
Poprawnie – polecenie ALTER TABLE ... MODIFY COLUMN w MySQL służy do modyfikowania istniejącej kolumny, a nie do jej tworzenia czy usuwania. W podanym przykładzie baza danych szuka tabeli o nazwie `transport`, a następnie zmienia definicję kolumny `rok_produkcji` tak, aby jej typ danych był `INT`. Jeśli kolumna już istnieje (a musi istnieć, żeby MODIFY zadziałało), to po wykonaniu polecenia dalej będzie miała tę samą nazwę, ale jej typ i właściwości zostaną nadpisane nową definicją. W MySQL warto pamiętać, że przy MODIFY COLUMN trzeba podać pełną definicję kolumny, nie tylko sam typ. Czyli jeśli wcześniej była np. NOT NULL albo miała domyślną wartość, to dobra praktyka jest napisać coś w stylu: `ALTER TABLE transport MODIFY COLUMN rok_produkcji INT NOT NULL DEFAULT 2000;` – inaczej można przypadkiem zgubić część ustawień. W praktyce takie polecenia stosuje się przy zmianach w projekcie bazy: np. najpierw kolumna jest typu VARCHAR, bo ktoś przechowuje tam rok jako tekst, a potem, zgodnie z lepszymi zasadami projektowania, zmienia się to na typ liczbowy INT, żeby można było łatwo filtrować, sortować, robić warunki typu `WHERE rok_produkcji > 2015`. Z mojego doświadczenia dobrze jest przed taką zmianą sprawdzić, czy wszystkie dane da się bezpiecznie skonwertować na liczbę, bo jeśli w kolumnie są jakieś śmieciowe wartości tekstowe, to MySQL może je obciąć albo zamienić na 0, co później robi bałagan w raportach. W środowiskach produkcyjnych takie ALTER TABLE najlepiej wykonywać po zrobieniu kopii zapasowej i często w oknie serwisowym, bo przy dużych tabelach operacja może chwilowo blokować dostęp do danych.

Pytanie 28

W systemie PHP złożono zapytanie SELECT do bazy przy pomocy funkcji mysqli_query. Jaką funkcję powinien wykorzystać użytkownik, aby ustalić liczbę rekordów, które zwróciło to zapytanie?

A. mysqli_num_rows
B. mysqli_connect
C. mysqli_fetch_row
D. mysqli_query
Wybór innych funkcji jako odpowiedzi na pytanie jest niezgodny z ich rzeczywistym przeznaczeniem w kontekście analizy wyników zapytań w PHP. Funkcje takie jak mysqli_fetch_row służą do pobierania pojedynczego wiersza z zestawu wyników i nie dostarczają informacji o łącznej liczbie rekordów. Użycie tej funkcji może prowadzić do błędnych wniosków, gdyż zamiast podać liczbę wyników, zwraca jedynie dane jednego wiersza. Innym przykładem jest mysqli_query, która jest odpowiedzialna za wykonanie zapytania, ale nie oferuje metody na określenie ilości zwróconych rekordów. Podobnie, mysqli_connect jest funkcją do nawiązywania połączenia z bazą danych, co jest zupełnie nieadekwatne w kontekście analizy wyników zapytań. Użytkownicy często mylą te funkcje, ponieważ wszystkie są częścią pakietu MySQLi, jednak każda z nich ma swoje specyficzne zastosowanie. Właściwe zrozumienie roli poszczególnych funkcji jest kluczowe dla efektywnej pracy z bazami danych w PHP. Ignorowanie tego może prowadzić do nieefektywnego kodu oraz problemów z wydajnością aplikacji. Dlatego ważne jest, aby przed przystąpieniem do pisania zapytań zrozumieć, jakie funkcje będą potrzebne i jakie dane chcemy uzyskać.

Pytanie 29

Aby wykonać kopię zapasową bazy danych MySQL, można posłużyć się:

A. modyfikacją danych
B. agregacją danych
C. eksportem bazy
D. importem bazy
Kopię zapasową bazy MySQL tworzy się przez eksport - zapis struktury tabel i danych do pliku (najczęściej .sql). Taki plik zawiera polecenia, które pozwalają później odtworzyć bazę w tym samym stanie, np. po awarii lub przy przenoszeniu na inny serwer. Eksport wykonasz w phpMyAdmin (zakładka Eksport) albo narzędziem mysqldump. Odwrotną operacją, przywracającą dane z pliku, jest import. Do zrobienia kopii zapasowej służy więc eksport bazy.

Pytanie 30

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 OR ostatnieZakupy >= '2022-01-01'
B. WHERE (punkty > 3000 OR liczbaZakupow > 100) AND ostatnieZakupy >= '2022-01'
C. WHERE punkty > 3000 OR liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'
D. WHERE punkty > 3000 AND liczbaZakupow > 100 AND ostatnieZakupy >= '2022-01-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 31

Które polecenie MySQL aktualizuje statystyki tabeli wykorzystywane przez optymalizator zapytań?

A.
BACKUP TABLE
B.
REPAIR TABLE
C.
RESTORE TABLE
D.
ANALYZE TABLE
Pozostałe polecenia robią co innego. REPAIR TABLE próbuje naprawić fizycznie uszkodzoną tabelę - to operacja ratunkowa, nie strojenie wydajności. Polecenia w stylu RESTORE TABLE czy BACKUP TABLE kojarzą się z kopiami zapasowymi i odtwarzaniem danych, a nie ze statystykami optymalizatora (kopie w MySQL robi się raczej narzędziami typu mysqldump). Przeliczenie statystyk rozkładu danych dla planera zapytań wykonuje ANALYZE TABLE, dlatego to ono jest poprawne.

Pytanie 32

Które źródło danych może posłużyć do utworzenia raportu?

A. zapytanie SELECT
B. zapytanie ALTER
C. projekt raportu
D. etykieta
Pozostałe odpowiedzi nie są źródłem danych. Etykieta to element wyglądu raportu (opis pola), a „projekt raportu” to jego konstrukcja, nie dane. Zapytanie ALTER zmienia STRUKTURĘ tabeli i nie zwraca danych. Dane dla raportu dostarcza SELECT.

Pytanie 33

Zgodnie z zasadami ACID dotyczącymi transakcji, wymóg izolacji (ang. isolation) wskazuje, że

A. jeśli dwie transakcje są wykonywane równolegle, to zazwyczaj nie zauważają wprowadzanych przez siebie zmian
B. po zrealizowaniu transakcji system baz danych będzie w stanie spójności
C. pod określonymi warunkami dane modyfikowane przez transakcję mogą zostać anulowane
D. gdy wystąpi konflikt z inną transakcją, obie mogą modyfikować te same dane równocześnie
Po pierwsze, odpowiedź, która sugeruje, że po wykonaniu transakcji system bazy danych będzie spójny, nie odnosi się bezpośrednio do aspektu izolacji. Spójność to w rzeczywistości inne z wymaganych stanów ACID, które koncentruje się na tym, że wszystkie transakcje muszą zapewnić, że system przechodzi z jednego stanu spójnego do innego. Izolacja działa w zupełnie innym kontekście. Kolejna odpowiedź wskazująca na konflikt modyfikacji danych przez różne transakcje sugeruje sytuację, która w rzeczywistości powinna być unika, a nie opisana jako cecha izolacji. Izolacja ma na celu zapobieganie takim konfliktom, a nie ich akceptację. Dodatkowo, odpowiedź mówiąca o wycofywaniu danych pod pewnymi warunkami odnosi się do działania mechanizmu rollback, który jest związany z innym aspektem transakcji – atomowością. Atomowość dotyczy tego, czy cała transakcja zostanie pomyślnie zakończona, czy też w razie problemów zostanie wycofana, ale nie bezpośrednio do izolacji. Powszechny błąd myślowy polega na myleniu tych pojęć i ich wzajemnych interakcji. Właściwe zrozumienie izolacji jako ochrony przed widocznością zmian między transakcjami współbieżnymi jest kluczowe dla projektowania poprawnych i odpornych na błędy systemów baz danych.

Pytanie 34

W SQL klauzula DISTINCT w poleceniu SELECT spowoduje, że otrzymane dane

A. będą zgrupowane według wskazanego pola
B. nie będą zawierały powtórzeń
C. będą spełniały dany warunek
D. zostaną uporządkowane
Niepoprawne odpowiedzi na to pytanie często wynikają z nieporozumienia dotyczącego podstawowych funkcji, jakimi dysponuje SQL. Klauzula DISTINCT ma jedynie na celu usunięcie duplikatów z wyników zapytania, co oznacza, że powinna być używana jedynie w kontekście potrzeby uzyskania unikalnych wartości. Odpowiedzi sugerujące, że DISTINCT grupuje dane, są mylące, ponieważ do grupowania danych służy klauzula GROUP BY, która nie tylko wydziela unikalne rekordy, ale także umożliwia ich agregację i analizę pod kątem określonych kryteriów. Twierdzenie, że DISTINCT sortuje dane, również jest błędne, ponieważ sortowanie osiąga się za pomocą klauzuli ORDER BY, która porządkuje wyniki według zadanych kryteriów. W przypadku stwierdzenia, że DISTINCT spełnia określony warunek, należy zrozumieć, że to nie jest jego funkcja; zamiast tego warunki w zapytaniach SQL wprowadza się za pomocą klauzuli WHERE. W praktyce, zrozumienie właściwego zastosowania DISTINCT jest kluczowe dla efektywnego korzystania z SQL, ponieważ niewłaściwe użycie może prowadzić do nieodpowiednich wyników i nieefektywności w zapytaniach. Dlatego ważne jest, aby pamiętać o różnicach między tymi klauzulami i umieć odpowiednio je stosować w kontekście zapytań, aby uzyskać pożądane rezultaty.

Pytanie 35

W tabeli artykuly przeprowadzono poniższe operacje związane z uprawnieniami użytkownika jan.

GRANT ALL PRIVILEGES ON artykuły TO jan
REVOKE SELECT, UPDATE ON artykuly FROM jan

Jakie będą uprawnienia użytkownika jan po wykonaniu tych operacji?

A. tworzenia tabeli oraz aktualizowania danych w niej
B. tworzenia tabel oraz ich zapełniania danymi
C. aktualizowania informacji oraz przeglądania tabeli
D. przeglądania tabeli
Wybór odpowiedzi dotyczącej "aktualizowania danych i przeglądania tabeli" nie jest poprawny, ponieważ po wykonaniu polecenia REVOKE SELECT, UPDATE ON artykuly FROM jan, jan traci te konkretne uprawnienia. Warto zauważyć, że polecenie GRANT ALL PRIVILEGES przyznaje użytkownikowi szereg uprawnień, ale ich zakres można ograniczyć innymi poleceniami, jak REVOKE. Z tego powodu jan nie ma już możliwości przeglądania tabeli ani jej aktualizowania, co czyni tę odpowiedź nieaktualną. Często w praktyce zawodowej zdarza się, że nadawane są szerokie uprawnienia, a następnie w miarę potrzeby są one ograniczane, co może prowadzić do nieporozumień, jeśli nie zrozumie się działania tych poleceń. Kolejna niepoprawna odpowiedź, która sugeruje "przeglądanie tabeli", również jest błędna z tego samego powodu - jan nie ma takich uprawnień po REVOKE. Ostatnia z odpowiedzi, mówiąca o "tworzeniu tabeli i aktualizowaniu w niej danych", jest niepoprawna, ponieważ użytkownik jan nie ma już prawa aktualizacji danych po wycofaniu tych uprawnień. Zrozumienie mechanizmów zarządzania uprawnieniami jest kluczowe w pracy z bazami danych, aby uniknąć przypisania użytkownikom większych niż potrzebne przywilejów, co mogłoby prowadzić do nieautoryzowanego dostępu lub usunięcia danych.

Pytanie 36

Poniższe zapytanie SQL ma na celu:

UPDATE Uczen SET id_klasy = id_klasy + 1;
A. przypisać wartość kolumny id_klasy jako 1 dla wszystkich wpisów w tabeli Uczen
B. ustawić wartość pola Uczen na 1
C. zwiększyć o jeden wartość kolumny id_klasy dla wszystkich wpisów w tabeli Uczen
D. zwiększyć o jeden wartość pola Uczen
Wybierając błędne odpowiedzi, można wpaść w pułapki związane z interpretacją polecenia SQL. Na przykład, stwierdzenie, że polecenie zwiększa wartość pola Uczen, jest mylące, ponieważ nie odnosi się do konkretnej kolumny. W SQL każde polecenie musi być precyzyjne, a używanie ogólnych terminów prowadzi do nieporozumień. Mówiąc o "ustawieniu na 1 wartości pola Uczen", mylnie sugeruje się, że wszystkie dane są resetowane do jednej wartości, co jest całkowicie błędne w kontekście podanego polecenia. Kolejną nieprawidłową koncepcją jest pomysł, iż polecenie ustawia wartość kolumny na 1 dla wszystkich rekordów. W rzeczywistości, aktualizuje ono istniejące wartości, zwiększając je o jeden, a nie ustawia ich na stałą wartość. Takie nieprecyzyjne zrozumienie języka SQL może prowadzić do katastrofalnych skutków w praktycznych zastosowaniach baz danych, w tym do utraty danych lub niepoprawnych aktualizacji, co jest sprzeczne z dobrymi praktykami zarządzania danymi. Kluczowe jest zrozumienie, że każdy element w SQL odgrywa istotną rolę, a nieprecyzyjność prowadzi do błędów, które mogą być czasochłonne do naprawienia. Z tego powodu, w pracy z SQL, należy zwracać znaczną uwagę na szczegóły oraz logiczną strukturę zapytań.

Pytanie 37

Która funkcja SQL NIE przyjmuje żadnych argumentów?

A.
YEAR()
B.
UPPER()
C.
NOW()
D.
LEN()
Pozostałe funkcje BEZ argumentu nie mają sensu - muszą coś dostać do przetworzenia. UPPER() potrzebuje tekstu, by zamienić go na wielkie litery. LEN() potrzebuje tekstu, by policzyć znaki. YEAR() potrzebuje daty, by wyciągnąć z niej rok. Pusty nawias akceptuje tylko NOW().

Pytanie 38

Kompresja bezstratna pliku graficznego zapewnia:

A. zachowanie pierwotnej jakości grafiki
B. plik większy niż oryginał
C. wyższą jakość niż oryginał
D. mniejszą liczbę warstw
Pozostałe odpowiedzi błędnie opisują skutek kompresji bezstratnej. Nie poprawia ona jakości ponad oryginał - nie da się „dorobić” informacji, której nie było; co najwyżej wiernie ją zachowuje. Liczba warstw obrazu (cecha plików projektowych edytorów) nie ma związku z kompresją zapisanego pliku. Zwiększenie rozmiaru również przeczy idei kompresji, której celem jest plik mniejszy. Kompresja bezstratna zachowuje pierwotną jakość grafiki, dlatego ta odpowiedź jest poprawna.

Pytanie 39

Które zapytanie SQL zwróci wszystkie kolumny z tabeli produkty?

A.
SELECT * FROM produkty;
B.
GET * FROM produkty;
C.
FETCH * FROM produkty;
D.
SELECT produkty FROM *;
Aby pobrać wszystkie kolumny tabeli, w miejscu listy pól wstawia się gwiazdkę: SELECT * FROM produkty;. Symbol * znaczy „wszystkie pola”, więc zapytanie zwróci pełne wiersze tabeli produkty. Dlatego ta kwerenda jest poprawna.

Pytanie 40

Z tabel Artykuly oraz Autorzy należy wyodrębnić tylko nazwiska autorów oraz tytuły ich artykułów, które uzyskały ocenę 5. Odpowiednia kwerenda do pozyskania tych informacji ma postać

Ilustracja do pytania
A. SELECT nazwisko, tytul FROM autorzy JOIN artykuly ON autorzy.id = artykuly.id;
B. SELECT nazwisko, tytul FROM autorzy JOIN artykuly ON autorzy.id = autorzy_id;
C. SELECT nazwisko, tytul FROM autorzy JOIN artykuly ON autorzy.id = autorzy_id WHERE ocena = 5;
D. SELECT nazwisko, tytul FROM autorzy, artykuly WHERE ocena == 5;
Odpowiedź SELECT nazwisko tytul FROM autorzy JOIN artykuly ON autorzy.id = autorzy_id WHERE ocena = 5; jest poprawna ponieważ precyzyjnie wykorzystuje konstrukcję SQL do połączenia tabel Autorzy i Artykuly. JOIN łączy te tabele na podstawie klucza obcego autorzy_id w tabeli Artykuly który odpowiada kluczowi głównemu id w tabeli Autorzy. To pozwala na uzyskanie pełnej informacji o autorach i ich artykułach. Klauzula WHERE ocena = 5 filtruje wyniki i zwraca jedynie te które mają ocenę równą 5. Jest to standardowe podejście w SQL do pobierania danych na podstawie określonych kryteriów co jest bardzo efektywne w zarządzaniu dużymi zbiorami danych. Praktyczne zastosowanie tego typu kwerend obejmuje na przykład systemy rekomendacji artykułów gdzie tylko dobrze ocenione treści są pokazywane użytkownikom. Stosowanie takich kwerend zgodnie z najlepszymi praktykami pozwala na utrzymanie wydajności bazy danych oraz na zapewnienie integralności danych co jest kluczowe w profesjonalnym zarządzaniu bazami danych.