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:54
  • Data zakończenia: 15 czerwca 2026 11:09

Egzamin niezdany

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

Które polecenie SQL usunie bazę danych o nazwie firma?

A.
DROP firma;
B.
ALTER firma DROP DATABASE;
C.
ALTER firma DROP;
D.
DROP DATABASE firma;
Całą bazę danych usuwa polecenie DROP DATABASE <nazwa>, więc DROP DATABASE firma; skasuje bazę firma wraz z całą zawartością. Dlatego poprawne jest DROP DATABASE firma;.

Pytanie 2

Na podstawie relacji przedstawionej na ilustracji, można stwierdzić, że jest to relacja

Ilustracja do pytania
A. jeden do wielu, gdzie kluczem obcym jest pole w tabeli kadra
B. wiele do wielu pomiędzy kluczami głównymi obu tabel
C. jeden do jednego, gdzie obie tabele mają przypisane klucze obce
D. jeden do wielu, gdzie kluczem obcym jest pole w tabeli uslugi
Odpowiedzi błędne opierają się na niewłaściwym zrozumieniu relacji w bazach danych. Pierwsza z błędnych koncepcji sugeruje relację jeden do wielu, gdzie kluczem obcym jest pole w tabeli kadra, co jest odwrotne do przedstawionej struktury, gdyż w rzeczywistości pole kadra_id znajduje się w tabeli uslugi, wskazując na tabelę kadra. Relacja jeden do jednego, w której obie tabele mają klucze obce, oznaczałoby, że każdy rekord w jednej tabeli jest ściśle powiązany z jednym rekordem w drugiej, co nie jest przypadkiem dla tych danych. Takie podejście zwykle stosuje się, gdy tabele przechowują różne aspekty tego samego podmiotu, co nie jest odzwierciedlone na diagramie. Relacja wiele do wielu między kluczami głównymi obu tabel wymagałaby użycia dodatkowej tabeli łączącej, co umożliwiałoby powiązanie wielu rekordów każdej z tabel z wieloma rekordami drugiej, co również nie jest przedstawione tutaj. Typową pomyłką przy analizie tego typu relacji jest nieuwzględnienie struktury kluczy obcych i ich roli w łączeniu danych poprzez zrozumienie ich jako jedynie strukturalne powiązania, zamiast narzędzi umożliwiających integralność i spójność danych w bazie. Ważne jest, aby zawsze analizować kierunek relacji i rolę kluczowych pól w kontekście aplikacji i modelu danych, co zapobiega błędnym interpretacjom i wspiera prawidłowe projektowanie bazy danych, zgodnie z jej wymaganiami funkcjonalnymi i wydajnościowymi.

Pytanie 3

Jakiej kwerendy w bazie MariaDB należy użyć, aby wybrać artykuły, których ceny mieszczą się w przedziale domkniętym <10, 20>?

A. SELECT * FROM Artykuly WHERE Cena BETWEEN 10 AND 20
B. SELECT * FROM Artykuly WHERE Cena LIKE 1%, 2%
C. SELECT * FROM Artykuly WHERE Cena IN (10, 20)
D. SELECT * FROM Artykuly WHERE Cena > 10 AND Cena < 20
Odpowiedź 'SELECT * FROM Artykuly WHERE Cena BETWEEN 10 AND 20;' jest prawidłowa, ponieważ wykorzystuje operator BETWEEN, który jest idealny do określenia wartości zawartych w obustronnie domkniętym przedziale. W tym przypadku zapytanie zwróci wszystkie artykuły, których cena jest równa 10 lub 20 oraz wszystkie wartości znajdujące się pomiędzy tymi dwoma wartościami. Operator BETWEEN jest standardowym sposobem na łatwe zapisywanie takich warunków w SQL, co czyni kod bardziej czytelnym i zrozumiałym. Przykład zastosowania to sytuacja, gdy chcemy znaleźć produkty w określonym przedziale cenowym na stronie e-commerce. Tego typu kwerendy są bardzo powszechne w analizie danych i zarządzaniu bazami danych, a ich znajomość jest kluczowa dla efektywnego wykonywania zadań związanych z eksploracją danych. Zastosowanie BETWEEN w praktyce pozwala na automatyzację procesów wyszukiwania i filtrowania danych, co jest zgodne z najlepszymi praktykami w zakresie optymalizacji zapytań w bazach danych.

Pytanie 4

Jaki typ relacji powstaje, gdy połączymy dwie tabele przez ich KLUCZE GŁÓWNE?

A. jeden do jednego
B. wiele do jednego
C. wiele do wielu
D. jeden do wielu
Pozostałe typy relacji wymagają innych warunków. Jeden-do-wielu (1:n) powstaje, gdy po stronie „wielu” jest klucz OBCY, a nie główny. Wiele-do-wielu (n:m) wymaga tabeli pośredniej. „Wiele do jednego” to ta sama relacja 1:n widziana z drugiej strony. Połączenie dwóch kluczy głównych daje relację jeden do jednego.

Pytanie 5

Rozważ tabelę mieszkań, która zawiera kolumny: adres, metraż, ile_pokoi, standard, status, cena. Wykonanie poniższej kwerendy SQL SELECT spowoduje wyświetlenie:

SELECT metraz, cena FROM mieszkania WHERE ile_pokoi > 3;
A. metraż oraz cena tych mieszkań, które mają więcej niż 3 pokoje
B. wszystkie informacje, z wyjątkiem adresu, dotyczące mieszkań z więcej niż 3 pokojami
C. metraż oraz cena tych mieszkań, które posiadają co najmniej 3 pokoje
D. wszystkie dane mieszkań, które mają co najmniej 3 pokoje
Odpowiedzi, które sugerują, że kwerenda wyświetla wszystkie dane mieszkań z co najmniej 3 pokojami lub wszystkie dane oprócz adresu, są nieprawidłowe z kilku powodów. Przede wszystkim, operator '>' w kwerendzie oznacza, że zapytanie dotyczy jedynie mieszkań z większą liczbą pokoi niż 3, a więc tylko te, które mają 4 lub więcej pokoi będą brane pod uwagę. Odpowiedzi sugerujące, że zwracane są wszystkie dane mieszkań, nie uwzględniają, że kwerenda skupia się wyłącznie na kolumnach metraż i cena, co jest kluczowe w kontekście efektywności i przejrzystości zapytań. W kontekście SQL, wybór określonych kolumn jest bardzo istotny, ponieważ nie tylko zmniejsza objętość przesyłanych danych, ale również ułatwia ich analizę. Niezrozumienie tego aspektu może prowadzić do nieefektywnego korzystania z zasobów bazy danych. Ponadto, stwierdzenie, że kwerenda zwraca wszystkie dane oprócz adresu, jest mylne, ponieważ zapytanie w ogóle nie uwzględnia adresu ani innych informacji, a jedynie metraż i cenę. Tego typu nieprecyzyjne interpretacje mogą zniekształcić obraz tego, jak działa SQL i w jaki sposób można efektywnie zarządzać danymi.

Pytanie 6

W języku PHP przeprowadzono operację przedstawioną w ramce. Jak można postąpić, aby wyświetlić wszystkie wyniki tego zapytania?

$tab = mysqli_query($db, "SELECT imie FROM Osoby WHERE wiek < 18");
A. pokazać zmienną $db
B. zastosować pętlę z poleceniem mysqli_fetch_row
C. zaindeksować zmienną tab, tab[0] to pierwsze imię
D. użyć polecenia mysql_fetch
Prawidłowa odpowiedź dotyczy zastosowania pętli z poleceniem mysqli_fetch_row. W języku PHP przy pracy z bazą danych MySQL wykorzystujemy bibliotekę mysqli, która oferuje funkcje pozwalające na manipulację danymi. Funkcja mysqli_query wykonuje zapytanie SQL na połączeniu z bazą danych, zwracając wynik w postaci obiektu typu mysqli_result. Aby pobrać wszystkie wiersze wyników, konieczne jest zastosowanie pętli, która iteruje przez każdy wiersz zwracany przez zapytanie. Funkcja mysqli_fetch_row jest używana do pobrania kolejnego wiersza z wyniku jako tablicy numerycznej. Przykładowy kod mógłby wyglądać następująco while ($row = mysqli_fetch_row($tab)) { echo $row[0]; } co pozwala na wyświetlenie imion wszystkich osób poniżej 18 roku życia. Praktyczne podejście polega na iteracyjnej obsłudze wyników zapytań, co jest zgodne z branżowymi standardami. Takie rozwiązanie umożliwia dynamiczne przetwarzanie danych w czasie rzeczywistym zwiększając elastyczność aplikacji. Dodatkowo warto pamiętać o odpowiednim zarządzaniu zasobami, takim jak zamknięcie połączenia z bazą danych po zakończeniu operacji. To podejście podkreśla znaczenie efektywnego zarządzania danymi w aplikacjach webowych.

Pytanie 7

Instrukcję transakcyjną ROLLBACK wydaje się, aby:

A. zatwierdzić tylko wybrane zmiany transakcji
B. cofnąć transakcję już po wykonaniu COMMIT
C. zatwierdzić transakcję
D. cofnąć (wycofać) zmiany wykonane w transakcji
Pozostałe odpowiedzi mylą rolę ROLLBACK z innymi działaniami. Zatwierdzenie transakcji - utrwalenie zmian - wykonuje COMMIT, a nie ROLLBACK. Zatwierdzenie tylko wybranych zmian również nie jest jego zadaniem; do częściowego wycofania służy mechanizm punktów zapisu (SAVEPOINT i ROLLBACK TO). Cofnięcie transakcji po wykonaniu COMMIT jest niemożliwe - zatwierdzone zmiany są trwałe. ROLLBACK cofa zmiany jeszcze niezatwierdzonej transakcji, dlatego ta odpowiedź jest poprawna.

Pytanie 8

Tabele: Studenci, Zapisy, Zajecia są powiązane relacją. Aby wybrać jedynie nazwiska studentów oraz odpowiadające im idZajecia dla studentów z grupy 15, należy wydać kwerendę

Ilustracja do pytania
A. SELECT nazwisko, idZajecia FROM Studenci JOIN Zapisy ON Studenci.id = Zapisy.idZajecia WHERE grupa = 15;
B. SELECT nazwisko, idZajecia FROM Studenci INNER JOIN Zapisy WHERE grupa= 15;
C. SELECT nazwisko, idZajecia FROM Studenci INNER JOIN Zapisy ON Studenci.id = Zapisy.idStudenta;
D. SELECT nazwisko, idZajecia FROM Studenci JOIN Zapisy ON Studenci.id = Zapisy.idStudenta WHERE grupa = 15;
Pierwszym istotnym problemem w niepoprawnych zapytaniach jest brak prawidłowego połączenia tabel na właściwych kluczach. W relacyjnych bazach danych, aby sensownie połączyć dane z różnych tabel, należy wykorzystać klucze główne i obce, które jasno definiują powiązania między obiektami. Jeśli zapomni się o warunku JOIN albo połączy się tabele po błędnych kolumnach (na przykład próbując połączyć idStudenta z idZajecia lub pomijając warunek ON), baza zwróci błędne wyniki lub wręcz nie pozwoli wykonać zapytania. To typowy błąd początkujących, którzy nie zawsze rozumieją, jak bardzo ważne jest precyzyjne określenie relacji – w rzeczywistych bazach danych relacji jest wiele, a niewłaściwe powiązanie może prowadzić do powstawania kartuzjańskiego iloczynu, czyli powielania danych bez rzeczywistego sensu. Brak filtru WHERE grupa = 15 skutkuje wyciągnięciem danych dla wszystkich studentów, co może być ogromnym problemem przy dużych bazach i całkowicie rozmija się z celem kwerendy. Moim zdaniem, wiele osób zapomina, że filtrowanie to podstawa – bez tego, szczególnie przy produkcyjnych bazach, można zarówno błędnie interpretować wyniki, jak i mocno przeciążyć system niepotrzebnym ruchem. Takie błędy wynikają często z braku systematycznego podejścia do projektowania zapytań i nieuważnego czytania struktury tabel. Warto od razu przyzwyczajać się do pracy zgodnie z konwencjami, bo to przekłada się na bezpieczeństwo, wydajność i poprawność działania całego systemu. W praktyce – nawet drobny błąd w składni JOIN lub brak filtrowania na kluczowej kolumnie może wywołać lawinę problemów, zwłaszcza gdy kwerenda staje się częścią większej aplikacji biznesowej lub raportu dla zarządu.

Pytanie 9

Wskaż najefektywniejszą metodę wyczyszczenia wszystkich danych z tabeli adresy, nie wpływając na jej strukturę

A. DROP TABLE adresy;
B. DELETE * FROM adresy;
C. TRUNCATE TABLE adresy;
D. DELETE TABLE adresy;
Usunięcie wszystkich rekordów z tabeli adresy bez usuwania jej struktury można zrealizować na wiele sposobów, jednak nie wszystkie z nich są właściwe. DROP TABLE adresy; jest komendą, która usuwa całą tabelę wraz z jej strukturą oraz danymi, co jest całkowicie sprzeczne z założeniem pytania. Takie podejście może prowadzić do poważnych problemów w aplikacjach, które polegają na istnieniu tabeli, ponieważ po wykonaniu tej komendy tabela przestaje istnieć, co uniemożliwia dalsze operacje na niej. DELETE * FROM adresy; wydaje się być poprawną próbą usunięcia danych, ale składnia ta jest błędna, ponieważ w SQL nie używa się znaku „*” w kontekście polecenia DELETE. Poprawna składnia powinna być DELETE FROM adresy;, co z kolei prowadzi do przetwarzania każdego rekordu w tabeli i może być znacznie wolniejsze w przypadku dużych zbiorów danych. DELETE również nie resetuje identyfikatorów autoinkrementacyjnych, co może być niepożądanym efektem. Z kolei DELETE TABLE adresy; to niewłaściwe wyrażenie, ponieważ SQL nie rozpoznaje komendy DELETE TABLE. W rzeczywistości, by usunąć tabelę, musielibyśmy użyć DROP TABLE. Zasadniczo, błędne odpowiedzi wskazują na niepełne zrozumienie zasadności i syntaktyki SQL oraz różnic pomiędzy operacjami na danych. Warto zatem przywiązywać wagę do detali, aby unikać nieefektywnych i błędnych rozwiązań, szczególnie w pracy z bazami danych, gdzie każdy błąd może prowadzić do utraty cennych danych.

Pytanie 10

W zaprezentowanym schemacie bazy danych o nazwie biblioteka, składniki: czytelnik, wypożyczenie oraz książka są

Ilustracja do pytania
A. krotkami
B. atrybutami
C. encjami
D. polami
W modelowaniu relacyjnych baz danych encje są kluczowymi elementami, które reprezentują obiekty rzeczywistego świata, wokół których zbudowana jest struktura bazy. W przedstawionym diagramie bazy danych biblioteki encjami są czytelnik wypozyczenie i ksiazka. Każda z tych encji posiada swoje własne atrybuty, które opisują jej właściwości na przykład encja czytelnik ma takie atrybuty jak imię nazwisko i adres. W kontekście praktycznym encje są odwzorowywane na tabele w bazie danych gdzie wiersze tabeli reprezentują poszczególne instancje encji a kolumny reprezentują atrybuty. Rozumienie różnicy między encjami a atrybutami jest istotne dla efektywnego projektowania baz danych zgodnie z dobrymi praktykami takimi jak normalizacja, która pomaga unikać redundancji danych. W związku z tym prawidłowe zrozumienie i identyfikacja encji ma kluczowe znaczenie w budowaniu skalowalnych i wydajnych baz danych. W praktyce analizy danych encje są podstawą do tworzenia modeli relacyjnych które umożliwiają generowanie raportów i analizowanie danych w sposób zorganizowany i logiczny

Pytanie 11

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

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

Pytanie 12

Wykonanie następującego polecenia PHP umożliwia:

$zapytanie = mysqli_query($db, "UPDATE ...");
A. zmianę danych w bazie
B. dodanie nowych danych do bazy
C. zmianę struktury bazy
D. pobranie danych z bazy
Odpowiedzi sugerujące zapis nowych danych do bazy oraz modyfikację struktury bazy są nieprawidłowe, ponieważ mysqli_query z instrukcją SQL UPDATE nie służy do tych celów. Zapis nowych danych do bazy odbywa się za pomocą instrukcji INSERT, która dodaje nowe rekordy do tabeli. Funkcja INSERT INTO jest używana, gdy chcemy dodać nowe dane, a nie je modyfikować. W przypadku modyfikacji struktury bazy danych, takich jak dodawanie nowych kolumn czy zmiany w tabelach, używane są instrukcje DDL (Data Definition Language) jak ALTER TABLE. Te operacje są istotne, gdy zmienia się schemat bazy danych, co jest zupełnie inną operacją niż modyfikacja danych. Odczyt danych z bazy to kolejna funkcjonalność, która jest realizowana za pomocą instrukcji SELECT, służącej do pobierania danych z tabel. SELECT umożliwia wyświetlanie danych bez ich zmiany, co jest podstawową operacją w aplikacjach potrzebujących dostępu do informacji przechowywanych w bazie. Typowe błędy to mylenie tych różnych operacji, co wynika z niepełnego zrozumienia podstawowych operacji SQL i ich zastosowań. Poprawne rozróżnianie tych funkcji jest kluczowe dla efektywnego zarządzania bazą danych i unikania błędów logicznych w aplikacjach.

Pytanie 13

W języku PHPnie ma możliwości

A. tworzenie dynamicznej zawartości strony internetowej
B. obróbka informacji przechowywanych w bazie danych
C. zmienianie dynamiczne treści strony HTML w przeglądarce
D. przetwarzanie danych z formularzy
Odpowiedź dotycząca zmieniania dynamicznej zawartości strony HTML w przeglądarce jest poprawna, ponieważ PHP jest językiem skryptowym działającym po stronie serwera. Oznacza to, że PHP nie jest w stanie bezpośrednio modyfikować zawartości strony HTML po jej załadowaniu w przeglądarce użytkownika. Zamiast tego, PHP generuje HTML, który następnie jest przesyłany do przeglądarki. Dynamiczna zawartość strony może być generowana na podstawie danych z bazy danych lub formularzy, ale wszelkie zmiany w HTML po stronie klienta wymagają użycia języków, które działają po stronie przeglądarki, takich jak JavaScript. Przykładem może być sytuacja, w której użytkownik wypełnia formularz, a dane są przetwarzane przez PHP, które zwraca zaktualizowaną stronę. W przypadku potrzeby dynamicznych zmian, JavaScript może być użyty do manipulacji DOM po załadowaniu strony. Warto również zauważyć, że zgodnie z dobrymi praktykami, powinno się oddzielać logikę serwerową (PHP) od logiki klienckiej (JavaScript), co przyczynia się do lepszej struktury kodu i ułatwia jego utrzymanie.

Pytanie 14

Tabele: Firmy oraz Zamówienia są ze sobą powiązane relacją jeden do wielu. Aby uzyskać tylko identyfikatory zamówień wraz z odpowiadającymi im nazwami firm dla przedsiębiorstw, których poziom wynosi 4, należy użyć polecenia

Ilustracja do pytania
A. SELECT id, nazwa FROM Zamówienia JOIN Firmy ON Zamówienia.Firmy_id = Firmy.id WHERE poziom = 4
B. SELECT Zamówienia.id, nazwa FROM Zamówienia JOIN Firmy ON Zamówienia.Firmy_id = Firmy.id WHERE poziom = 4
C. SELECT Zamówienia.id, nazwa FROM Zamówienia JOIN Firmy ON Zamówienia.id = Firmy.id WHERE poziom = 4
D. SELECT Zamówienia.id, nazwa FROM Zamówienia JOIN Firmy WHERE poziom = 4
W kontekście zaproponowanych odpowiedzi, błędne podejścia wynikają głównie z niewłaściwego zastosowania klauzuli JOIN oraz braku zrozumienia relacji między tabelami. Kluczowym błędem jest ignorowanie związku pomiędzy kluczem głównym i kluczem obcym, co prowadzi do niepoprawnych wyników w zapytaniach SQL. Na przykład, próba połączenia tabel bez wyraźnego zdefiniowania relacji poprzez klauzulę ON może skutkować pełnym iloczynem kartezjańskim, co jest nieefektywne i często nieprawidłowe pod względem logicznym. Innym częstym błędem w analizie takich zapytań jest niedostateczne uwzględnienie warunków filtrowania w klauzuli WHERE. Warunki te są niezbędne do ograniczenia zestawu wyników do tych, które są istotne dla bieżącej analizy, zwłaszcza w kontekście zamówień i firm o określonym poziomie. Niepoprawne stosowanie aliasów lub brak ich użycia może także prowadzić do niejasności, zwłaszcza w bardziej złożonych zapytaniach, gdzie precyzyjne odwoływanie się do kolumn jest kluczowe. Ponadto, pomijanie sprawdzenia czy dane kolumny istnieją i są odpowiednio indeksowane może prowadzić do błędów wykonania zapytań lub znacznego spadku wydajności, co ma krytyczne znaczenie w środowisku produkcyjnym. Dbając o unikanie takich błędów, warto zastosować się do zasad projektowania baz danych, które skupiają się na integralności referencyjnej i optymalizacji zapytań, co zwiększa ich efektywność i czytelność w praktycznych zastosowaniach biznesowych. Zachowanie tych zasad pozwala na budowanie solidnych i wydajnych systemów bazodanowych, które wspierają procesy decyzyjne w organizacjach.

Pytanie 15

W jaki sposób wykonanie podanej poniżej kwerendy SQL wpłynie na tabelę pracownicy?

ALTER TABLE pracownicy MODIFY plec char9);
A. Doda kolumnę plec ze znakowym typem danych o stałej długości 9.
B. Zmieni typ danych kolumny plec na znakowy o zmiennej długości 9.
C. Doda kolumnę plec ze znakowym typem danych o zmiennej długości 9.
D. Zmieni typ danych kolumny plec na znakowy o stałej długości 9.
Zmiana kolumny 'plec' poprzez dodanie nowej kolumny zamiast modyfikacji istniejącej jest błędna, ponieważ kwerenda SQL ALTER TABLE z modyfikacją nie dodaje nowej kolumny, lecz zmienia atrybuty już istniejącej. W przypadku dodania kolumny z typem znakowym o stałej długości, nie byłoby to możliwe bez użycia innego polecenia, takiego jak ADD COLUMN, co jest całkowicie inną operacją. Ponadto, zmiana na typ danych o zmiennej długości nie ma zastosowania w tej sytuacji, ponieważ char(9) zawsze rezerwuje 9 znaków, niezależnie od tego, ile znaków faktycznie jest zapisanych, co jest kluczową różnicą w porównaniu do varchar, który jest typem zmiennej długości. Ostatnia niepoprawna odpowiedź sugeruje, że kolumna mogłaby mieć typ znakowy o zmiennej długości, co nie jest zgodne z definicją char, gdyż ten typ danych zawsze zarezerwuje maksymalną długość zdefiniowaną przez użytkownika. W praktyce oznacza to, że przy użyciu char(9) każda wartość w kolumnie 'plec' będzie zawsze składać się z 9 znaków, a w przypadku krótszych wartości zostaną one wypełnione spacjami. Zrozumienie różnicy między typami danych oraz ich właściwą modyfikację jest kluczowe dla efektywnego zarządzania bazami danych.

Pytanie 16

Z bazy danych trzeba uzyskać zapytaniem SQL nazwiska pracowników, którzy sprawują funkcję kierownika, a ich wynagrodzenie mieści się w jednostronnie domkniętym przedziale (3000, 4000>. Która klauzula weryfikuje ten warunek?

A. WHERE kierownik = true OR pensja > 3000 OR pensja <= 4000
B. WHERE kierownik = true AND pensja => 3000 AND pensja <= 4000
C. WHERE kierownik = true AND pensja => 3000 OR pensja < 4000
D. WHERE kierownik = true AND pensja > 3000 AND pensja <= 4000
Nieprawidłowe odpowiedzi bazują na mylnych założeniach dotyczących operatorów logicznych oraz porównawczych w SQL. Przykładowo, w przypadku użycia klauzuli 'WHERE kierownik = true OR pensja > 3000 OR pensja <= 4000;' spełniony jest warunek dla każdej z trzech części, co prowadzi do zbyt szerokiego zakresu wyników. Operator OR zwraca wyniki, jeśli przynajmniej jeden z warunków jest prawdziwy, co w rezultacie może obejmować pracowników, którzy nie są kierownikami. Klauzula 'WHERE kierownik = true AND pensja => 3000 OR pensja < 4000;' również jest niepoprawna, gdyż składnia operatora => jest błędna (powinno być >=), a ponadto użycie OR sprawia, że wyniki mogą obejmować pracowników, którzy nie spełniają wymagań pensjowych. Kolejna nieadekwatna klauzula 'WHERE kierownik = true AND pensja => 3000 AND pensja < 4000;' również zawiera błąd w zapisie operatora porównania, co uniemożliwia poprawne wykonanie zapytania. Przyczyną tych błędów są często nieznajomość operatorów oraz niepoprawne rozumienie logiki zapytań SQL. W praktyce, zrozumienie różnicy pomiędzy AND a OR oraz prawidłowe stosowanie operatorów porównawczych jest kluczowe dla uzyskania oczekiwanych wyników w bazach danych. W kontekście profesjonalnego podejścia do SQL, ważne jest także, aby zapytania były nie tylko poprawne syntaktycznie, ale również semantycznie, co zapewnia ich efektywność i wiarygodność.

Pytanie 17

Tabela filmy zawiera klucz główny id oraz klucz obcy rezyserID, natomiast tabela rezyserzy ma klucz główny id. Obydwie tabele są połączone relacją jeden do wielu, gdzie strona rezyserzy odnosi się do strony filmy. Jak należy zapisać kwerendę SELECT, aby połączyć tabele filmy i rezyserzy?

A. ... filmy JOIN rezyserzy ON filmy.rezyserID = rezyserzy.filmyID ...
B. ... filmy JOIN rezyserzy ON filmy.rezyserID = rezyserzy.id ...
C. ... filmy JOIN rezyserzy ON filmy.id = rezyserzy.filmyID ...
D. ... filmy JOIN rezyserzy ON filmy.id = rezyserzy.id ...
Odpowiedź, która wskazuje na połączenie tabeli filmy z tabelą rezyserzy za pomocą klauzuli JOIN, z warunkiem ON filmy.rezyserID = rezyserzy.id, jest prawidłowa, ponieważ bezpośrednio odzwierciedla relację pomiędzy tymi dwiema tabelami. Klucz obcy rezyserID w tabeli filmy wskazuje na klucz główny id w tabeli rezyserzy. W związku z tym, aby prawidłowo połączyć te tabele w kwerendzie SELECT, musimy użyć tego klucza obcego w warunku połączenia. Przykładowo, w realnych zastosowaniach chcesz uzyskać informacje o filmach oraz ich reżyserach; więc pisząc zapytanie, możesz z łatwością uzyskać dane, takie jak tytuł filmu i imię reżysera, co jest kluczowe w systemach zarządzania bazą danych. Dobre praktyki wskazują, że zawsze należy używać poprawnych kluczy do łączenia tabel, aby uzyskać wiarygodne i dokładne wyniki, co jest fundamentalne w projektowaniu baz danych i tworzeniu zapytań SQL.

Pytanie 18

Co powinno znaleźć się w dokumentacji UŻYTKOWNIKA aplikacji?

A. opis użytych technologii i bibliotek
B. instrukcja obsługi funkcji systemu
C. szczegółowy opis kodu źródłowego
D. opis algorytmów zastosowanych w kodzie
Dokumentacja UŻYTKOWNIKA jest pisana dla osoby obsługującej program, więc zawiera instrukcję obsługi jego funkcji - jak wykonać typowe zadania, krok po kroku, bez wnikania w kod. Dlatego znajdzie się w niej instrukcja obsługi funkcji systemu.

Pytanie 19

Z jaką bazą danych nawiązuje połączenie funkcja pg_connect w PHP?

A. MS Access
B. MS SQL
C. PostgreSQL
D. MySQL
Pozostałe bazy mają inne funkcje łączące. MySQL obsługuje mysqli_connect(), MS SQL Server - funkcje sqlsrv_, a do MS Access łączy się zwykle przez ODBC/PDO. Prefiks pg_ jednoznacznie wskazuje PostgreSQL.

Pytanie 20

Czemu odpowiada pojęcie „krotka” w relacyjnej bazie danych?

A. relacji
B. wierszowi
C. kolumnie
D. tabeli
Pozostałe pojęcia to inne elementy. Relacja (tabela) to cały zbiór krotek, a kolumna (atrybut) opisuje pojedynczą cechę. Pojedynczy rekord, czyli krotka, odpowiada wierszowi.

Pytanie 21

Aby za pomocą instrukcji SELECT uzyskać listę nazwisk osób mieszkających na osiedlu, przy czym nazwiska te nie mogą się powtarzać, należy sformułować zapytanie w następujący sposób

A. SELECT AVG(nazwisko) FROM mieszkancy
B. SELECT DISTINCT nazwisko FROM mieszkancy
C. SELECT nazwisko FROM mieszkancy ORDER BY nazwisko
D. SELECT TOP 10 nazwisko FROM mieszkancy
Odpowiedzi, które nie wykorzystują klauzuli DISTINCT, nie są w stanie spełnić wymogu eliminacji duplikatów w wynikach zapytania. Na przykład, użycie "SELECT nazwisko FROM mieszkancy ORDER BY nazwisko;" tylko sortuje wyniki według nazwisk, ale nie eliminuje powtarzających się rekordów. To jest typowy błąd w myśleniu, gdzie użytkownicy mogą myśleć, że sortowanie wystarczy, aby uzyskać unikalne wyniki. Jeżeli w tabeli znajduje się wiele osób o tym samym nazwisku, zapytanie to nadal zwróci wszystkie wystąpienia, co prowadzi do niepożądanych rezultatów. Z kolei "SELECT TOP 10 nazwisko FROM mieszkancy;" ogranicza wyniki do tylko 10 pierwszych rekordów, ale nie zapewnia ich unikalności. W zależności od kolejności, w jakiej dane są prezentowane, wynik może zawierać duplikaty, co nie spełnia wymagań zadania. Dodatkowo, "SELECT AVG(nazwisko) FROM mieszkancy;" ma na celu obliczenie średniej, co jest nonsensowne w kontekście kolumny tekstowej jak 'nazwisko', ponieważ średnia nie jest miarodajną miarą dla danych tekstowych. Takie podejście demonstruje niewłaściwe zrozumienie typów danych i ich zastosowań w SQL. W każdej sytuacji, umiejętność poprawnego formułowania zapytań SQL jest kluczowa dla efektywnej pracy z bazami danych i unikania błędów analitycznych.

Pytanie 22

Po uszkodzeniu serwera bazy danych, aby jak najszybciej przywrócić pełną bazę, należy użyć:

A. opisów struktur danych w tabelach
B. aktualnej kopii zapasowej
C. najnowszej wersji instalacyjnej serwera
D. kompletnej listy użytkowników serwera
Pozostałe opcje nie odtworzą danych. Najnowsza wersja instalacyjna serwera odbuduje samo OPROGRAMOWANIE, ale baza będzie pusta. Lista użytkowników i opisy struktur tabel to fragmenty informacji - bez właściwych rekordów nie wystarczą do odtworzenia bazy. Pełne przywrócenie daje aktualna kopia zapasowa.

Pytanie 23

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

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

Pytanie 24

Przyjmując, że użytkownik Adam nie miał dotychczas żadnych uprawnień, polecenie SQL przyzna mu prawa jedynie do

GRANT CREATE, ALTER ON sklep.* TO adam;
A. dodawania i modyfikacji danych w tabeli sklep
B. tworzenia i zmiany struktury wszystkich tabel w bazie sklep
C. tworzenia oraz modyfikowania struktury w tabeli sklep
D. dodawania i modyfikacji danych we wszystkich tabelach bazy sklep
To, co zaznaczyłeś, jest jak najbardziej na miejscu. W tym SQL-u, 'GRANT CREATE, ALTER ON sklep.* TO adam;' dajesz użytkownikowi, czyli adamowi, możliwości tworzenia i zmieniania struktury wszystkich tabel w bazie 'sklep'. Słowo 'CREATE' pozwala mu na tworzenie nowych tabel, a 'ALTER' umożliwia mu wprowadzanie zmian w tych istniejących, na przykład dodawanie czy usuwanie kolumn. Ważne, żeby ogarnąć, że 'sklep.*' oznacza wszystkie tabele w danej bazie, co jest zgodne z dobrymi praktykami w zarządzaniu bazami danych. No bo jakby adam miał ochotę dodać nową tabelę albo zmodyfikować istniejącą, to musi mieć odpowiednie uprawnienia. Przykładem może być sytuacja, gdy administrator daje programiście dostęp do zmian w strukturze tabel, żeby móc dodać nowe funkcje do aplikacji – to naprawdę ważne dla rozwoju systemu.

Pytanie 25

Która klauzula SQL służy do posortowania wyników zapytania?

A.
WHERE
B.
GROUP BY
C.
ORDER BY
D.
HAVING
Wyniki zapytania sortuje klauzula ORDER BY, po której podaje się kolumnę i kierunek: ASC (rosnąco, domyślnie) lub DESC (malejąco), np. SELECT * FROM klienci ORDER BY nazwisko ASC. Można sortować po wielu kolumnach. Dlatego do uporządkowania wyniku służy ORDER BY.

Pytanie 26

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

A. mysqli_exit( )
B. mysqli_rollback()
C. mysqli_commit()
D. mysqli_close()
Wybór odpowiedzi 'mysqli_exit()' pojawia się często wśród programistów, którzy mylą koncepcje związane z obsługą połączeń w PHP. Należy zaznaczyć, że taka funkcja nie istnieje w kontekście baz danych MySQL, co może prowadzić do frustracji i nieporozumień. Niektórzy mogą sądzić, że 'mysqli_exit()' jest funkcją kończącą pracę z bazą, jednak w rzeczywistości nie ma żadnej dokumentacji ani zastosowania dla tej funkcji w standardowej bibliotece PHP. W programowaniu ważne jest, aby stosować się do oficjalnych dokumentacji oraz standardów, co zapewnia nie tylko poprawność kodu, ale także jego bezpieczeństwo i stabilność. Kolejne propozycje, takie jak 'mysqli_rollback()' i 'mysqli_commit()', dotyczą transakcji w bazie danych, a nie zakończenia połączenia. 'mysqli_rollback()' cofa zmiany wprowadzone w bieżącej transakcji, a 'mysqli_commit()' zatwierdza te zmiany. Oznacza to, że obie funkcje mają na celu zarządzanie transakcjami, a nie zamykanie połączeń. Wybierając niewłaściwą funkcję, programista może napotkać problemy z zarządzaniem stanem aplikacji i bazy danych, co jest szczególnie istotne w kontekście aplikacji wielowątkowych lub o dużym natężeniu ruchu. Aby uniknąć takich błędów, warto regularnie przeglądać i aktualizować swoją wiedzę oraz korzystać z zaufanych źródeł informacji.

Pytanie 27

Wskaż właściwą sekwencję kroków w procesie projektowania relacyjnej bazy danych?

A. Określenie relacji, Określenie kluczy głównych tabel, Selekcja, Określenie zbioru danych
B. Selekcja, Określenie relacji, Określenie kluczy głównych tabel, Określenie zbioru danych
C. Określenie zbioru danych, Selekcja, Określenie kluczy głównych tabel, Określenie relacji
D. Określenie kluczy głównych tabel, Określenie zbioru danych, Selekcja, Określenie relacji
Wybranie błędnej odpowiedzi sugeruje, że nie do końca rozumiesz, jak działa proces projektowania relacyjnej bazy danych. Kiedy kolejność kroków jest pomijana, mogą się pojawić problemy. Czasem widziałem, że klucze podstawowe są określane jeszcze przed zdefiniowaniem zbioru danych. To może prowadzić do błędnego przypisania kluczy do tabel. Klucz podstawowy powinien być oparty na wcześniej zdefiniowanych danych, żeby wszystko było unikalne i wartościowe. Jak się nie rozumie, jakie dane mają być w bazie, to ustalanie relacji na wyrost nie ma sensu. W praktyce, jeśli źle podchodzimy do projektowania bazy danych, to później mogą być kłopoty z zarządzaniem danymi, co wpłynie na efektywność naszej aplikacji. Dlatego warto skupić się na dobrze przemyślanym zbiorze danych zanim zaczniemy myśleć o kluczach i relacjach.

Pytanie 28

Jakie dane zostaną wyświetlone po wykonaniu podanych poleceń?

bool gotowe = true;
cout << gotowe;
A. 0
B. nie
C. tak
D. 1
Analizując zadanie, należy zrozumieć, jak język C++ interpretuje zmienne typu bool podczas ich wypisywania. W podanym kodzie zmienna boolowska gotowe ma przypisaną wartość true. Gdy taka zmienna jest wypisywana przy użyciu cout, jej wartość jest domyślnie przekształcana na liczby całkowite 1 dla true i 0 dla false. To zachowanie wynika z domyślnej konfiguracji strumienia cout, który obsługuje wartości logiczne w sposób liczbowy. Niektórzy mogą się spodziewać, że cout wypisze słowo true lub true w formie tekstowej, jednak to wymaga użycia flagi boolalpha, która nie jest tu zastosowana. Dlatego też odpowiedzi takie jak tak lub nie są niepoprawne, ponieważ oznaczają oczekiwanie wyjścia tekstowego, które nie pasuje do domyślnego formatu C++. Innym błędem mogłoby być oczekiwanie, że wynik będzie zerem, jednak to byłoby możliwe tylko w przypadku, gdyby zmiennej przypisano wartość false. Takie nieporozumienia często wynikają z braku zrozumienia, jak strumienie w C++ konwertują wartości logiczne na tekst. Zrozumienie i prawidłowe zastosowanie tych reguł jest kluczowe dla programistów pracujących w tym języku, szczególnie gdy zależy im na efektywności i zgodności z konwencjami programistycznymi. Aby uniknąć takich nieporozumień, warto dokładnie studiować dokumentację dotyczącą zachowania strumieni w C++ i eksperymentować z różnymi ustawieniami, aby w pełni zrozumieć ich działanie w praktyce.

Pytanie 29

Jakie polecenie przywróci do działania uszkodzoną tabelę w SQL?

A. REPAIR TABLE tblname
B. ANALYZE TABLE tbl_name
C. REGENERATE TABLE tbl_name
D. OPTIMIZE TABLE tbl_name
REPAIR TABLE tblname jest komendą w SQL, która jest używana do naprawy uszkodzonych tabel w bazach danych, szczególnie w systemach zarządzania bazami danych, takich jak MySQL. Gdy tabela ulegnie uszkodzeniu z powodu awarii systemu, błędów oprogramowania lub innych problemów, użycie tej komendy pozwala na przywrócenie jej do stanu używalności. Przykładem może być sytuacja, gdy po awarii serwera tabela przestaje być dostępna. Wówczas wystarczy uruchomić polecenie REPAIR TABLE, aby zdiagnozować i naprawić problemy. Warto pamiętać, że ta komenda nie tylko przywraca integralność danych, ale także może poprawić wydajność tabeli, usuwając fragmentację. Praktyka wskazuje, że regularne sprawdzanie i naprawa tabel, zwłaszcza po dużych operacjach zapisu, jest dobrym nawykiem w zarządzaniu bazami danych. Dobrą praktyką jest również tworzenie kopii zapasowych tabel przed ich naprawą, co zabezpiecza dane przed potencjalną utratą w wyniku błędów przy naprawie.

Pytanie 30

Który z wymienionych to rozproszony system kontroli wersji projektu programistycznego?

A. FileZilla
B. Total Commander
C. Eclipse
D. Git
Pozostałe programy to inne narzędzia. Eclipse to środowisko programistyczne (IDE), FileZilla to klient FTP, a Total Commander to menedżer plików. Rozproszonym systemem kontroli wersji jest Git.

Pytanie 31

Fragment tabeli gory prezentuje polskie łańcuchy górskie oraz ich najwyższe szczyty. Przedstaw kwerendę, która oblicza średnią wysokość szczytów dla każdego łańcucha górskiego.

Idpasmonazwa wysokosc
134Góry Bystrzyckie(brak nazwy)949
137Góry BystrzyckieAnielska Kopa871
74Beskid ŻywieckiBabia Góra (Diablak)1725
41Beskid ŚląskiBarania Góra1220
145Góry KarczewskieBaraniec723
128Góry BardzkieBardzka Góra (Kalwaria)583
297TatryBeskid2012
A. SELECT pasmo, AVG(wysokosc) FROM gory GROUP BY pasmo
B. SELECT pasmo, COUNT(wysokosc) FROM gory ORDER BY pasmo
C. SELECT pasmo, SUM(wysokosc) FROM gory GROUP BY pasmo
D. SELECT pasmo, AVG(wysokosc) FROM gory LIMIT pasmo
Błędne odpowiedzi wynikają z nieprawidłowego zrozumienia, jak działa grupowanie i agregacja danych w SQL. Odpowiedź SELECT pasmo, AVG(wysokosc) FROM gory LIMIT pasmo nie jest poprawna, ponieważ klauzula LIMIT służy do ograniczenia liczby wyników zwracanych przez zapytanie, a nie do grupowania danych według pasma. Zastosowanie LIMIT pasmo prowadzi do błędu składniowego, gdyż LIMIT oczekuje liczby całkowitej, która określa maksymalną liczbę rekordów do zwrócenia. Odpowiedź SELECT pasmo, SUM(wysokosc) FROM gory GROUP BY pasmo chociaż poprawnie używa klauzuli GROUP BY, liczy sumę wysokości, a nie średnią, co jest niezgodne z treścią pytania. SUM() zlicza całkowitą wysokość szczytów w każdym paśmie, co nie odpowiada na pytanie o średnią wysokość. Odpowiedź SELECT pasmo, COUNT(wysokosc) FROM gory ORDER BY pasmo liczy ilość szczytów w każdym paśmie, co znowu mija się z celem pytania, które dotyczy średniej wysokości. COUNT() używa się do zliczania liczby niepustych rekordów w danej kolumnie, a ORDER BY po prostu sortuje wynik według wartości pasmo. Zrozumienie roli i funkcji każdej z klauzul SQL oraz ich połączenia jest kluczowe w dokładnym przetwarzaniu i interpretacji danych w kontekście analitycznym i raportowym. Tego typu błędy wynikają często z pomylenia funkcji agregujących lub niepełnego zrozumienia mechaniki SQL, co może prowadzić do błędnych wniosków w analizie danych.

Pytanie 32

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

A. nie będą zawierały powtórzeń
B. będą spełniały dany warunek
C. zostaną uporządkowane
D. będą zgrupowane według wskazanego pola
Użycie klauzuli DISTINCT w instrukcji SELECT w języku SQL ma na celu eliminację powtórzeń w zwracanych wynikach. Dzięki temu, gdy wykonujemy zapytanie, w którym chcemy uzyskać unikalne wartości z określonej kolumny, możemy uniknąć sytuacji, w której te same dane pojawiają się wielokrotnie. Na przykład, jeśli mamy tabelę z informacjami o klientach, a chcemy otrzymać listę unikalnych miast, w których mieszkają, możemy użyć zapytania SELECT DISTINCT city FROM customers. Ta funkcjonalność jest szczególnie przydatna w raportowaniu i analizie danych, gdzie unikalność wartości ma kluczowe znaczenie. Warto również zauważyć, że klauzula DISTINCT wpływa na wydajność zapytań, dlatego ważne jest, aby używać jej tylko wtedy, gdy jest to rzeczywiście konieczne. Przy stosowaniu DISTINCT warto również znać inne techniki, takie jak grupowanie danych przy użyciu GROUP BY, które może być bardziej odpowiednie w niektórych scenariuszach, szczególnie gdy chcemy wykonywać agregacje.

Pytanie 33

Jakie dane zostaną pokazane w wyniku wykonania podanego zapytania SQL na 8 rekordach w tabeli zwierzeta?

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
Analizując odpowiedzi, możemy zauważyć, że wybierając opcje inne niż Dika i Fuks, ignorujemy warunki postawione w zapytaniu SQL. Zapytanie używa operatora 'SELECT', aby wybrać dane z tabeli 'zwierzeta', ale tylko te, które spełniają konkretne kryteria określone za pomocą klauzuli 'WHERE'. Pierwszym warunkiem jest, że kolumna 'rodzaj' musi mieć wartość 2. Drugim warunkiem jest, że kolumna 'szczepienie' musi mieć wartość 2016. Kombinacja tych dwóch warunków za pomocą operatora 'AND' oznacza, że oba muszą być spełnione jednocześnie. Błędne odpowiedzi, takie jak Fafik, Brutus, Dika, Fuks oraz Figaro, Dika, Fuks sugerują, że nie wszystkie warunki były rozważone w analizie danych. W przypadku tych odpowiedzi niektóre z wymienionych imion nie spełniają wszystkich warunków zapytania, co jest błędem w interpretacji danych. Poprawne zapytanie wykorzystuje zarówno analizę logiczną, jak i znajomość struktury tabeli. Dla każdej kolumny i wiersza istotne jest dokładne zrozumienie, jakie dane są wymagane i jakie operatory logiczne są stosowane. Częsty błąd polega na nieuwzględnieniu jednego z warunków, co prowadzi do niepełnego lub błędnego wyniku. Dlatego ważne jest, aby zawsze dokładnie przemyśleć strukturę zapytania i dokładnie sprawdzić, jakie dane wpisujemy do każdego z warunków w klauzuli 'WHERE'. To pomoże uniknąć typowych błędów podczas pracy z bazami danych i zapewni, że wyniki są dokładne i zgodne z oczekiwaniami.

Pytanie 34

Którego atrybutu użyć, aby kolumna nie przyjmowała wartości PUSTEJ?

A.
DEFAULT
B.
NULL
C.
NOT NULL
D.
UNIQUE
Atrybut NOT NULL w definicji kolumny wymusza, by KAŻDY wiersz miał w niej wartość - próba wstawienia rekordu bez tego pola skończy się błędem. Stosuje się go dla danych obowiązkowych, np. imie VARCHAR(50) NOT NULL, oraz zawsze dla klucza głównego (musi istnieć, by identyfikować rekord). Zapamiętaj: NOT NULL = „to pole nie może być puste”.

Pytanie 35

Funkcję mysqli_num_rows() w PHP można wywołać po wykonaniu zapytania:

A.
SELECT
B.
DELETE
C.
INSERT
D.
UPDATE
Pozostałe zapytania nie zwracają zbioru wierszy, który można policzyć. INSERT dodaje rekordy, UPDATE je modyfikuje, a DELETE usuwa - żadne z nich nie oddaje tabeli wyników, więc mysqli_num_rows() nie miałaby czego liczyć (dla nich używa się mysqli_affected_rows()). Liczba wierszy w wyniku ma sens dla SELECT, dlatego to ono jest poprawne.

Pytanie 36

W tabeli podzespoly należy zaktualizować wartość pola URL na 'toshiba.pl' dla wszystkich rekordów, gdzie pole producent to TOSHIBA. W języku SQL ta zmiana będzie wyglądała następująco

A. UPDATE podzespoly SET URL='toshiba.pl' WHERE producent='TOSHIBA';
B. UPDATE producent='TOSHIBA' SET URL='toshiba.pl';
C. UPDATE podzespoly.producent='TOSHIBA' SET URL='toshiba.pl';
D. UPDATE podzespoly SET URL='toshiba.pl';
W analizowanych odpowiedziach występuje szereg błędów w zakresie składni SQL oraz koncepcji użycia klauzuli UPDATE. W pierwszej z niepoprawnych odpowiedzi brak jest warunku WHERE, co skutkuje aktualizacją URL dla wszystkich rekordów w tabeli 'podzespoly', co może prowadzić do niepożądanych zmian w bazie danych. Przy podejmowaniu decyzji o modyfikacji danych, klauzula WHERE jest kluczowa dla ograniczenia zakresu aktualizacji tylko do tych rekordów, które spełniają określone kryteria. Dodatkowo, w kolejnej odpowiedzi zastosowanie składni UPDATE producent='TOSHIBA' SET URL='toshiba.pl'; jest błędne, ponieważ nie reprezentuje ona poprawnej sekwencji SQL. W SQL nie można używać operatora równości bezpośrednio w kontekście instrukcji UPDATE. Ponadto, ostatnia odpowiedź również myli koncepcję, ponieważ sugeruje aktualizację na poziomie producenta, a nie rekordu w tabeli podzespoly. Stosowanie niewłaściwej składni oraz brak zrozumienia kontekstu aktualizacji prowadzi do poważnych błędów w pracy z bazami danych. Kluczowym błędem myślowym jest brak uznania, że każda operacja na bazie danych powinna być przemyślana pod kątem jej wpływu na integralność i spójność danych.

Pytanie 37

W systemie baz danych sklepu komputerowego znajduje się tabela o nazwie komputery. Aby stworzyć raport, który wyświetla dane z tabeli dla komputerów z co najmniej 8 GB pamięci oraz procesorem Intel, można użyć kwerendy

A. SELECT * FROM komputery WHERE procesor = "Intel" OR pamiec >= 8
B. SELECT * FROM komputery WHERE procesor = "Intel" AND pamiec >= 8
C. SELECT * FROM komputery WHERE procesor = "Intel" OR pamiec < 8
D. SELECT * FROM komputery WHERE procesor = "Intel" AND pamiec < 8
Niepoprawne odpowiedzi bazują na błędnych założeniach dotyczących użycia operatorów logicznych oraz porównania. W przypadku odpowiedzi, w której pamięć jest mniejsza niż 8 GB, zapytanie nie spełnia wymagań, ponieważ ogranicza zakres wyników do komputerów, które nie pasują do założonych kryteriów. Ponadto, zastosowanie operatora OR w kontekście, w którym zarówno procesor, jak i pamięć muszą spełniać konkretne warunki, prowadzi do uzyskania wyników, które nie odpowiadają założeniom raportu. Operator OR łączy wyniki, które spełniają przynajmniej jeden z warunków, co w tym przypadku prowadzi do wybierania komputerów, które mogą mieć mniejszą pamięć, a procesor wcale nie musi być Intel. Takie podejście często wynika z mylnego przekonania, że wystarczy spełnić jeden z warunków, aby uzyskać oczekiwane wyniki. W kontekście tworzenia kwerend, ważne jest, aby dokładnie rozumieć, jak działają różne operatory oraz jakie efekty wywołują w analizowanych danych. Zastosowanie operatorów logicznych musi być starannie przemyślane, aby zapewnić, że zapytania będą rzeczywiście zwracały tylko te dane, które są istotne oraz zgodne z wymaganiami użytkownika.

Pytanie 38

Aby odebrać użytkownikowi wcześniej nadane uprawnienia, należy zastosować polecenie:

A.
REVOKE
B.
DELETE PRIVILEGES
C.
GRANT NO PRIVILEGES
D.
DELETE
Trzy z tych odpowiedzi tylko wyglądają na związane z uprawnieniami. DELETE rzeczywiście istnieje w SQL, ale należy do poleceń operujących na danych - kasuje wiersze tabeli, a nie prawa dostępu. DELETE PRIVILEGES oraz GRANT NO PRIVILEGES brzmią sensownie, lecz są wymyślone - w standardzie SQL takich poleceń po prostu nie ma, więc serwer zgłosiłby błąd składni. Zarządzanie uprawnieniami opiera się na dwóch komendach DCL: GRANT je nadaje, a REVOKE odbiera. Do cofnięcia przyznanych wcześniej praw właściwe jest więc REVOKE.

Pytanie 39

Który element relacyjnej bazy danych (kod w języku SQL) można WYWOŁAĆ wewnątrz zapytania, tak że zwróci wartość lub dane widoczne jak tabela?

A. funkcja zdefiniowana przez użytkownika
B. reguła
C. procedura składowana
D. wyzwalacz
Pozostałe elementy działają inaczej. Wyzwalacz (trigger) uruchamia się automatycznie przy zmianie danych, a nie na żądanie w zapytaniu. Procedury składowanej nie wywołuje się wewnątrz SELECT jak źródła danych (uruchamia się ją osobno). Reguła to ograniczenie. Wartość lub dane w zapytaniu zwraca funkcja zdefiniowana przez użytkownika.

Pytanie 40

Jakiego polecenia SQL należy użyć, aby usunąć z tabeli artykuly wiersze, które zawierają słowo "sto" w dowolnej lokalizacji pola tresc?

A. DELETE * FROM artykuly WHERE tresc LIKE "%sto%";
B. DELETE * FROM artykuly WHERE tresc = "%sto%";
C. DELETE FROM artykuly WHERE tresc = "%sto%";
D. DELETE FROM artykuly WHERE tresc LIKE "%sto%";
Wszystkie błędne odpowiedzi opierają się na niezrozumieniu podstawowej funkcji operatora DELETE w języku SQL oraz zasad dotyczących dopasowywania wzorców. Przykłady takie jak 'DELETE * FROM artykuly WHERE tresc = "%sto%";' oraz 'DELETE * FROM artykuly WHERE tresc LIKE "%sto%";' zawierają nieprawidłowe użycie składni, które nie jest zgodne z standardem SQL. W SQL nie używa się znaku '*' w poleceniach DELETE, gdyż zapis 'DELETE * FROM' jest poprawny tylko dla zapytań SELECT. W kontekście usuwania danych, należy używać jedynie 'DELETE FROM', co jest wystarczające dla określenia, z jakiej tabeli mają zostać usunięte rekordy. Ponadto, pierwsza błędna odpowiedź zdobija wszystkie potencjalne błędy związane z niepoprawnym użyciem operatora '='. Operator '=' wymaga dokładnego dopasowania, co oznacza, że nie może być stosowany do wyszukiwania wzorców, w przeciwieństwie do operatora LIKE, który umożliwia elastyczne dopasowanie z użyciem znaków wieloznacznych. Typowym błędem jest więc przekonanie, że '=' oraz LIKE mogą być stosowane zamiennie bez uwzględnienia, że '=' nie przyjmuje znaków procentowych. Dlatego kluczowe jest, aby przed użyciem poleceń SQL upewnić się, że rozumie się ich składnię oraz zasady działania, co pozwoli uniknąć wielu pułapek w codziennej pracy z bazami danych.