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

Egzamin niezdany

Wynik: 16/40 punktów (40,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

Instrukcja zapisana w SQL, przedstawiona poniżej, ilustruje kwerendę:

UPDATE katalog SET katalog.cena = [cena]*1.1;
A. krzyżowej
B. aktualizującej
C. usuwającej
D. dołączającej
Odpowiedź "aktualizującej" jest prawidłowa, ponieważ instrukcja SQL, którą przedstawiono, służy do modyfikacji istniejących danych w tabeli. Kwerenda ta używa polecenia UPDATE, które jest standardowym poleceniem w SQL do zmiany wartości w jednej lub wielu kolumnach w wybranych wierszach tabeli. W tym przypadku, kwerenda zwiększa wartość ceny o 10% dla wszystkich rekordów w tabeli 'katalog'. Takie operacje są powszechnie stosowane w zarządzaniu bazami danych, szczególnie w kontekście aktualizacji cen produktów, co jest kluczowe w handlu elektronicznym i zarządzaniu zapasami. Ważne jest również, aby przy każdej aktualizacji danych uwzględnić warunki, jeśli zmiana ma dotyczyć tylko określonych wierszy, co można osiągnąć poprzez dodanie klauzuli WHERE. Ponadto, dobrym nawykiem jest zawsze tworzenie kopii zapasowych danych przed przeprowadzeniem masowych aktualizacji, aby zminimalizować ryzyko utraty informacji.

Pytanie 2

Atrybut autor w tabeli ksiazka oznacza

CREATE TABLE ksiazka (
  id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  tytul VARCHAR(200),
  autor SMALLINT UNSIGNED NOT NULL,
  CONSTRAINT `dane` FOREIGN KEY (autor) REFERENCES autorzy(id)
);
A. atrybut typu tekstowego zawierający informacje o autorze
B. kluczem podstawowym tabeli ksiazka
C. atrybut używany w relacji z tabelą dane
D. kluczem obcym powiązanym z tabelą autorzy
Pole autor w tabeli ksiazka nie powinno być utożsamiane z kluczem głównym ponieważ klucz główny jest unikalnym identyfikatorem rekordu w tabeli a w tym przypadku tę rolę pełni pole id Klucz główny jest niezbędny do jednoznacznej identyfikacji każdego wiersza co jest fundamentalne dla operacji takich jak aktualizacja czy usuwanie danych Nie jest również polem typu napisowego chociaż jego nazwa mogłaby sugerować zawartość tekstową Pole autor jest zdefiniowane jako SMALLINT co oznacza że przechowuje liczby całkowite i jest używane do przechowywania identyfikatorów autorów w tabeli ksiazka Ponadto nie stanowi pola wykorzystywanego przy relacji z tabelą dane ponieważ to odniesienie było tylko przykładem nazwy constraint w definicji klucza obcego W projektowaniu baz danych istotne jest aby rozumieć różnice pomiędzy typami kluczy oraz ich rolą w strukturze bazy danych Klucze główne i obce pełnią kluczowe role w zarządzaniu relacjami oraz w zachowywaniu integralności danych co jest kluczowe dla utrzymania spójności i niezawodności aplikacji korzystających z tych danych

Pytanie 3

Obiektem w bazie danych, który wykorzystywany jest do podsumowywania, prezentacji oraz drukowania danych, jest

A. zestawienie
B. zapytanie
C. raport
D. formularz
Raport jest obiektem baz danych, który służy do podsumowywania, wyświetlania oraz wydruków danych. Jego główną funkcją jest agregacja i prezentacja informacji w sposób przystępny dla użytkownika. Raporty mogą być wykorzystywane do analizy danych, prezentacji wyników oraz podejmowania decyzji biznesowych. Przykładem zastosowania raportu może być generowanie miesięcznego raportu sprzedaży, który zawiera szczegółowe informacje o przychodach, kosztach oraz zyskach w danym okresie. Z perspektywy dobrych praktyk, raporty powinny być projektowane w taki sposób, aby były czytelne i zrozumiałe, a ich struktura powinna być zgodna z wymaganiami użytkowników. W kontekście standardów, raporty mogą być również generowane automatycznie przy użyciu narzędzi business intelligence, co pozwala na zwiększenie efektywności i dokładności analiz. Dobrze zdefiniowane raporty przyczyniają się do lepszego zrozumienia zbiorów danych oraz wspierają procesy decyzyjne w organizacji.

Pytanie 4

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_fetch_row
B. mysqli_query
C. mysqli_num_rows
D. mysqli_connect
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 5

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

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

Pytanie 6

Czego nie należy robić, aby zabezpieczyć serwer bazy danych przed atakami hakerów?

A. defragmentacja dysków.
B. blokowanie portów związanych z bazą danych.
C. używanie skomplikowanych haseł do bazy.
D. aktywacja zapory.
Defragmentacja dysków nie jest bezpośrednio związana z zabezpieczaniem serwera bazy danych przed atakami hakerskimi. Choć defragmentacja może poprawić wydajność systemu plików poprzez uporządkowanie fragmentów plików na dysku, nie ma wpływu na kwestie bezpieczeństwa. Przykłady skutecznych działań w zakresie zabezpieczeń obejmują włączenie zapory, co stanowi pierwszą linię obrony, blokowanie portów, które mogą być wykorzystywane przez potencjalnych intruzów, oraz stosowanie złożonych haseł, co minimalizuje ryzyko nieautoryzowanego dostępu. W kontekście zarządzania bezpieczeństwem baz danych, kluczowe jest przestrzeganie najlepszych praktyk, takich jak regularne aktualizacje oprogramowania, monitorowanie logów dostępu oraz stosowanie zasad minimalnych uprawnień. Właściwe zabezpieczenia powinny być wdrażane zgodnie z wytycznymi standardów takich jak ISO/IEC 27001.

Pytanie 7

Które dane z 8 rekordów wpisanych do tabeli zwierzeta zostaną wyświetlone w wyniku podanego poniżej zapytania SQL?

SELECT imie FROM zwierzeta WHERE rodzaj = 2 AND szczepienie = 2016;

idrodzajimiewlascicielszczepienieopis
11FafikAdam Kowalski2016problemy z uszami
21BrutusAnna Wysocka2016zapalenie krtani
41SabaMonika Nowak2015antybiotyk
51AlmaJan KowalewskiNULLantybiotyk
62FigaroAnna KowalskaNULLproblemy z uszami
72DikaKatarzyna Kowal2016operacja
82FuksJan Nowak2016antybiotyk
A. Figaro, Dika, Fuks.
B. Fafik, Brutus, Dika, Fuks.
C. Dika, Fuks.
D. Anna Kowalska, Jan Nowak.
Gratulacje! Twoja odpowiedź była poprawna. Wybrałeś 'Dika, Fuks.', co jest prawidłowym wynikiem dla podanego zapytania SQL. Zapytanie przeszukuje bazę danych zwierząt z podziałem na pewne kryteria - w tym przypadku są to zwierzęta o rodzaju, który odpowiada 2 oraz które były szczepione w 2016 roku. Wśród wszystkich rekordów w tabeli tylko 'Dika' i 'Fuks' spełniają te kryteria, dlatego tylko one są wyświetlane. To pokazuje, jak potężne i elastyczne mogą być zapytania SQL - możemy przeszukiwać ogromne ilości danych, stosując różne warunki, aby otrzymać dokładnie to, czego szukamy. Zrozumienie i umiejętne wykorzystanie takich zapytań jest kluczowe w pracy z bazami danych. Pamiętaj, że SQL pozwala nie tylko na pobieranie danych, ale również na ich modyfikację, usuwanie oraz dodawanie nowych rekordów do bazy. Spróbuj teraz zastosować swoją wiedzę w praktycznych zadaniach!

Pytanie 8

W formularzu dokumentu PHP znajduje się pole <input name="im">. Po tym, jak użytkownik wprowadzi ciąg znaków "Janek", aby dodać zawartość tego pola do bazy danych, w tablicy $_POST obecny jest element

A. im z indeksem Janek
B. Janek z następnym numerem indeksu
C. im z następnym numerem indeksu
D. Janek o indeksie im
W analizowanym pytaniu niepoprawne odpowiedzi wskazują różne błędne koncepcje dotyczące działania PHP i struktury tablicy $_POST. Przede wszystkim, w systemach opartych na PHP, po przesłaniu formularza, wartości pól formularza są przekazywane do tablicy $_POST, gdzie klucze odpowiadają nazwom pól w formularzu, a ich wartości odpowiadają użytkownikowi wprowadzonym danym. Odpowiedzi sugerujące, że "im" może mieć inny typ indeksu, jak "Janek" lub numer indeksu, są nieprecyzyjne i mylące. Klucz w tablicy $_POST to nazwa pola, co oznacza, że jest stały i niezmienny, niezależnie od wartości, którą użytkownik wprowadza. Ponadto, odpowiedzi, które sugerują istnienie "kolejnego numeru indeksu", mogą prowadzić do błędnego rozumienia konceptu tablic asocjacyjnych w PHP. Tablice asocjacyjne działają na zasadzie klucz-wartość, co oznacza, że klucz (w tym wypadku "im") jest zawsze powiązany z jedną wartością (tu: "Janek"). Błędne myślenie może również wynikać z nieznajomości podstaw PHP, gdzie wiele osób myli pojęcia klucza i wartości lub nie rozumie, że klucz jest stały i determinowany przez atrybut "name" w formularzu, a nie przez wartość wprowadzoną przez użytkownika. Zrozumienie tej zasadniczej różnicy jest kluczowe dla prawidłowego przetwarzania danych w formularzach oraz budowy bezpiecznych aplikacji webowych.

Pytanie 9

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 FROM Pacjenci WHERE wiek<18 AND lekarz_id=6
C. SELECT imie, nazwisko WHERE wiek<18 AND lekarz_id=6
D. SELECT imie, nazwisko WHERE wiek<18 OR lekarz_id=6
Aby uzyskać raport z tabeli Pacjenci, w którym znajdują się wyłącznie imiona i nazwiska pacjentów poniżej 18 roku życia zapisanych do lekarza o id równym 6, należy użyć następującej kwerendy SQL: SELECT imie, nazwisko FROM Pacjenci WHERE wiek<18 AND lekarz_id=6. Kluczowe w tej kwerendzie jest zastosowanie operatora AND, który pozwala na jednoczesne spełnienie obu warunków. W SQL, operator AND łączy dwa warunki, które muszą być prawdziwe, aby dany wiersz został uwzględniony w wynikach. Operator OR byłby nieodpowiedni, ponieważ mógłby zwrócić pacjentów, którzy są młodsi niż 18 lat, ale zapisani do innych lekarzy, co nie spełnia wymagań zadania. Ta kwerenda jest zgodna z ANSI SQL, który jest standardem dla zapytań do baz danych, a także dobrze ilustruje zasady filtracji danych w kontekście relacyjnych baz danych. Przykład takiej tabeli mógłby wyglądać następująco: imie: 'Jan', nazwisko: 'Kowalski', wiek: 17, lekarz_id: 6. W tym przypadku, zapytanie zwróciłoby imię i nazwisko Jana Kowalskiego, ponieważ spełnia on oba warunki.

Pytanie 10

Model, w którym wszystkie informacje są zgromadzone w jednej tabeli, określa się jako struktura prostych baz danych

A. jednorodnym
B. relacyjnym
C. hierarchicznym
D. sieciowym
No więc, wybór modelu sieciowego mija się z celem, bo ten model opiera się na strukturze grafik, gdzie dane są przechowywane z różnymi relacjami między sobą. Model sieciowy pozwala na tworzenie bardziej skomplikowanych więzi niż te w modelu jednorodnym, co jest fajne w systemach, które potrzebują lepszego zarządzania danymi. A model relacyjny też tu nie pasuje, bo on działa na relacjach między tabelami i wykorzystuje klucze do łączenia danych z różnych tabel – to już jest przeciwieństwo modelu jednorodnego. Model hierarchiczny natomiast buduje dane jak drzewo, gdzie każdy element może mieć pod-elementy, co też nie pasuje do prostego modelu jednorodnego. Każdy z tych modeli ma swoje zastosowanie i plusy, ale żaden z nich nie oddaje idei modelu jednorodnego z danymi w jednej tabeli. Warto pamiętać, że dobry wybór modelu danych to klucz do łatwiejszej pracy z bazą, a zrozumienie różnic między nimi naprawdę wpływa na projektowanie systemów informatycznych.

Pytanie 11

Jaką właściwość pola w tabeli powinno się ustawić, aby akceptowało ono wyłącznie dane liczbowe?

Ilustracja do pytania
A. Regułę sprawdzania poprawności
B. Tagi inteligentne
C. Maskę wprowadzania
D. Wartość domyślną
Tagi inteligentne są narzędziem umożliwiającym szybki dostęp do dodatkowych funkcji lub opcji związanych z danymi w polu. Nie mają jednak zdolności do ograniczania samej zawartości pola w kontekście dozwolonych znaków. Ich rola jest raczej wspomagająca użytkownika poprzez dodawanie kontekstowych opcji, ale nie dotyczą bezpośrednio walidacji danych. Wartość domyślna to z kolei predefiniowana wartość, jaką pole przyjmuje w momencie tworzenia nowego rekordu, jednak nie wpływa na to, jakie dane użytkownik może wprowadzić. Jest użyteczna do ułatwienia tworzenia danych, ale nie służy do ograniczania formatu wprowadzanych danych. Chociaż reguła sprawdzania poprawności może być stosowana do określania, jakie dane są uznawane za poprawne, jej główną rolą jest weryfikacja już wprowadzonych danych, a nie ich formatowanie w trakcie wprowadzania. Reguły te mogą informować o błędach po wprowadzeniu danych, lecz nie zapobiegają samemu wprowadzaniu błędnych danych. Wiele osób może mylnie sądzić, że reguła sprawdzania poprawności i maska wprowadzania pełnią podobne funkcje, jednak maska działa na poziomie interfejsu wprowadzania, wymuszając określony format w czasie rzeczywistym, podczas gdy reguła działa retrospektywnie. Zrozumienie tych różnic pozwala na odpowiednie zastosowanie tych narzędzi w projektowaniu baz danych, co skutkuje lepszym zarządzaniem jakością danych oraz zwiększeniem intuicyjności interfejsu użytkownika. Stosowanie masek wprowadzania jest szczególnie korzystne w kontekście aplikacji z dużą ilością danych liczbowych, gdzie precyzja jest kluczowa, a reguły poprawności lepiej sprawdzają się w kontekście logicznych zależności pomiędzy polami danych. To rozróżnienie jest kluczowe dla osiągnięcia wysokiej jakości danych i łatwej obsługi w systemach informatycznych.

Pytanie 12

W programie MS Access w ustawieniach pola klasa należy określić maskę wprowadzania danych. Jaką maskę należy ustawić, aby dane wprowadzone składały się z trzech znaków w formacie: obowiązkowa cyfra, następnie dwie obowiązkowe litery?

Ogólne
Rozmiar pola3
Format
Maska wprowadzania
Tytuł
Wartość domyślna
Reguła spr. poprawności
Tekst reguły spr. poprawności
WymaganeNie
Zerowa dł. dozwolonaTak
IndeksowaneNie
Kompresja UnicodeTak
Tryb IMEBez formantu
Tryb zdania edytora IMEBrak
Tagi inteligentne
A. 000
B. 0CC
C. 0LL
D. CLL
W MS Access maska wprowadzania danych jest używana do kontrolowania formatu danych wprowadzanych do pola. Dla pola, w którym dane muszą mieć postać jednej cyfry, a następnie dwóch liter, odpowiednia maska to 0LL. Zero (0) oznacza, że na tej pozycji musi znajdować się cyfra i jest to wymóg obowiązkowy. Litera L oznacza, że na tej pozycji musi znajdować się litera i jest to również wymóg obowiązkowy. W ten sposób maska 0LL wymusza, aby dane były dokładnie w formacie jednej cyfry i dwóch liter. Praktyczne zastosowanie tego typu maski może być widoczne w sytuacjach, gdzie istnieje konieczność katalogowania produktów, gdzie oznaczenie musiałoby zawierać numer identyfikacyjny w postaci cyfry i skrót literowy identyfikujący kategorię. Takie podejście do formatowania danych zapewnia spójność i poprawność danych wprowadzanych do bazy, zgodnie z dobrymi praktykami zarządzania danymi, co jest kluczowe w systemach bazodanowych, gdzie dane są często przetwarzane i analizowane.

Pytanie 13

GRANT CREATE, ALTER ON sklep.* TO adam; Zakładając, że użytkownik adam nie dysponował wcześniej żadnymi uprawnieniami, to polecenie SQL przyzna mu prawa jedynie do

A. tworzenia oraz modyfikacji struktury w tabeli sklep
B. wstawiania oraz modyfikacji danych w tabeli sklep
C. wstawiania oraz modyfikacji danych we wszystkich tabelach bazy sklep
D. tworzenia oraz modyfikacji struktury wszystkich tabel w bazie sklep
Polecenie SQL 'GRANT CREATE, ALTER ON sklep.* TO adam;' przyznaje użytkownikowi adam prawa do tworzenia i modyfikowania struktury wszystkich tabel w bazie danych o nazwie 'sklep'. W kontekście zarządzania bazami danych, przyznawanie takich uprawnień jest kluczowe dla realizacji zadań związanych z projektowaniem i rozbudową bazy. Przykładowo, gdyby adam potrzebował dodać nową kolumnę do istniejącej tabeli lub utworzyć nową tabelę, mógłby to zrobić dzięki tym prawom. Z perspektywy bezpieczeństwa, nadawanie takich uprawnień powinna być starannie przemyślane, aby uniknąć nieautoryzowanych zmian w strukturze bazy. W praktyce, w sytuacjach, gdy wiele osób współpracuje nad projektem, zaleca się przyznawanie minimalnych uprawnień, które są niezbędne do wykonania określonych zadań. W związku z tym, wykorzystanie polecenia GRANT w sposób odpowiadający wymaganiom projektu jest najlepszą praktyką w zakresie administracji bazami danych.

Pytanie 14

W podanym fragmencie zapytania w języku SQL, komenda SELECT jest używana do zwrócenia SELECT COUNT(wartosc) FROM …

A. summy w kolumnie wartosc
B. średniej wartości z tabeli
C. ilości wierszy
D. średniej w kolumnie wartosc
No, trochę jest tu pomyłka. Ludzie często mylą to zapytanie SELECT COUNT(wartosc) z sumowaniem wartości, co nie jest do końca poprawne. Funkcja COUNT nie sumuje wartości, ona tylko liczy, ile jest niepustych wierszy. Więc jeżeli ktoś twierdzi, że to daje średnią, to wprowadza w błąd – średnią liczymy z pomocą funkcji AVG, a nie COUNT. W kolumnie 'wartosc' mogą być różne liczby, a suma wartości nie ma wiele wspólnego z tym, ile jest wierszy. Dobrze jest pamiętać, że średnia to coś innego niż liczba wierszy, co jest ważne do zrozumienia, jak działają zapytania w SQL. Jeśli ktoś myli te funkcje, to może się zgubić w analizie danych. Więc ogólnie mówiąc, warto wiedzieć, czym różnią się COUNT, AVG i inne funkcje agregujące, bo to kluczowe do ogarnięcia pracy z bazami danych.

Pytanie 15

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

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

Pytanie 16

Według którego parametru oraz dla ilu tabel zostaną zwrócone wiersze na liście w wyniku przedstawionego zapytania?

SELECT * FROM producent, hurtownia, sklep, serwis WHERE
  producent.nr_id = hurtownia.nr_id AND
  producent.wyrob_id = serwis.wyrob_id AND
  hurtownia.nr_id = sklep.nr_id AND
  sklep.nr_id = serwis.nr_id AND
  producent.nr_id = 1;
A. Według parametru nr id dla wszystkich tabel.
B. Według parametru nr id wyłącznie dla trzech tabel.
C. Według parametru wyrób Jd wyłącznie dla trzech tabel.
D. Według parametru wyrób id dla wszystkich tabel.
Wybrana odpowiedź jest niepoprawna. Wszystkie tabelki są łączone przez wartość kolumny nr id, a nie konkretnie przez 'wyrób id' lub 'wyrób Jd'. Ważne jest, aby pamiętać, że zapytanie SQL odnosi się do wszystkich tabel, a nie tylko do trzech. W niektórych odpowiedziach może wystąpić błąd, polegający na myśleniu, że zapytanie dotyczy tylko trzech tabel, podczas gdy w rzeczywistości dotyczy ono czterech: producent, hurtownia, sklep i serwis. Ponadto, zrozumienie, jakie konkretne parametry są używane do zwracania wierszy, jest kluczowe dla zrozumienia, jak działa zapytanie. Zrozumienie tego, jakie parametry są używane w zapytaniu SQL, jest kluczowe dla zrozumienia, jakie dane są zwracane i dlaczego. Niewłaściwe zrozumienie tego, jakie parametry są używane w zapytaniu, może prowadzić do niewłaściwego zrozumienia, jakie dane są zwracane i dlaczego. Pamiętaj, że idealnym celem jest nie tylko zrozumienie, jak działa zapytanie, ale także zrozumienie, dlaczego zwraca konkretne dane i jak te dane są związane z naszymi potrzebami programistycznymi.

Pytanie 17

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

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

Pytanie 18

Instrukcja ```REVOKE SELECT ON nazwa1 FROM nazwa2``` w SQL pozwala na

A. przyznawanie uprawnień zgodnie z określonym schematem
B. odbieranie przyznanych uprawnień użytkownikowi
C. usunięcie użytkownika z bazy danych
D. przyznawanie dostępu do tabeli
Odpowiedzi sugerujące nadawanie uprawnień są błędne, ponieważ REVOKE jest poleceniem służącym do odbierania, a nie przyznawania praw. Nadawanie uprawnień w SQL realizowane jest za pomocą komendy GRANT, która działa w odwrotny sposób, przyznając określone uprawnienia użytkownikom. W kontekście bezpieczeństwa danych, mylenie tych dwóch operacji może prowadzić do poważnych luk w zabezpieczeniach systemu baz danych. Użytkownicy mogą czasami myśleć, że REVOKE może być używane do usuwania praw, ale dotyczy to tylko odbierania wcześniejszych przyznanych uprawnień, a nie nadawania ich. Dodatkowo, są też odpowiedzi, które nawiązują do usuwania użytkownika z bazy danych; tego nie można osiągnąć za pomocą REVOKE, ponieważ to polecenie nie zajmuje się zarządzaniem samymi kontami użytkowników, a jedynie ich uprawnieniami. Ważne jest, aby znać różnice między tymi operacjami oraz ich zastosowanie w praktyce. Nieprawidłowe zrozumienie tych koncepcji może prowadzić do nieefektywnego zarządzania dostępem, co w konsekwencji naraża system na nieautoryzowany dostęp i potencjalne wycieki danych. Dlatego kluczowe jest, aby każdy administrator baz danych miał solidne podstawy dotyczące zarządzania uprawnieniami i stosował odpowiednie praktyki w codziennej pracy.

Pytanie 19

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

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

Pytanie 20

Jakie parametry trzeba przekazać do polecenia PHP, aby wprowadzić dane do bazy?

mysqli_query($zm1, $zm2);
A. id wiersza w $zm1 oraz zapytanie INSERT INTO w $zm2
B. NULL w $zm1, aby baza mogła zapisać tam kod błędu oraz zapytanie SELECT w $zm2
C. identyfikator połączenia z bazą danych w $zm1 oraz zapytanie INSERT INTO w $zm2
D. identyfikator połączenia z bazą danych w $zm1 oraz zapytanie SELECT w $zm2
Problem ze zrozumieniem jak należy przekazywać parametry do funkcji mysqli_query może wynikać z niezrozumienia struktury połączenia z bazą danych i operacji jakie można na niej wykonywać. Pierwszy błędny pomysł zakłada użycie zapytania SELECT które służy do pobierania danych a nie ich dodawania. Stąd nie pasuje do kontekstu wstawiania danych. Identyfikator połączenia to kluczowy element oznaczający uchwyt do sesji z bazą a nie id wiersza który w tym kontekście nie ma zastosowania. Próba użycia NULL jako parametru wskazuje na błędne zrozumienie mechanizmów obsługi błędów w PHP. Bazy danych nie zapisują kodów błędów w zmiennej przekazywanej do zapytania. Takie podejście świadczy o braku świadomości jak zarządzać błędami w programowaniu z wykorzystaniem PHP gdzie standardem jest analiza wartości zwracanych przez funkcje i wykorzystanie funkcji takich jak mysqli_error do diagnozowania problemów. W kontekście wstawiania danych do bazy poprawne rozumienie mechanizmu polega na znajomości struktury SQL i obsługi połączeń z bazą co jest fundamentalne dla efektywnej pracy z bazami danych w PHP. Zrozumienie tych koncepcji pozwala na bezpieczne i skuteczne wykonywanie operacji na danych a także na efektywne diagnozowanie i obsługę błędów dzięki czemu aplikacje są bardziej odporne na awarie i ataki zewnętrzne co jest kluczowe dla ich stabilności i bezpieczeństwa.

Pytanie 21

Wskaż polecenie SQL, które dodaje kolumnę miesiacSiewu do już istniejącej tabeli rośliny

A. INSERT INTO rosliny Values (miesiacSiewu int)
B. CREATE TABLE rosliny {miesiacSiewu int}
C. ALTER TABLE rosliny ADD miesiacSiewu int
D. UPDATE rosliny ADD miesiacSiewu int
Polecenie SQL 'ALTER TABLE rosliny ADD miesiacSiewu int;' to całkiem sensowny sposób na dodanie nowej kolumny do tabeli w bazie danych. Gdy chcemy coś zmieniać w tabeli, to 'ALTER TABLE' jest tym, czego szukamy, bo pozwala nam modyfikować tabelę bez jej usuwania. Dodając kolumnę 'miesiacSiewu', przechowamy dane typu całkowitego (int), co idealnie pasuje do wartości miesięcy. Dzięki temu poleceniu możemy łatwo dostosować strukturę bazy do potrzeb aplikacji. Po jego wykonaniu, w każdej chwili można już wrzucać dane do nowej kolumny. To by się na pewno przydało przy analizie danych dotyczących upraw. W SQL to w sumie standard, więc działa w większości systemów jak MySQL czy PostgreSQL.

Pytanie 22

Aby dodać wpis do tabeli Pracownicy, konieczne jest użycie polecenia SQL

A. INSERT (Jan), (Kowalski) INTO TABLE Pracownicy;
B. INSERT VALUES Pracownicy INTO (Jan, Kowalski);
C. INSERT VALUES (Jan; Kowalski) INTO Pracownicy;
D. INSERT INTO Pracownicy VALUES ("Jan", "Kowalski");
Odpowiedź "INSERT INTO Pracownicy VALUES ("Jan", "Kowalski");" jest poprawna, ponieważ jest zgodna z podstawową składnią języka SQL służącego do dodawania nowych rekordów do tabeli. Polecenie INSERT INTO jest używane w celu wstawienia nowych danych do określonej tabeli w bazie danych, a wartości, które mają zostać dodane, umieszczane są w nawiasach, oddzielone przecinkami. W tym przypadku dodajemy dwa pola: imię oraz nazwisko pracownika. Wartości są otoczone cudzysłowami, co jest wymagane dla typów danych tekstowych. Taki zapis jest zgodny z normami SQL i jest najlepszą praktyką, gdyż zapewnia jasność i jednoznaczność operacji. Przykładowo, w rzeczywistych aplikacjach zarządzania danymi w firmach, często spotykamy się z sytuacjami, gdzie dodawanie nowych pracowników do bazy danych jest rutynowym zadaniem, a zrozumienie poprawnej składni SQL jest kluczowe dla efektywnej pracy. Warto również pamiętać, że korzystanie z parametrów w zapytaniach SQL w aplikacjach produkcyjnych zwiększa bezpieczeństwo danych i minimalizuje ryzyko ataków typu SQL Injection.

Pytanie 23

Jakie słowo kluczowe w SQL należy zastosować, aby usunąć powtarzające się rekordy?

A. GROUP BY
B. DISTINCT
C. ORDER BY
D. LIKE
Słowo kluczowe DISTINCT jest używane w języku SQL do eliminowania duplikatów z wyników zapytań. Gdy zastosujemy DISTINCT w zapytaniu SELECT, baza danych zwróci tylko unikalne wiersze, co jest niezwykle przydatne, gdy chcemy uzyskać listę bez powtarzających się wartości. Na przykład, jeśli mamy tabelę 'klienci' z kolumną 'miasto', a nasze zapytanie brzmi: 'SELECT DISTINCT miasto FROM klienci;', wówczas wynik będzie zawierał tylko unikalne nazwy miast, eliminując wszelkie duplikaty. To podejście nie tylko upraszcza analizę danych, ale również poprawia wydajność zapytań w wielu przypadkach, zwłaszcza gdy przetwarzamy duże zbiory danych. Użycie DISTINCT jest zgodne z najlepszymi praktykami w zakresie optymalizacji baz danych, ponieważ pozwala zapobiegać przypadkowemu wprowadzaniu niepotrzebnych danych podczas analizy. Warto także zauważyć, że DISTINCT działa na całym zestawie kolumn w zapytaniu. Oznacza to, że jeśli wybierzemy wiele kolumn z DISTINCT, unikalne wiersze będą określane na podstawie kombinacji wartości we wszystkich tych kolumnach, co daje jeszcze większą kontrolę nad wynikami zapytania.

Pytanie 24

Wskaż PRAWIDŁOWE stwierdzenie dotyczące polecenia: CREATE TABLE IF NOT EXISTS ADRES(ulica VARCHAR(70) CHARACTER SET utf8);

A. Klauzula CHARACTER SET utf8 jest wymagana
B. Do tabeli nie można wprowadzać ulic, które zawierają w nazwie polskie znaki
C. IF NOT EXISTS jest stosowane opcjonalnie, aby upewnić się, że tabela nie istnieje już w bazie danych
D. Rekordem tabeli nie może być 3 MAJA
Stwierdzenie, że 'IF NOT EXISTS' stosuje się opcjonalnie, aby upewnić się, że brak w bazie danych takiej tabeli, jest jak najbardziej prawdziwe. Klauzula ta jest używana w kontekście tworzenia tabel, aby uniknąć błędu, który wystąpiłby, gdyby tabela o tej samej nazwie już istniała. Dzięki temu programista może mieć pewność, że operacja tworzenia tabeli przebiegnie pomyślnie, bez konieczności wcześniejszego sprawdzania, czy tabela już istnieje. Przykładowo, w praktyce programistycznej, podczas automatyzacji skryptów do zarządzania bazami danych, często wykorzystuje się tę klauzulę, aby zapewnić, że skrypty są odporne na błędy wynikające z istniejących obiektów. Jest to zgodne z dobrymi praktykami w programowaniu baz danych, które koncentrują się na minimalizowaniu ryzyka i poprawie efektywności pracy.

Pytanie 25

W tabeli artykuly znajduje się pole o nazwie nowy. Aby pole to wypełnić wartościami TRUE dla każdego rekordu, należy zastosować kwerendę

A. INSERT INTO nowy FROM artykuly SET TRUE;
B. UPDATE nowy FROM artykuly VALUE TRUE;
C. UPDATE artykuly SET nowy = TRUE;
D. INSERT INTO artykuly VALUE nowy = TRUE;
W tym zadaniu kluczowe jest zrozumienie różnicy między poleceniami UPDATE i INSERT w SQL oraz poprawnej składni tych instrukcji. Chodzi o modyfikację istniejących rekordów w tabeli artykuly, a nie o dodawanie nowych wierszy. To jest taki typowy błąd początkujących: pomieszanie operacji wstawiania danych z operacją ich aktualizacji. Jeśli tabela już zawiera dane i chcemy zmienić wartość w konkretnej kolumnie dla wszystkich wierszy, zawsze sięgamy po UPDATE. Instrukcje wykorzystujące INSERT, typu INSERT INTO artykuly VALUE nowy = TRUE; czy INSERT INTO nowy FROM artykuly SET TRUE;, są niepoprawne składniowo i logicznie. INSERT służy do dodawania nowych rekordów, czyli tworzenia kolejnych wierszy w tabeli. Poprawny wzorzec wygląda mniej więcej tak: INSERT INTO artykuly (kolumna1, kolumna2) VALUES (wartość1, wartość2);. Nie aktualizuje on istniejących pól, tylko dokłada nowe rekordy. Gdybyśmy próbowali użyć INSERT do „ustawienia” kolumny nowy, to w rzeczywistości tworzyliśmy nowe wiersze, a stare rekordy pozostałyby nietknięte, co jest sprzeczne z treścią pytania. Z kolei konstrukcje w rodzaju UPDATE nowy FROM artykuly VALUE TRUE; przypominają czasem składnię innych języków lub narzędzi, ale nie są poprawnym SQL-em. Standard SQL wymaga, żeby po słowie UPDATE pojawiła się nazwa tabeli, a po SET lista kolumn i przypisanych im wartości. Nie ma tu słów kluczowych FROM i VALUE w takiej kombinacji. FROM bywa używane w bardziej zaawansowanych UPDATE’ach, np. w PostgreSQL, ale w formie UPDATE tabela1 SET kolumna = coś FROM tabela2 WHERE warunek; – czyli z zupełnie inną logiką i strukturą. Typowy błąd myślowy polega też na tym, że ktoś próbuje tłumaczyć składnię SQL „na polski” i układa komendy w stylu „INSERT INTO nowy FROM artykuly SET TRUE”, bo brzmi to logicznie w języku naturalnym. Niestety, SQL jest językiem ściśle zdefiniowanym, z bardzo konkretną kolejnością słów kluczowych. Standardowe podejście branżowe jest takie: jeśli modyfikujesz wartości w istniejących wierszach – używasz UPDATE; jeśli dodajesz nowe wiersze – używasz INSERT. Dobrą praktyką jest też najpierw napisać SELECT, który wybiera dokładnie te rekordy, które chcesz zmienić, a dopiero potem na jego podstawie zbudować UPDATE z odpowiednim SET i ewentualnym WHERE. Dzięki temu unikasz przypadkowego uszkodzenia danych.

Pytanie 26

Polecenie GRANT w języku SQL służy do

A. aktualizacji istniejących danych w bazie.
B. odbierania użytkownikom praw do obiektów.
C. nadawania użytkownikom praw do obiektów.
D. umieszczania nowych danych w bazie.
Polecenie GRANT bywa mylone z typowymi instrukcjami modyfikującymi dane, bo wszystko to jest „SQL” i często używa się tego w jednym skrypcie. Warto jednak wyraźnie oddzielić dwie warstwy: operacje na danych oraz operacje na uprawnieniach. Wstawianie nowych rekordów do tabeli realizuje się za pomocą instrukcji INSERT, a nie GRANT. To INSERT decyduje, jakie wartości trafią do konkretnych kolumn, ewentualnie z dodatkowymi klauzulami, triggerami czy ograniczeniami. GRANT w ogóle nie dotyka zawartości tabeli, tylko informację, kto ma prawo wykonać INSERT, SELECT, UPDATE itd. Podobnie aktualizowanie istniejących danych w tabeli odbywa się przez UPDATE, czasem w połączeniu z WHERE, JOIN, podzapytaniami. GRANT nie zmienia ani jednego pola w rekordach – on jedynie przyznaje lub rozszerza zakres uprawnień użytkownika lub roli. Jeśli użytkownik nie ma prawa UPDATE, to najpierw trzeba użyć GRANT, a dopiero potem można wykonać właściwe polecenie UPDATE. Częstym błędem myślowym jest traktowanie SQL jako jednego wielkiego „zestawu komend do wszystkiego” bez rozróżnienia na DML (Data Manipulation Language) i DCL (Data Control Language). GRANT należy właśnie do DCL, razem z REVOKE, i służy do zarządzania bezpieczeństwem. Jeszcze inny typowy skrót myślowy to przekonanie, że GRANT może „zabierać” prawa, bo kojarzy się ogólnie z uprawnieniami. W rzeczywistości standardowo do odbierania uprawnień służy REVOKE. W wielu systemach relacyjnych właśnie tym poleceniem cofa się wcześniej nadane GRANT-y. Z mojego doświadczenia dobrze jest zapamiętać prostą parę: GRANT – nadaje, REVOKE – odbiera. Dzięki temu łatwiej uniknąć pomyłek przy pisaniu skryptów administracyjnych i przy projektowaniu polityki dostępu do tabel, widoków, procedur i innych obiektów bazy danych.

Pytanie 27

Zamieszczone zapytanie SQL przyznaje prawo SELECT:

GRANT SELECT ON hurtownia.* TO 'sprzedawca'@'localhost';
A. do wszystkich tabel w bazie hurtownia
B. dla użytkownika root na serwerze localhost
C. dla użytkownika root na serwerze sprzedawca
D. do wszystkich kolumn w tabeli hurtownia
Polecenie GRANT SELECT ON hurtownia.* TO sprzedawca@localhost; jest często źle interpretowane co prowadzi do błędnego przypisania uprawnień. Częstym problemem jest mylne przekonanie, że przyznanie uprawnień do wszystkich pól w tabeli oznacza to samo co do wszystkich tabel. Symbol * w poleceniu odnosi się do wszystkich tabel w bazie hurtownia a nie do wszystkich pól pojedynczej tabeli. To ważne rozróżnienie wpływa na sposób przyznawania i zarządzania uprawnieniami w kontekście bezpieczeństwa i dostępu do danych. Błędna interpretacja że uprawnienie dotyczy użytkownika root jest wynikiem niezrozumienia konwencji dotyczącej składni SQL gdzie specyficzna definicja użytkownika pojawia się po słowie TO w naszym przypadku jest to sprzedawca@localhost. To wyklucza użytkownika root z opcji możliwych odbiorców tego uprawnienia. Warto zwrócić uwagę że identyfikacja użytkownika sprzedawca@localhost jednoznacznie określa użytkownika działającego z lokalnego serwera a nie z dowolnego hosta co jest istotne z punktu widzenia bezpieczeństwa systemu. Zrozumienie tych niuansów jest kluczowe dla efektywnego zarządzania bazami danych i ochrony przed nieautoryzowanym dostępem. W praktyce przyznanie uprawnień powinno być starannie rozważone i dostosowane do potrzeb zgodnie z zasadą najmniejszych uprawnień co minimalizuje ryzyko błędów i nadużyć systemowych.

Pytanie 28

Elementem wykorzystywanym w bazie danych do podsumowywania, prezentowania oraz drukowania danych jest

A. raport
B. zestawienie
C. zapytanie
D. formularz
Zapytanie, formularz i zestawienie, choć mogą być używane w kontekście pracy z danymi, pełnią inne funkcje niż raport. Zapytanie to instrukcja w języku zapytań, najczęściej SQL, która pozwala na pobranie określonych danych z bazy danych. Zapytania są fundamentalne dla interakcji z bazami danych, ponieważ umożliwiają użytkownikom selekcjonowanie, filtrowanie i sortowanie informacji, ale same w sobie nie dostarczają gotowych podsumowań ani analiz. Formulario to interaktywny element, który umożliwia użytkownikom wprowadzanie danych; jego głównym celem jest zbieranie informacji, a nie ich prezentacja. Użytkownicy często mylą formularze z raportami, co prowadzi do nieporozumień w zakresie ich zastosowania. Zestawienie, z kolei, może odnosić się do porównania wartości lub grup danych, ale nie jest standardowym terminem w kontekście raportów, co może powodować niejasności. Warto zrozumieć, że raporty są narzędziem do podsumowywania wyników, podczas gdy zapytania, formularze i zestawienia mają różne cele i funkcje. Kluczowa jest umiejętność rozróżniania tych elementów, aby skutecznie zarządzać danymi i prezentować je w odpowiedni sposób.

Pytanie 29

Jakie polecenie SQL zmieni w tabeli tab wartość w kolumnie kol z Ania na Zosia?

A. UPDATE tab SET kol = 'Ania' WHERE kol = 'Zosia'
B. UPDATE tab SET kol = 'Zosia' WHERE kol = 'Ania'
C. ALTER TABLE tab CHANGE kol = 'Ania' kol = 'Zosia'
D. ALTER TABLE tab CHANGE kol = 'Zosia' kol = 'Ania'
Podane odpowiedzi, które nie wykorzystują odpowiedniej składni SQL lub koncepcji manipulacji danymi, są błędne. Na przykład, aktualizacja wartości 'Ania' na 'Zosia' za pomocą polecenia UPDATE tab SET kol = 'Ania' WHERE kol = 'Zosia' nie tylko nie osiągnie zamierzonego celu, ale również wprowadzi w błąd. W rzeczywistości, polecenie to nie zmieni żadnych danych, ponieważ nie ma rekordów, w których kolumna 'kol' zawierałaby wartość 'Zosia', a polecenie próbuje ustawić ją na 'Ania'. Z kolei użycie ALTER TABLE do zmiany wartości w kolumnie jest całkowicie niewłaściwe, ponieważ to polecenie służy do zmiany struktury tabeli, a nie danych w niej zawartych. Alteracja struktury bazy danych jest fundamentalnie różna od aktualizacji wartości w wierszach. Zrozumienie różnicy między tymi dwoma typami operacji jest kluczowe dla efektywnego zarządzania bazami danych. Typowe błędy myślowe obejmują mylenie operacji na danych z operacjami na strukturze bazy danych, co prowadzi do nieefektywnego i błędnego kodowania. Warto także zwrócić uwagę na zapewnienie integralności danych i stosowanie właściwych kryteriów, aby uniknąć przypadkowych modyfikacji lub usunięć danych.

Pytanie 30

Tabela o nazwie naprawy posiada kolumny klient oraz czyNaprawione. W celu usunięcia rekordów, w których wartość pola czyNaprawione wynosi prawda, należy użyć komendy

A. DELETE FROM naprawy;
B. DELETE FROM naprawy WHERE czyNaprawione = TRUE;
C. DELETE klient FROM naprawy WHERE czyNaprawione = TRUE;
D. DELETE naprawy WHERE czyNaprawione = TRUE;
Odpowiedź "DELETE FROM naprawy WHERE czyNaprawione = TRUE;" jest poprawna, ponieważ wykorzystuje właściwą składnię SQL do usunięcia rekordów z tabeli. Komenda DELETE jest używana do usuwania danych z bazy danych, a klauzula WHERE precyzuje, które rekordy mają być usunięte na podstawie określonych warunków. W tym przypadku, usuwane są tylko te rekordy, które mają wartość TRUE w polu czyNaprawione. Zastosowanie klauzuli WHERE jest kluczowe, ponieważ umożliwia precyzyjne wybranie danych do usunięcia, co zapobiega przypadkowemu skasowaniu wszystkich rekordów w tabeli. W praktyce, taką komendę można wykorzystać w różnych aplikacjach związanych z zarządzaniem danymi, np. w systemach informatycznych do obsługi klienta, gdzie zachodzi potrzeba bieżącego zarządzania statusami napraw. Dobre praktyki w programowaniu baz danych nakazują zawsze stosować klauzulę WHERE przy usuwaniu danych, aby uniknąć niezamierzonych skutków. Warto również przetestować zapytania w środowisku testowym przed ich zastosowaniem w produkcji, co zwiększa bezpieczeństwo operacji na danych.

Pytanie 31

Zadanie przedstawione w ramce polecenia SQL ma na celu

Ilustracja do pytania
A. zwiększyć wartość kolumny id_klasy o jeden dla wszystkich wpisów tabeli Uczen
B. ustawić wartość pola Uczen na 1
C. ustawić wartość kolumny id_klasy na 1 dla wszystkich wpisów w tabeli Uczen
D. powiększyć wartość pola Uczen o jeden
Analizując podane odpowiedzi możemy dostrzec kilka błędnych koncepcji które warto omówić Zrozumienie działania polecenia SQL jest kluczowe dla jego poprawnego zastosowania Pierwsza odpowiedź sugeruje że polecenie ustawia wartość na 1 dla pola Uczen co jest błędne ponieważ nie ma w nim żadnej instrukcji wskazującej na ustawienie wartości na określoną liczbę zatem nie odnosi się do pola Uczen lecz do kolumny id_klasy Druga odpowiedź zakłada że wartość pola Uczen zostanie zwiększona o jeden co również jest błędne ponieważ w poleceniu SQL nie występuje żadne odniesienie do pola Uczen lecz jedynie do id_klasy Poprawne zrozumienie struktury tabeli oraz dokładne czytanie polecenia jest tu kluczowe Trzecia odpowiedź sugeruje że wszystkie wartości id_klasy zostaną ustawione na 1 co jest mylne ponieważ polecenie wyraźnie wskazuje na operację zwiększania wartości a nie ich ustawiania na stałą liczbę Typowe błędy myślowe wynikają tu z braku dokładnej analizy składni SQL oraz niepełnego zrozumienia celu operacji UPDATE który często stosuje się do manipulacji danymi w sposób zautomatyzowany i kontrolowany Uważna analiza i testowanie poleceń SQL w środowisku testowym przed wdrożeniem w środowisku produkcyjnym jest kluczowym elementem dobrych praktyk branżowych Pozwoli to uniknąć potencjalnych błędów oraz zapewnić poprawne działanie aplikacji zarządzających danymi

Pytanie 32

W języku PHP, podczas pracy z bazą danych MySQL, aby zakończyć sesję z bazą, powinno się użyć

A. mysqli_rollback()
B. mysqli_commit()
C. mysqli_exit( )
D. mysqli_close()
Odpowiedź 'mysqli_close()' jest poprawna, ponieważ ta funkcja służy do zamykania połączenia z bazą danych MySQL w PHP. Po zakończeniu operacji na bazie danych ważne jest, aby zwolnić zasoby, zwłaszcza w aplikacjach, które mogą otwierać wiele połączeń. Funkcja ta nie przyjmuje żadnych argumentów i jest niezwykle istotna, aby uniknąć wycieków pamięci oraz zapewnić, że wszystkie zasoby są odpowiednio zarządzane. Przykładowo, po zakończeniu wykonywania skryptu, który pobiera dane z bazy, można użyć mysqli_close($connection), gdzie $connection jest wcześniej utworzonym połączeniem. Zgodnie z najlepszymi praktykami programistycznymi, powinno się zamykać połączenia w momencie, gdy nie są już potrzebne. Należy również pamiętać, że pozostawienie otwartego połączenia może prowadzić do ograniczenia liczby dostępnych połączeń w serwerze MySQL, co w dłuższej perspektywie może wpływać na wydajność aplikacji.

Pytanie 33

Podczas tworzenia tabeli, do pola, które ma automatycznie przyjmować następne liczby całkowite, należy wprowadzić atrybut

A. NOT NULL
B. AUTO_INCREMENT
C. PRIMARY KEY
D. NULL
Odpowiedzi takie jak PRIMARY KEY, NULL oraz NOT NULL odnoszą się do różnych aspektów definicji pól w bazach danych, ale nie są wystarczające do automatycznego przydzielania wartości liczbowych. Właściwość PRIMARY KEY oznacza, że dane w danym polu muszą być unikalne dla każdego rekordu, co jest istotne dla identyfikacji, ale sama w sobie nie zapewnia automatyzacji przypisywania wartości. Z kolei NULL i NOT NULL odnoszą się do tego, czy pole może zawierać puste wartości. NULL pozwala na brak wartości w polu, co może być przydatne w niektórych aplikacjach, ale w kontekście automatycznego wzrastania liczby całkowitej w polu, jest to zbędne. NOT NULL zapewnia, że pole nie może być puste, ale również nie ma związku z automatycznym przydzielaniem wartości. Typowe pomyłki to mylenie automatycznego przydzielania wartości z pojęciami unikalności lub obecności wartości w polu. W rzeczywistości, aby skutecznie zarządzać identyfikatorami w bazach danych, należy używać AUTO_INCREMENT, co zapewnia nie tylko unikalność, ale także automatyzację procesu. Zrozumienie tych różnic jest kluczowe dla właściwego projektowania schematów baz danych oraz zapewnienia ich wydajności i spójności.

Pytanie 34

Normalizacja tabel to proces, którego celem jest

A. wyłącznie stworzenie tabel oraz relacji w bazie
B. dodanie danych do bazy
C. sprawdzenie i optymalizację bazy danych
D. wizualizacja bazy
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 35

W systemie baz danych stworzono tabelę Mieszkancy zawierającą informacje. Aby usunąć tę tabelę wraz z danymi, należy użyć komendy

A. DROP TABLE Mieszkancy;
B. ALTER TABLE Mieszkancy;
C. DELETE FROM Mieszkancy;
D. TRUNCATE TABLE Mieszkancy;
Wybór polecenia 'DELETE FROM Mieszkancy;' jest nieodpowiedni w kontekście usuwania tabeli, ponieważ to polecenie służy do usuwania danych z istniejącej tabeli, a nie do usuwania samej tabeli. 'DELETE' jest używane, gdy chcemy usunąć niektóre lub wszystkie rekordy w tabeli, ale sama tabela pozostaje nienaruszona i jej struktura pozostaje w bazie danych. Często myli się te dwa polecenia, co może prowadzić do nieefektywnego zarządzania danymi, a także do nieporozumień przy projektowaniu baz danych. Z kolei 'ALTER TABLE Mieszkancy;' jest poleceniem służącym do zmiany struktury istniejącej tabeli, co również nie odpowiada na potrzebę usunięcia tabeli. Może to obejmować dodawanie lub usuwanie kolumn, co nie ma nic wspólnego z usuwaniem tabeli jako całości. Wreszcie, 'TRUNCATE TABLE Mieszkancy;' to polecenie, które usuwa wszystkie rekordy z tabeli, ale w przeciwieństwie do 'DROP TABLE', nie usuwa samej tabeli. Dlatego użycie 'TRUNCATE' może być mylące, ponieważ dane są usuwane, ale tabela i jej struktura pozostają w bazie danych. Błędne przekonanie, że 'DELETE' lub 'TRUNCATE' mogą zastąpić 'DROP', prowadzi do niezamierzonych konsekwencji w zarządzaniu danymi i architekturze bazy danych.

Pytanie 36

W tabeli mieszkancy znajdują się różne dane. Aby przefiltrować jedynie mieszkańców, którzy mają przypisaną dzielnicę = 1, stworzono dla uproszczenia działania wirtualną tabelę (widok) poprzez zastosowanie kwerendy

A. CREATE VIEW mieszkancy WHERE dzielnica = 1
B. CREATE VIEW mieszkancySrodmiescie AS SELECT * FROM mieszkancy WHERE dzielnica = 1
C. CREATE VIEW mieszkancySrodmiescie AS SELECT * FROM mieszkancy
D. CREATE VIEW mieszkancy FROM mieszkancy WHERE dzielnica = 1
Odpowiedzi, które nie pasują do definicji widoków w SQL, mają kilka kluczowych błędów. W pierwszej z nich, 'CREATE VIEW mieszkancy WHERE dzielnica = 1;', brakuje ważnych elementów do zdefiniowania widoku. Przede wszystkim, nie ma słowa 'AS', które powinno być tam, żeby określić kwerendę, z której widok się tworzy. SQL wymaga, żeby definicja widoku miała zapytanie, czego tutaj brakuje. W drugiej odpowiedzi, 'CREATE VIEW mieszkancy FROM mieszkancy WHERE dzielnica = 1;', również jest niepoprawna, bo nie ma 'AS' i jest zła składnia, bo 'FROM' nie może być używane w tworzeniu widoku bez odpowiedniej struktury. Ostatnia odpowiedź, 'CREATE VIEW mieszkancySrodmiescie AS SELECT * FROM mieszkancy;', choć składnia jest okej, nie filtruje danych do mieszkańców z dzielnicy nr 1. To błędne myślenie, bo często zapominamy o używaniu filtrów, co prowadzi do tego, że mamy za dużo danych do analizy. Tworząc widoki, warto zawsze mieć na uwadze, po co je robimy i zadbać o to, żeby zawierały tylko te dane, które są nam naprawdę potrzebne.

Pytanie 37

W bazie danych wykonano następujące polecenia dotyczące uprawnień użytkownika adam. Po ich realizacji użytkownik adam uzyska uprawnienia do

GRANT ALL PRIVILEGES ON klienci TO adam
REVOKE SELECT, INSERT, UPDATE ON klienci FROM adam
A. usuwania tabeli lub jej rekordów
B. tworzenia tabeli klienci oraz modyfikowania w niej danych
C. modyfikowania danych i przeglądania tabeli klienci
D. przeglądania tabeli klienci oraz dodawania do niej sektorów
Analizując dostarczone polecenia SQL kluczowe jest zrozumienie jakie uprawnienia zostały przyznane użytkownikowi adam. Polecenie GRANT ALL PRIVILEGES przyznaje pełen zakres uprawnień do tabeli klienci co obejmuje operacje takie jak SELECT INSERT UPDATE DELETE oraz DROP. Jednakże w następnym kroku za pomocą polecenia REVOKE ograniczono specyficzne uprawnienia takie jak SELECT INSERT i UPDATE pozostawiając jedynie te które nie zostały wymienione co w tym przypadku oznacza usunięcie rekordów DELETE oraz całej tabeli DROP. Niezrozumienie znaczenia poszczególnych poleceń SQL oraz ich interakcji prowadzi do błędnych wniosków dotyczących zakresu możliwości użytkownika. Warto zwrócić uwagę że uprawnienia takie jak SELECT umożliwiają jedynie przeglądanie danych co nie jest zgodne z usunięciem danych ani tabeli. Podobnie INSERT pozwala na dodawanie nowych rekordów a nie ich usuwanie. UPDATE z kolei umożliwia modyfikację istniejących danych bez ich usunięcia. W kontekście zarządzania bazą danych ważne jest precyzyjne rozumienie jakie prawa są przyznawane i jakie konsekwencje to niesie dla bezpieczeństwa i operacyjności systemu bazodanowego. Niewłaściwe przypisanie uprawnień może prowadzić do nieautoryzowanego dostępu lub modyfikacji danych co stanowi poważne zagrożenie dla integralności danych oraz stabilności systemu. Zrozumienie różnic między poszczególnymi uprawnieniami jest fundamentalne dla zarządzania bazą danych zgodnie z najlepszymi praktykami branżowymi i standardami bezpieczeństwa informatycznego. Poprawna interpretacja poleceń SQL jest kluczowa dla zapewnienia odpowiedniego poziomu kontroli dostępu i ochrony danych w systemach bazodanowych.

Pytanie 38

Do czego służy funkcja PHP o nazwie mysql_num_rows?

A. podawać liczbę wierszy, które są w wynikach zapytania
B. zwracać rekord, którego numer został przekazany jako parametr funkcji
C. przyporządkować numery rekordom w bazie danych
D. oddawać następny rekord z wyników zapytania
Wszystkie pozostałe odpowiedzi są niepoprawne z kilku kluczowych powodów. Pierwsza z niepoprawnych odpowiedzi sugeruje, że funkcja mysql_num_rows ma na celu ponumerowanie rekordów w bazie danych. Takie podejście jest mylące, ponieważ mysql_num_rows nie modyfikuje ani nie przechowuje żadnych danych w bazie, a jedynie zwraca informację o liczbie wierszy w zestawie wyników, co w żaden sposób nie wiąże się z ich numerowaniem. Kolejna błędna odpowiedź wskazuje, że funkcja miałaby zwracać kolejny rekord z wynikami zapytania. W rzeczywistości, mysql_num_rows nie zwraca danych samych w sobie, lecz jedynie informację o ich liczbie, co czyni tę odpowiedź zupełnie nietrafioną. Ostatnia niepoprawna odpowiedź sugeruje, że funkcja zwraca rekord na podstawie numeru podanego w jej parametrze. Znowu, taka interpretacja jest nieprawidłowa, ponieważ mysql_num_rows nie przyjmuje parametrów odnoszących się do konkretnych rekordów, a jedynie do zmiennej wynikowej, która zawiera efekty zapytania SQL. W związku z tym, każde z tych stwierdzeń nieodzwierciedla rzeczywistej funkcji mysql_num_rows i jej zastosowania w kontekście zarządzania i przetwarzania danych w PHP.

Pytanie 39

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

A. mysqli_fetch_row
B. mysqli_num_rows
C. mysqli_query
D. mysqli_connect
Przy wyborze niewłaściwych funkcji jako alternatywy dla mysqli_num_rows pojawia się wiele nieporozumień dotyczących operacji na wynikach zapytań w PHP. Wybór mysqli_fetch_row sugeruje, że użytkownik mylnie zakłada, iż ta funkcja zwraca liczbę rekordów. W rzeczywistości, mysqli_fetch_row służy do pobierania kolejnych wierszy z wyniku zapytania jako tablicy, co oznacza, że do zliczenia rekordów musielibyśmy wielokrotnie wywoływać tę funkcję w pętli, co jest nieefektywne i niezgodne z zasadami optymalizacji. Z kolei mysqli_query, choć fundamentem do wykonania zapytania, nie ma funkcji zliczającej rekordy. Użytkownicy często mylą jej wydajność z funkcją zliczania, co prowadzi do nieefektywnego kodu. Funkcja mysqli_connect jest przeznaczona do nawiązywania połączenia z bazą danych, a nie do operacji na wynikach zapytań. Jest to typowy błąd nowicjuszy, którzy nie rozumieją, że użycie funkcji do zaistnienia w bazie nie ma związku ze zliczaniem rekordów. W praktyce, aby uzyskać informacje o liczbie rekordów, kluczowe jest zrozumienie, że każda z tych funkcji ma swoje zdefiniowane zadania i użycie ich w nieodpowiednich kontekstach prowadzi do nieoptymalnych rozwiązań, co jest sprzeczne z najlepszymi praktykami programowania.

Pytanie 40

W bazach danych typ DECIMAL jest przeznaczony do przechowywania

A. liczb rzeczywistych zmiennoprzecinkowych.
B. liczb zapisanych w systemie binarnym.
C. liczb rzeczywistych stałoprzecinkowych.
D. danych napisowych o określonej długości.
W tym pytaniu łatwo się złapać na skojarzeniach z innymi typami danych, dlatego warto sobie to porządnie poukładać. Typ DECIMAL nie ma nic wspólnego z „liczbami zapisanymi w systemie binarnym” w takim sensie, w jakim często myśli się o typach zmiennoprzecinkowych. Oczywiście fizycznie wszystko i tak jest binarne, ale chodzi o model reprezentacji logicznej. Klasyczne typy zmiennoprzecinkowe (FLOAT, DOUBLE) trzymają wartość w formacie binarnym IEEE 754, co powoduje znane problemy z dokładnością, np. 0.1 + 0.2 ≠ 0.3 idealnie. DECIMAL jest zaprojektowany właśnie po to, żeby unikać tych błędów i zapewnić precyzyjną reprezentację dziesiętną z określoną liczbą miejsc po przecinku. Dlatego utożsamianie DECIMAL z „typem binarnym” albo ogólnie z „liczbami w systemie binarnym” to takie lekkie pomieszanie poziomów abstrakcji. Kolejna pułapka to traktowanie DECIMAL jako typu do przechowywania danych napisowych. Dane tekstowe o określonej długości trzymamy w typach CHAR(n) lub VARCHAR(n). One przechowują ciągi znaków, a nie wartości numeryczne, więc nie wykonamy na nich sensownie operacji arytmetycznych, agregacji typu SUM, AVG itp. Oczywiście czasem ktoś z lenistwa zapisuje np. kwoty jako VARCHAR, ale to jest sprzeczne z dobrymi praktykami projektowania schematu bazy i potem mści się przy raportach i walidacji. Częsty błąd myślowy polega też na wrzuceniu wszystkich „liczb z przecinkiem” do jednego worka i uznaniu, że to zawsze są liczby zmiennoprzecinkowe. W rzeczywistości w SQL rozróżniamy typy przybliżone (FLOAT, DOUBLE, REAL) i typy dokładne (DECIMAL, NUMERIC). Te pierwsze są dobre do obliczeń naukowych, pomiarów, gdzie dopuszczalne jest małe odchylenie, za to są szybsze i mniej pamięciożerne. Te drugie, stałoprzecinkowe, są stosowane tam, gdzie ważna jest bezwzględna poprawność wartości dziesiętnej, np. finanse, księgowość, rozliczenia magazynowe. Traktowanie DECIMAL jako „liczby rzeczywistej zmiennoprzecinkowej” zaciera tę bardzo ważną granicę. Z mojego doświadczenia w projektach komercyjnych wybór między DECIMAL a FLOAT/DOUBLE to jedno z kluczowych miejsc, gdzie początkujący projektanci baz popełniają błędy. Jeśli typ dobierzemy źle, to później pojawiają się trudne do wytłumaczenia różnice groszowe, błędne sumy w raportach, problemy z porównaniami w WHERE. Dlatego warto zapamiętać: DECIMAL to liczby rzeczywiste stałoprzecinkowe, z dokładnie określoną precyzją i skalą, a nie typ tekstowy ani przybliżony typ binarny.