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: 8 czerwca 2026 10:35
  • Data zakończenia: 8 czerwca 2026 11:03

Egzamin zdany!

Wynik: 33/40 punktów (82,5%)

Wymagane minimum: 20 punktów (50%)

Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

W języku JavaScript rezultat wykonania polecenia zmienna++; będzie identyczny jak polecenia

A. zmienna --;
B. zmienna+=1;
C. zmienna=zmienna+10;
D. zmienna===zmienna+1;
W języku JavaScript operator inkrementacji '++' zwiększa wartość zmiennej o 1. Zapis 'zmienna++' jest równoważny z 'zmienna += 1', ponieważ obydwa polecenia prowadzą do tej samej końcowej wartości zmiennej. Operator '+=' to skrót, który dodaje wartość po prawej stronie operatora do aktualnej wartości zmiennej. Warto nadmienić, że 'zmienna++' działa w trybie post-inkrementacji, co oznacza, że zwraca pierwotną wartość przed inkrementacją, podczas gdy '++zmienna' działa w trybie pre-inkrementacji, zwracając wartość po inkrementacji. Przykładowo, jeśli zmienna wynosi 5, to po zastosowaniu 'zmienna++' jej nowa wartość stanie się 6, a jej wartość zwracana to 5. Zastosowanie operatora '+=' jest zgodne z ECMAScript, standardem, na którym oparty jest JavaScript. Użycie tych operatorów jest powszechne w programowaniu, zwłaszcza w iteracjach i obliczeniach. Przykładając to do praktyki, w kodzie można zobaczyć takie zastosowanie: let x = 5; x++; console.log(x); // wypisze 6, a let y = 5; y += 1; console.log(y); // również wypisze 6.

Pytanie 2

Które metody są związane z predefiniowanym obiektem Date w języku JavaScript?

A.
row()
B.
fromCodePoint()
C.
concat() oraz pop()
D.
getMonth() oraz getDay()
Obiekt Date w JavaScript przechowuje datę i czas oraz udostępnia metody do ich odczytu i ustawiania. Należą do nich m.in. getMonth() (numer miesiąca, 0-11), getDay() (dzień tygodnia, 0-6), getFullYear(), getHours() czy getTime(). Obiekt tworzy się przez new Date(). Dlatego z obiektem Date związane są getMonth() i getDay().

Pytanie 3

Który z poniższych formatów NIE pozwala na zapis plików animowanych?

A. GIF
B. ACE
C. SWF
D. SVG
ACE to format archiwum - służy do pakowania i kompresji plików (podobnie jak ZIP czy RAR), a nie do przechowywania grafiki czy animacji. Pozostałe formaty potrafią zapisać ruchome treści: GIF łączy wiele klatek w prostą animację, SWF (Flash) przechowuje animacje i interaktywność, a SVG (wektorowy) może zawierać animacje definiowane np. w CSS lub SMIL. Dlatego animacji nie zapisze ACE.

Pytanie 4

Aby zaktualizować maksymalną długość kolumny imie w tabeli klienci do 30 znaków, należy zastosować w języku SQL poniższy kod

A. ALTER TABLE klienci MODIFY COLUMN imie VARCHAR(30);
B. CHANGE TABLE klienci TO COLUMN imie SET CHAR(30);
C. CHANGE TABLE klienci MODIFY imie CHAR(30);
D. ALTER TABLE klienci CHANGE imie TEXT;
Aby zmienić maksymalną długość pola 'imie' w tabeli 'klienci' na 30 znaków, używamy polecenia SQL 'ALTER TABLE', które jest standardowym sposobem modyfikacji struktury tabeli w bazach danych. W tym przypadku wykorzystujemy 'MODIFY COLUMN', co jest istotne, ponieważ pozwala na precyzyjne określenie, że chcemy zmienić właściwości konkretnej kolumny. Typ danych 'VARCHAR' oznacza, że kolumna może przechowywać zmienne długości tekstu, a wartość 30 oznacza maksymalną liczbę znaków. Przykładowo, jeśli w bazie danych już istnieją rekordy, to zmiana ta nie wpłynie na dane, które są krótsze niż 30 znaków, ale może być problematyczna, jeśli próbujemy wprowadzić dane dłuższe niż dozwolone, ponieważ takie operacje mogą kończyć się błędami. Warto również zaznaczyć, że różne systemy zarządzania bazami danych, takie jak MySQL, PostgreSQL czy Oracle, mogą mieć drobne różnice w składni, ale zasada działania polecenia 'ALTER TABLE' pozostaje zasadniczo taka sama. To podejście jest zgodne z zaleceniami standardu SQL i jest powszechnie stosowane w praktykach administracji bazami danych.

Pytanie 5

Wynikiem realizacji zamieszczonego kodu PHP jest pokazanie komunikatu

Ilustracja do pytania
A. warunek1
B. warunek2
C. warunek3
D. warunek4
Kod w języku PHP przedstawia warunki logiczne, które oceniają wartości zmiennych $a, $b, $c i $d. Zmienna $a i $c są ustawione na true, natomiast $b i $d na false. Pierwszy warunek sprawdza, czy zarówno $a && $b (czyli true && false, co daje false) lub $c && $d (czyli true && false, co również daje false) jest prawdziwe. Oba wyrażenia są fałszywe, więc warunek if nie zostanie spełniony. Drugi warunek elseif sprawdza, czy $a && $b (false) lub $c || $d (true || false, co daje true) jest prawdziwe. Ponieważ $c || $d jest prawdziwe, cały warunek jest spełniony i zostanie wyświetlony komunikat warunek2. Dobrym przykładem praktycznego zastosowania takich konstrukcji jest walidacja danych w aplikacjach webowych, gdzie można łączyć różne warunki logiczne w celu osiągnięcia wymaganej logiki decyzyjnej. Ważne jest, by rozumieć priorytety operatorów logicznych i zasady działania operatora „OR” (||) i „AND” (&&) w języku PHP, zgodnie z dokumentacją PHP.

Pytanie 6

Który z podanych formatów pozwala na zapis zarówno dźwięku, jak i obrazu?

A. MP3
B. MP4
C. PNG
D. WAV
Format MP4, znany również jako MPEG-4 Part 14, jest jednym z najpopularniejszych formatów multimedialnych, który umożliwia jednoczesny zapis zarówno dźwięku, jak i obrazu. Dzięki zastosowaniu zaawansowanej kompresji, MP4 pozwala na przechowywanie wysokiej jakości materiałów w stosunkowo małych plikach, co czyni go idealnym do przesyłania i strumieniowania w Internecie. MP4 obsługuje wiele kodeków, takich jak H.264 dla wideo oraz AAC dla dźwięku, co pozwala na szeroką kompatybilność z różnymi urządzeniami, od smartfonów po odtwarzacze multimedialne. Format ten jest zgodny z wieloma standardami, co czyni go wszechstronnym wyborem dla twórców treści. Przykłady jego zastosowania obejmują filmy wideo na platformach streamingowych, klipy muzyczne i wideoklipy. Dzięki swoim zaletom, MP4 stał się de facto standardem w przemyśle multimedialnym, co w znacznym stopniu przyczyniło się do jego popularności oraz wszechstronności.

Pytanie 7

Który format stosuje BEZSTRATNĄ kompresję dźwięku?

A. MP3
B. AAC
C. WWA
D. FLAC
FLAC (Free Lossless Audio Codec) kompresuje dźwięk BEZSTRATNIE - zmniejsza rozmiar pliku, ale zachowuje pełną jakość oryginału. Dlatego bezstratną kompresję dźwięku stosuje FLAC.

Pytanie 8

Którego selektora użyć, aby odmiennie sformatować PIERWSZĄ literę akapitu?

A. selektora klasy p.first-letter
B. selektora dziecka p + first-letter
C. selektora atrybutu p [first-letter]
D. pseudoelementu p::first-letter
Pierwszą literę akapitu formatuje pseudoelement p::first-letter - pozwala np. zrobić inicjał (duża, ozdobna litera na początku). Pseudoelementy (z ::) sięgają fragmentu, którego nie ma osobnego znacznika. Zapamiętaj: ::first-letter celuje w samą pierwszą literę, bez dodatkowego HTML-a.

Pytanie 9

Co według zasad ACID oznacza wymóg TRWAŁOŚCI (durability) transakcji?

A. transakcję można podzielić na dwa niezależne etapy
B. w trakcie transakcji dane mogą zmieniać inne transakcje
C. przy naruszeniu spójności transakcja usuwa tabele z kluczami obcymi
D. dane zatwierdzone przez transakcję pozostają dostępne mimo późniejszych zdarzeń
Trwałość (durability) z reguł ACID gwarantuje, że dane raz ZATWIERDZONE (commit) przez transakcję pozostaną w bazie na stałe - nawet jeśli zaraz potem nastąpi awaria zasilania czy restart serwera. System osiąga to, zapisując zmiany w sposób przetrwający awarię, np. w dzienniku transakcji. Dlatego trwałość oznacza, że zatwierdzone dane pozostają dostępne mimo późniejszych awarii.

Pytanie 10

Aby obraz w filmie zmieniał się płynnie, liczba klatek na sekundę powinna wynosić co najmniej:

A. 16 - 19 fps
B. 20 - 23 fps
C. 24 - 30 fps
D. 31 - 36 fps
Płynność ruchu na ekranie zależy od liczby wyświetlanych klatek na sekundę (fps). Ludzkie oko odbiera ruch jako ciągły mniej więcej od 24 klatek na sekundę - to klasyczny standard filmowy (telewizja używa 25 lub 30). Poniżej tej wartości ruch wydaje się szarpany. Dlatego minimalny zakres dający płynny obraz to 24 - 30 fps.

Pytanie 11

Która kolejność stylów CSS jest poprawna pod względem priorytetu (od najwyższego)?

A. lokalny → wewnętrzny → zewnętrzny
B. zewnętrzny → wydzielone bloki → lokalny
C. rozciąganie stylu → zewnętrzny → lokalny
D. wewnętrzny → zewnętrzny → rozciąganie stylu
Przy kaskadzie CSS najwyższy priorytet ma styl LOKALNY (inline, w atrybucie style), potem WEWNĘTRZNY (w <style> w nagłówku), a najniższy ZEWNĘTRZNY (dołączony plik CSS). Dlatego kolejność to: lokalny, wewnętrzny, zewnętrzny.

Pytanie 12

Co nada polecenie

GRANT SELECT, INSERT, UPDATE ON klienci TO anna;
(anna nie miała wcześniej praw)?
A. prawa do wybierania, wstawiania i aktualizacji DANYCH w tabeli klienci
B. prawa do dodawania kolumn i zmiany STRUKTURY tabeli klienci
C. prawa do danych we WSZYSTKICH tabelach bazy
D. prawa do zmiany struktury wszystkich tabel bazy
GRANT SELECT, INSERT, UPDATE ON klienci TO anna; nadaje użytkowniczce anna prawa do operacji na DANYCH konkretnej tabeli klienci: odczytu (SELECT), wstawiania (INSERT) i aktualizacji (UPDATE). Dlatego nadaje prawa do wybierania, wstawiania i aktualizacji danych w tabeli klienci.

Pytanie 13

Która deklaracja w C++ przyjmuje argument typu RZECZYWISTEGO i zwraca wynik typu CAŁKOWITEGO?

A.
void fun1(int a);
B.
int fun1(float a);
C.
float fun1(int a);
D.
float fun1(void a);
Funkcja ma przyjmować argument RZECZYWISTY i zwracać CAŁKOWITY. Argument rzeczywisty to float a, a typ zwracany całkowity to int przed nazwą - czyli int fun1(float a). Dlatego poprawna deklaracja to int fun1(float a);.

Pytanie 14

Która z pętli w PHP umożliwia przeprowadzenie operacji na wszystkich elementach tablicy z automatycznym przypisaniem indeksów tych elementów?

A. for
B. while
C. foreach
D. do...while
Zarówno konstrukcja 'for', 'while', jak i 'do...while' są pętlami, które służą do wykonywania bloków kodu wielokrotnie, jednak każda z nich ma swoje specyficzne zastosowania, które mogą prowadzić do nieefektywności w kontekście iteracji po tablicach. Użycie pętli 'for' wymaga manualnego zarządzania indeksami, co zwiększa ryzyko błędów, zwłaszcza w przypadku tablic o zmiennej długości. Przykładowo, iterując po tablicy za pomocą 'for', musimy ustawić warunki początkowe, końcowe oraz właściwie modyfikować indeks, co może prowadzić do błędów, jeśli nie zostanie to prawidłowo skonfigurowane. Z drugiej strony, pętle 'while' i 'do...while' są bardziej elastyczne, ale również wymagają dodatkowego sprawdzania warunków, co czyni je mniej przejrzystymi w kontekście iteracji po tablicach. Często prowadzi to do sytuacji, w których programiści popełniają błędy logiczne, takie jak zapętlenie się lub pominięcie elementów, co z kolei skutkuje trudnościami w utrzymaniu kodu. Dlatego, zamiast stosować te pętle, lepiej jest korzystać z 'foreach', która jest dedykowana do pracy z tablicami i eliminuje wiele problemów związanych z zarządzaniem indeksami.

Pytanie 15

Aby skryptem PHP wstawić do bazy dane z formularza, używasz wywołania:

mysqli_query($zm1, $zm2);
Co należy przekazać w parametrach $zm1 i $zm2?
A. w $zm1 identyfikator połączenia, w $zm2 zapytanie SELECT
B. w $zm1 identyfikator połączenia z bazą, w $zm2 zapytanie INSERT INTO
C. w $zm1 id wiersza, w $zm2 zapytanie INSERT INTO
D. w $zm1 wartość NULL, w $zm2 zapytanie SELECT
Funkcja mysqli_query() przyjmuje dwa parametry: pierwszy ($zm1) to uchwyt połączenia z bazą zwrócony przez mysqli_connect(), a drugi ($zm2) to treść zapytania SQL. Aby wstawić dane, w drugim parametrze przekazuje się zapytanie INSERT INTO. Dlatego poprawne jest: połączenie w $zm1 i INSERT INTO w $zm2.

Pytanie 16

Poniżej przedstawiono fragment kodu w języku PHP. Jakie liczby wypisze ta pętla jako wynik swojego działania?

for ($i = 0; $i <= 20; $i += 4)
echo $i . ' ';
A. 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
B. 0,4,8,12,16,20
C. 0,4,8,12,16
D. 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
Kiedy patrzymy na ten kod pętli for, musimy zrozumieć, jak działają trzy ważne rzeczy: co się dzieje na początku, jaki jest warunek do dalszego działania i jak zmieniamy naszą zmienną. W tym przypadku pętla zaczyna od 0 i dodaje 4, aż dojdzie do 20. Czasem błędne odpowiedzi wynikają z tego, że nie do końca rozumiemy, jak działa ten warunek, albo z jaką wartością inkrementujemy. Często myślimy, że pętla skończy się przed 20, a to nie jest prawda. Inną pułapką jest zrozumienie, że dodawanie 4 to nie to samo, co branie wszystkich liczb od 0 do 20. Dobrze jest znać zasady działania pętli for, bo to pomaga w rozwiązywaniu problemów w programowaniu i sprawia, że kod działa lepiej. Przy budowaniu takich pętli pamiętajmy o precyzyjnym definiowaniu warunków i tego, jak zmieniamy wartości, bo to ważne dla uzyskania wyników, które chcemy.

Pytanie 17

W PHP zmienna $_GET stanowi zmienną

A. predefiniowaną, służącą do przesyłania informacji do skryptów PHP przez adres URL
B. zwykłą, utworzoną przez autora strony
C. predefiniowaną, wykorzystywaną do zbierania danych formularza po nagłówkach żądania HTTP (informacje z formularza nie są widoczne w URL)
D. utworzoną przez autora strony, przeznaczoną do przesyłania danych z formularza przez adres URL
Odpowiedzi, które wskazują na to, że zmienna $_GET jest zwykłą zmienną lub jest definiowana przez twórcę strony, są nieprawidłowe. $_GET jest superglobalną tablicą, co oznacza, że jej dostępność jest zapewniona w całym skrypcie bez potrzeby wcześniejszego deklarowania. Zrozumienie różnicy między zmiennymi predefiniowanymi a tymi zdefiniowanymi przez użytkownika jest kluczowe dla właściwego zarządzania danymi w PHP. Ponadto, odpowiedzi sugerujące, że $_GET służy do gromadzenia wartości formularza po nagłówkach zlecenia HTTP, mylą metodę GET z metodą POST. W przeciwieństwie do POST, dane przesyłane za pomocą GET są widoczne w adresie URL, co czyni je mniej bezpiecznymi dla wrażliwych danych. Mówiąc o formularzach, $_GET jest jedynie jedną z metod przesyłania danych, obok $_POST i $_REQUEST, z których każda ma swoje specyficzne zastosowania i ograniczenia. Generalnie, korzystanie z $_GET jest odpowiednie do przesyłania niewielkich ilości danych, takich jak parametry zapytań, ale należy być świadomym, że wykorzystywanie tej metody z danymi wrażliwymi jest ryzykowne i należy unikać tego podejścia w praktyce. Dbając o bezpieczeństwo aplikacji, warto zrozumieć te różnice i stosować się do dobrych praktyk dotyczących przetwarzania danych wejściowych.

Pytanie 18

Jakie wyrażenie należy umieścić w miejsce ??? w pętli napisanej w języku C++, aby na ekranie zostały wyświetlone wyłącznie elementy tablicy tab?

int tab[6];
for (int i = 0; ???; i++)
    cout << tab[i];
A. i >= 6
B. i < 6
C. i <= 6
D. i > 6
Wybór wyrażenia i < 6 jako warunku w pętli for jest poprawny, ponieważ tablica tab została zadeklarowana z sześcioma elementami, co oznacza, że indeksy tej tablicy wahają się od 0 do 5. W języku C++ indeksy tablic zaczynają się od zera, co jest standardową konwencją w wielu językach programowania, takich jak C, C++, Java czy Python. Dzięki zastosowaniu wyrażenia i < 6 w warunku pętli for, zapewniamy, że iteracja obejmuje wszystkie dopuszczalne indeksy tablicy, tj. 0, 1, 2, 3, 4 i 5. Jest to kluczowe dla uniknięcia błędów typu out-of-bounds, które mogą prowadzić do nieprzewidywalnego zachowania programu lub jego awarii. W praktyce, podczas pracy z tablicami, bardzo ważne jest upewnienie się, że indeksy używane w pętli mieszczą się w zakresie długości tablicy. Taki sposób iteracji jest zgodny z dobrymi praktykami programistycznymi, które kładą nacisk na bezpieczeństwo i niezawodność kodu. Ponadto, stosowanie wyraźnych warunków w pętlach poprawia czytelność kodu, co jest istotne w większych projektach, w których kod jest utrzymywany przez zespoły programistyczne.

Pytanie 19

W CSS zastosowano poniższe formatowanie. Kolorem czerwonym będzie wyświetlony

h1 i {
   color: red;
}
A. jedynie tekst italic we wszystkich poziomach nagłówków
B. cały tekst nagłówka pierwszego stopnia oraz tekst italic akapitu
C. cały tekst nagłówka pierwszego stopnia oraz wszelki tekst italic, niezależnie od lokalizacji na stronie
D. tylko tekst italic nagłówka pierwszego stopnia
W stylach CSS selektor złożony h1 i oznacza, że formatowanie będzie stosowane tylko do elementów pochylonych i znajdujących się wewnątrz nagłówka pierwszego poziomu h1. W praktyce oznacza to, że taki zapis CSS zmienia kolor na czerwony tylko dla tekstu wewnątrz tagu <i> znajdującego się w <h1>. Selekcja złożona umożliwia precyzyjne określanie, które elementy są formatowane, co jest kluczowe w przypadku dużych i złożonych stron internetowych. Zrozumienie działania selektorów jest fundamentem efektywnego stylizowania dokumentów HTML. Pozwala to na zachowanie spójności wizualnej oraz lepszą kontrolę nad wyglądem strony. Dobór odpowiednich selektorów w CSS to również jedna z dobrych praktyk, które sprzyjają czytelności kodu oraz jego łatwiejszej konserwacji w przyszłości. Taki zapis pozwala na minimalizację konfliktów stylów, które mogą się pojawić przy bardziej ogólnych selektorach. Praktyczne użycie selektorów złożonych jest więc zalecane w celu uzyskania bardziej kontrolowanego i przewidywalnego wyglądu strony internetowej, co jest zgodne ze standardami webowymi promującymi semantyczne i uporządkowane kodowanie.

Pytanie 20

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

Ilustracja do pytania
A. SELECT Zamówienia.id, nazwa FROM Zamówienia JOIN Firmy 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 id, nazwa FROM Zamówienia JOIN Firmy ON Zamówienia.Firmy_id = Firmy.id WHERE poziom = 4
Odpowiedź numer 2 jest prawidłowa, ponieważ wykorzystuje poprawne połączenie między tabelami Zamowienia i Firmy przy użyciu klucza obcego Firmy_id, co jest zgodne z praktykami projektowania relacyjnych baz danych. Klucz obcy w tabeli Zamowienia wskazuje na klucz główny w tabeli Firmy, co odzwierciedla relację jeden do wielu, gdzie jedna firma może mieć wiele zamówień. Właściwe stosowanie kluczy obcych nie tylko poprawia integralność danych, ale także ułatwia zrozumienie struktury danych. Właściwe użycie klauzuli JOIN z warunkiem ON pozwala na efektywne powiązanie rekordów z obu tabel. Warunek WHERE poziom = 4 pozwala na filtrowanie wyników, co jest kluczowe w analizie danych, umożliwiając wyodrębnienie tylko tych rekordów, które spełniają określone kryteria. Dzięki temu możemy uzyskać zestaw danych zawierający tylko te zamówienia, które pochodzą od firm o określonym poziomie, co jest częstym wymogiem w raportach biznesowych. Praktyczne użycie tego typu zapytań jest niezastąpione w aplikacjach analitycznych i systemach raportowania, gdzie precyzyjne filtrowanie i łączenie danych ma kluczowe znaczenie dla podejmowania decyzji biznesowych. Dbając o zgodność z najlepszymi praktykami, takie zapytania powinny być dobrze testowane i optymalizowane, aby zapewnić ich efektywność w dużych zbiorach danych.

Pytanie 21

Jakie są nazwy standardowych instrukcji w języku SQL, które dotyczą wykonywania operacji na danych w SQL DML (np.: dodawanie danych do bazy, usuwanie, wprowadzanie zmian w danych)?

A. DELETE, INSERT, UPDATE
B. ALTER, CREATE, DROP
C. SELECT, SELECT INTO
D. DENY, GRANT, REVOKE
Inne odpowiedzi, czyli ALTER, CREATE, DROP, to komendy, które nie mają nic wspólnego z manipulowaniem danymi w kontekście DML. ALTER zmienia strukturę tabel, na przykład dodaje nowe kolumny, co jest ważne, ale nie wpływa na same dane. CREATE to z kolei tworzenie nowej tabeli lub obiektów w bazie danych, coś, co robimy zanim wprowadzimy jakiekolwiek dane. Natomiast DROP pozwala na usunięcie całej tabeli, co już jest działaniem, które w przypadku pomyłki nie da się cofnąć, więc trzeba na to uważać. SELECT i SELECT INTO to z kolei komendy DQL, czyli Data Query Language, a nie DML. SELECT wybiera dane z tabel, a SELECT INTO tworzy nową tabelę z wynikami. A DENY, GRANT i REVOKE dotyczą też zarządzania uprawnieniami w bazie danych, co jest ważne dla bezpieczeństwa, ale znowu – to nie o manipulacji danymi. Ważne jest, żeby umieć rozróżniać te kategorie, bo błędy w przyporządkowywaniu mogą prowadzić do poważnych problemów w projektowaniu baz danych i aplikacji, które z nich korzystają.

Pytanie 22

W środowisku PHP pobrano z bazy danych rezultat działania zapytania przy użyciu komendy mysql_query. W celu uzyskania z otrzymanej kwerendy jednego wiersza danych, konieczne jest użycie polecenia

A. mysql_fetch_row
B. mysql_list_fields
C. mysql_fetch_lengths
D. mysql_field_len
Odpowiedź 'mysql_fetch_row' jest prawidłowa, ponieważ to funkcja w PHP, która pobiera jeden wiersz danych jako tablicę numeryczną z wyników zapytania SQL. Jest to kluczowy element do pracy z danymi zwróconymi przez bazę danych, gdyż umożliwia nam iterację przez wyniki zapytania. Przykładowo, po wykonaniu kwerendy za pomocą 'mysql_query', używamy 'mysql_fetch_row', aby uzyskać pierwszy wiersz wyników: $row = mysql_fetch_row($result);. W praktyce, korzystając z tej funkcji, możemy odnosić się do poszczególnych kolumn, używając indeksów, co jest efektywne, zwłaszcza przy pracy z dużymi zbiorami danych. Warto pamiętać, że 'mysql_fetch_row' jest jedną z podstawowych funkcji w pracy z bazami danych w PHP, jednak w najnowszych projektach zaleca się korzystanie z rozszerzenia PDO lub MySQLi, które oferują lepsze zabezpieczenia oraz wsparcie dla obiektowego podejścia programowania. To także zgodne z najlepszymi praktykami w zakresie bezpieczeństwa i wydajności aplikacji webowych.

Pytanie 23

Która reguła dotycząca sekcji <head> w HTML jest poprawna?

A. w sekcji <head> nie można umieszczać kodu CSS, a jedynie odwołanie do pliku CSS
B. w sekcji <head> zawiera się sekcja <body>
C. w sekcji <head> definiuje się szablon strony znacznikami <div>
D. w sekcji <head> mogą wystąpić znaczniki <meta>, <title>, <link>
Sekcja <head> zawiera metadane dokumentu - informacje o stronie, a nie jej widoczną treść. Mieszczą się w niej m.in. <title> (tytuł karty), <meta> (np. kodowanie znaków, opis), <link> (dołączenie zewnętrznego arkusza CSS lub favikony) oraz <style> i <script>. Widoczną zawartość strony - nagłówki, akapity, obrazy, <div> - umieszcza się w odrębnej sekcji <body>. Dlatego poprawna jest reguła o <meta>, <title> i <link> w <head>.

Pytanie 24

Aby w JavaScript wykonać wymienione kroki, należy w znaczniku <script> umieścić kod

1. Wyświetlić okno do wpisania wartości z poleceniem "Podaj kwalifikację: ",
    następnie po zatwierdzeniu

2. Umieścić napis na stronie internetowej, gdzie w miejscu kropek znajduje się
    wartość pobrana z okna "Kwalifikacja: ..."
A. A = alert("Podaj kwalifikację: "); document.write("Kwalifikacja: " + A);
B. A = prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: ".A);
C. A = prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: " + A);
D. A << prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: " + A);
Gratulacje, wybrałeś prawidłową odpowiedź! Kiedy chcemy wykonać interakcje z użytkownikiem poprzez okno dialogowe w JavaScript, używamy funkcji 'prompt()'. Ta funkcja wyświetla okno dialogowe z komunikatem tekstowym, polem do wprowadzania danych i przyciskami OK / Anuluj. Wartość wprowadzona przez użytkownika jest następnie zwracana przez funkcję 'prompt()'. W tym przypadku, używamy funkcji 'prompt()' do pobrania kwalifikacji od użytkownika. Następnie, używamy funkcji 'document.write()' do wyświetlenia zdobytej kwalifikacji na stronie internetowej. Operator '+' jest używany do łączenia łańcuchów znaków (stringów) w JavaScript, co pozwala na połączenie wartości wprowadzonej przez użytkownika z komunikatem 'Kwalifikacja: '. Pamiętaj, że choć 'document.write()' jest łatwym sposobem na wyświetlanie wyników na stronie, jest to metoda zarezerwowana głównie do testowania i debugowania, a nie do użytku produkcyjnego, ze względu na możliwość nadpisania zawartości strony.

Pytanie 25

W bazie danych MySQL utworzono tabelę. Aby jednoznacznie zdefiniować, że pole ID jest kluczem głównym, należy dopisać

CREATE TABLE Osoby (
  ID int NOT NULL,
  nazwisko varchar(255) NOT NULL,
  wiek int
);
A. PK w linii, w której jest zdefiniowane pole ID.
B. PRIMARY KEY (ID) przed zamknięciem nawiasu.
C. PK (ID) przed zamknięciem nawiasu.
D. FOREIGN KEY w linii, w której jest zdefiniowane pole ID.
Twoja odpowiedź jest prawidłowa. W języku SQL, i w szczególności w systemie baz danych MySQL, aby zdefiniować pole ID jako klucz główny, należy użyć klauzuli PRIMARY KEY. Składnia jest dość prosta i wymaga umieszczenia wyrażenia 'PRIMARY KEY (ID)' przed zamknięciem nawiasu definiującego strukturę tabeli. Klucz główny jest kluczem unikalnym, który identyfikuje rekord w tabeli. Nie mogą istnieć dwa rekordy w tabeli z tą samą wartością klucza głównego, co gwarantuje unikalność każdego rekordu. Klucze główne są też często używane do tworzenia powiązań między tabelami, co jest podstawą relacyjnych baz danych. Wykorzystanie kluczy głównych jest zgodne ze standardami i dobrą praktyką w projektowaniu baz danych.

Pytanie 26

Wykonano następującą kwerendę SQL na tabeli dania, której wiersze zostały pokazane na obrazie:

SELECT * FROM dania WHERE typ < 3 AND cena < 30 LIMIT 5;
Ile wierszy wybierze ta kwerenda?

idtypnazwacena
11Gazpacho20
21Krem z warzyw25
31Gulaszowa ostra30
42Kaczka i owoc30
52Kurczak pieczony40
62wieprzowy przysmak35
72Mintaj w panierce30
82Alle kotlet30
93Owoce morza20
103Grzybki, warzywka, sos15
113Orzechy i chipsy10
123Tatar i jajo15
133Bukiet warzyw10
A. 8
B. 5
C. 2
D. 13
Niestety, Twoja odpowiedź jest nieprawidłowa. Kwerenda SELECT w SQL służy do wybierania wierszy z tabeli, które spełniają określone kryteria. W tym przypadku, kwerenda wybrała 2 wiersze, a nie 8, 5, czy 13. Błędne odpowiedzi w tym pytaniu mogą wynikać z niewłaściwego zrozumienia działania kwerendy SELECT. Zrozumienie, jakie dane zostaną wybrane przez daną kwerendę, jest kluczowe dla efektywnej pracy z bazami danych. Mogło to na przykład oznaczać wybranie informacji o zbyt wielu klientach, co mogłoby spowodować przekroczenie limitu zasobów lub zwrócenie niepotrzebnych danych. Dlatego ważne jest, aby dobrze zrozumieć, jakie kryteria określamy w kwerendzie i jakie konkretnie dane chcemy uzyskać. W SQL mamy wiele możliwości filtrowania i sortowania danych, a błąd w jednym z tych aspektów może prowadzić do nieefektywnego zarządzania informacjami. Dlatego szczegółowe zrozumienie kwerend SQL jest kluczowe dla każdej osoby pracującej z danymi.

Pytanie 27

Jaką maksymalną liczbę znaczników &lt;td&gt; można zastosować w tabeli składającej się z trzech kolumn i trzech wierszy, która nie zawiera złączeń między komórkami oraz wiersza nagłówkowego?

A. 3
B. 6
C. 9
D. 12
Odpowiedź 9 jest poprawna, ponieważ w tabeli składającej się z trzech kolumn i trzech wierszy, każdy wiersz może zawierać trzy komórki danych. Zatem, aby obliczyć maksymalną liczbę znaczników &lt;td&gt;, należy pomnożyć liczbę kolumn przez liczbę wierszy: 3 kolumny x 3 wiersze = 9 znaczników &lt;td&gt;. Ważne jest, aby pamiętać, że w kontekście HTML, znacznik &lt;td&gt; służy do definiowania komórek tabeli i jest używany tylko do umieszczania danych w tabeli. Przy projektowaniu tabel w HTML, dobrym rozwiązaniem jest stosowanie przejrzystej struktury oraz odpowiednich znaczników, aby poprawić czytelność i dostępność stron. Zgodnie z dobrymi praktykami, zawsze warto używać znaczników &lt;th&gt; do nagłówków kolumn, ale w tym przypadku, zgodnie z treścią pytania, zakładamy, że nie stosujemy wiersza nagłówkowego. W efekcie maksymalna liczba komórek, które można wykorzystać w takiej tabeli, wynosi 9. Przykładem zastosowania takiej tabeli może być wyświetlanie danych o produktach, gdzie każda komórka zawierać może różne informacje, takie jak nazwa produktu, cena i ilość.

Pytanie 28

Element

<meta charset="utf-8">
definiuje metadane dotyczące strony internetowej, odnosząc się do
A. opisu witryny
B. języka witryny
C. słów kluczowych
D. kodowania znaków
Ten element <meta charset="utf-8"> jest naprawdę ważny w nagłówku stron HTML, bo to on mówi przeglądarkom, jak odczytywać znaki w Twoim dokumencie. Dzięki temu tekst wyświetla się poprawnie na różnych urządzeniach. UTF-8 jest najbardziej popularnym kodowaniem, bo obsługuje niemal wszystkie znaki z różnych języków, co sprawia, że Twoja strona może być bardziej uniwersalna. Na przykład, jeśli masz tekst po polsku, to użycie UTF-8 upewnia się, że takie znaki jak ą czy ć będą prawidłowo pokazane. Właśnie dlatego warto stosować UTF-8, bo to, co zaleca W3C, jest bardzo sensowne - chodzi przecież o to, żeby strona była dostępna dla każdego, niezależnie od tego, z jakiego języka korzysta.

Pytanie 29

Jaką szerokość zaplanowano dla treści strony, bazując na podanej definicji CSS?

body {
  border: 2px;
  height: 600px;
  width: 560px;
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
A. 2 px
B. 560 px
C. 600 px
D. 640 px
Gratulacje, udzieliłeś poprawnej odpowiedzi. W definicji CSS dla elementu body, szerokość ustawiono na 560 px. Właściwość box-sizing: border-box, gwarantuje, że szerokość ta obejmuje również obramowanie. Dlatego, w praktyce, szerokość strony pozostawiona na treść wynosi 560 px. Wartości te są bardzo ważne przy projektowaniu stron internetowych, szczególnie przy tworzeniu responsywnych layoutów, gdzie musimy precyzyjnie kontrolować szerokość i rozmieszczenie elementów. Pamiętaj, że wykorzystanie odpowiednich jednostek i precyzyjne definiowanie wymiarów jest kluczowe dla zachowania poprawnej struktury strony. Dobrym nawykiem jest również stosowanie właściwości box-sizing: border-box, która ułatwia kontrolę nad rozmiarem elementów, zwłaszcza przy komplikowanych układach strony.

Pytanie 30

Co można powiedzieć o przedstawionym zapisie języka HTML 5?

<title>Strona o psach</title>
A. Pojawi się na karcie dokumentu w przeglądarce.
B. Zostanie umieszczony w treści strony, na samym czubku.
C. Jest fakultatywny w kontekście HTML 5 i nie jest wymagany w dokumencie.
D. Stanowi jedynie informację dla robotów wyszukiwania i nie jest widoczny w przeglądarce.
Zaznaczenie poprawnej odpowiedzi pokazuje, że to, co jest w znaczniku <title>, pojawia się na karcie w przeglądarce. To naprawdę ważny element HTML, bo informuje użytkowników, o czym jest dana strona. Zgodnie z tym, co mówi W3C, tytuł strony jest kluczowy dla SEO, gdyż wyświetla się w wynikach wyszukiwania i na zakładkach przeglądarek. Fajnie, jak tytuł jest krótki, ma kluczowe słowa, które mówią o zawartości, i przyciąga wzrok. Na przykład, jak zrobisz stronę o psach rasowych, to tytuł <title> w stylu 'Strona o psach - Poradnik dla właścicieli' nie tylko mówi, o czym będzie treść, ale też może sprawić, że lepiej widać ją w wynikach wyszukiwania. Pamiętaj, że zawartość znacznika <title> widać na górze okna przeglądarki, co ułatwia poruszanie się i znajdowanie otwartych kart.

Pytanie 31

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 oraz modyfikowania struktury w tabeli sklep
C. tworzenia i zmiany struktury wszystkich tabel w bazie sklep
D. dodawania i modyfikacji danych we wszystkich tabelach bazy sklep
Ta odpowiedź nie jest właściwa, bo dotyczy wstawiania i zmieniania danych w tabeli 'sklep', a tak naprawdę polecenie SQL daje tylko uprawnienia do zmiany struktury tabel, nie do danych w środku. Do wstawiania danych potrzebne jest użycie komendy 'INSERT', której tutaj w ogóle nie ma. Jak ktoś ma tylko prawa do tworzenia i zmiany struktury tabel, to nie może dodać ani zmienić danych, a to jest kluczowe do operacji na danych. I jeszcze jedno – odpowiedzi, które mówią o ograniczeniu do jednej tabeli, też są błędne, bo 'sklep.*' dotyczy wszystkich tabel w bazie. Ważne, żeby rozróżniać te uprawnienia, bo często ludzie mylą uprawnienia do zarządzania strukturą tabel z możliwościami operacji na danych. To zrozumienie różnic jest kluczowe dla bezpiecznego zarządzania bazami danych i trzymania się zasady minimalnych uprawnień, co jest naprawdę dobrą praktyką w świecie bezpieczeństwa informatycznego.

Pytanie 32

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

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

Pytanie 33

W HTML umieszczono formularz. Jakie skutki działania tego kodu zostaną pokazane przez przeglądarkę, jeśli użytkownik w drugim polu wprowadzi wartość "ala ma kota"?

Ilustracja do pytania
A. Efekt 1
B. Efekt 2
C. Efekt 3
D. Efekt 4
Efekt 2 jest prawidłowy, ponieważ kod HTML używa elementu select do stworzenia listy rozwijanej z trzema opcjami: Kraków, Poznań i Szczecin. Użytkownik może wybrać jedną z tych opcji, co jest standardowym zastosowaniem elementu select w formularzach HTML. Drugim elementem jest pole input typu password które maskuje wpisywany tekst. W formularzach HTML pole typu password jest używane do ukrywania wprowadzanego tekstu co jest szczególnie ważne przy wprowadzaniu danych wrażliwych takich jak hasła. Gdy użytkownik wpisuje hasło widoczne są tylko znaki maskujące często kropki lub gwiazdki co zapewnia prywatność danych. Stosowanie takich elementów jest zgodne z dobrymi praktykami projektowania interfejsów użytkownika w sieci co zwiększa bezpieczeństwo i wygodę użytkowania formularzy. Właściwe korzystanie z elementów HTML jak select i input type=password jest kluczowe w tworzeniu efektywnych i bezpiecznych stron internetowych co jest szczególnie istotne w kontekście e-commerce i aplikacji bankowych.

Pytanie 34

Aby strona internetowa była bardziej dostępna dla osób niewidomych, obrazom wstawianym znacznikiem img należy nadać atrybut:

A.
alt
B.
src
C.
text
D.
style
Atrybut alt znacznika <img> zawiera tekst alternatywny - krótki opis tego, co przedstawia obraz. Czytnik ekranu, z którego korzystają osoby niewidome, odczytuje tę treść na głos, dzięki czemu użytkownik wie, co jest na obrazku. Tekst alternatywny pokazuje się też, gdy obraz się nie wczyta. Dlatego dla dostępności obrazom nadaje się atrybut alt.

Pytanie 35

Które z poniższych stwierdzeń dotyczących klucza głównego jest poprawne?

A. Jest unikalny w obrębie tabeli
B. Składa się wyłącznie z jednego pola
C. Może przyjmować tylko wartości numeryczne
D. W tabeli z danymi osobowymi może to być pole z nazwiskiem
Klucz podstawowy to atrybut lub zestaw atrybutów, który jednoznacznie identyfikuje każdy rekord w tabeli bazy danych. Najważniejszym wymogiem jest, aby klucz podstawowy był unikalny dla każdego wiersza, co oznacza, że nie może być powtórzony w obrębie tej samej tabeli. Przykładem może być numer identyfikacyjny (np. PESEL, NIP) przypisany do konkretnej osoby, który gwarantuje, że każda osoba w tabeli danych osobowych jest jednoznacznie identyfikowalna. Stosowanie kluczy podstawowych jest zgodne z zasadami normalizacji baz danych, co pozwala na minimalizację redundancji danych oraz poprawę integralności danych. Klucz podstawowy może składać się z jednego lub więcej pól, co daje elastyczność w projektowaniu bazy danych, aby pasowała do specyficznych potrzeb aplikacji. Dobre praktyki wskazują, że klucz podstawowy powinien być stabilny, czyli nie zmieniać się w czasie, oraz prosty do zaimplementowania i używania w zapytaniach SQL.

Pytanie 36

Aby obraz wstawiony na stronę internetową mógł dostosować się automatycznie do wymiarów ekranu, na którym jest wyświetlany, konieczne jest

A. ustawienie obu jego rozmiarów w pikselach
B. ustawienie jednego z jego wymiarów w pikselach
C. niezmienianie obu jego wymiarów za pomocą stylów CSS
D. ustawienie jego szerokości w wartościach procentowych
Ustawienie szerokości obrazu w wartościach procentowych jest kluczowym aspektem responsywnego projektowania stron internetowych. Dzięki temu obraz automatycznie dostosowuje się do szerokości kontenera, w którym jest umieszczony, co pozwala na płynne skalowanie w zależności od rozmiaru ekranu. Na przykład, jeśli szerokość obrazu ustawimy na 100%, to obraz będzie zawsze zajmował całą szerokość swojego kontenera, co jest szczególnie ważne w przypadku urządzeń mobilnych oraz różnych rozdzielczości ekranów. To podejście wspiera zasady projektowania responsywnego, które są fundamentem nowoczesnych stron internetowych. Dodatkowo, stosowanie jednostek procentowych zamiast pikseli umożliwia lepszą dostępność i poprawia doświadczenia użytkowników, eliminując problemy związane z przewijaniem lub wyświetlaniem treści poza ekranem. Obrazy ustawione w procentach pozwalają na bardziej elastyczne układy, które lepiej reagują na zmiany rozmiarów okien przeglądarki, co jest zgodne z najlepszymi praktykami w branży, takimi jak użycie Frameworków CSS, jak Bootstrap, które bazują na responsywnych gridach.

Pytanie 37

W języku CSS przedstawione w ramce stylizacje będą miały następujące zastosowanie. Kolorem czerwonym zostanie zapisany

h1 i {color: red;}
A. jedynie tekst pochylony w nagłówku pierwszego stopnia
B. wyłącznie tekst pochylony we wszystkich nagłówkach
C. kompletny tekst nagłówka pierwszego stopnia oraz pochylony tekst akapitu
D. pełny tekst nagłówka pierwszego stopnia oraz cały tekst pochylony, bez względu na jego lokalizację na stronie
Odpowiedź 1 jest poprawna, ponieważ selektor CSS 'h1 i' odnosi się do wszystkich elementów <i> (czyli tekstu pochylonego) znajdujących się wewnątrz elementów nagłówka <h1>. Oznacza to, że tylko tekst pochylony w nagłówkach pierwszego stopnia zostanie sformatowany na kolor czerwony. Jest to przykład selektora złożonego, który jest używany do stylizowania elementów zagnieżdżonych w określonym kontekście. W praktyce, takie podejście pozwala na precyzyjne kontrolowanie stylów na poziomie struktury dokumentu HTML, co jest zgodne z dobrymi praktykami w zakresie utrzymania i czytelności kodu CSS. Podczas projektowania arkuszy stylów ważne jest, aby stosować specyficzne selektory tylko tam, gdzie jest to konieczne, aby uniknąć nadmiernego komplikowania stylów i zapewnić lepszą wydajność renderowania stron w przeglądarkach. Dodatkowo, używając właściwości 'color', możemy definiować sposób, w jaki kolor tekstu prezentuje się na stronie, co jest kluczowe dla tworzenia dostępnych i estetycznych interfejsów użytkownika.

Pytanie 38

Która technologia zapewnia SZYFROWANE połączenie ze stroną (HTTPS)?

A. SSL
B. CMS
C. SEO
D. FTP
Szyfrowane połączenie ze stroną (HTTPS) zapewnia technologia SSL (dziś jej następca TLS) - szyfruje dane przesyłane między przeglądarką a serwerem, tak że przechwycone w drodze są nieczytelne, oraz potwierdza tożsamość witryny certyfikatem. Dlatego za HTTPS odpowiada SSL.

Pytanie 39

Warunek zapisany w JavaScript jest prawdziwy, gdy zmienna x przechowuje:

if ((!isNaN(x)) && (x > 0))
A. napis.
B. pusty napis.
C. dowolną dodatnią wartość liczbową.
D. dowolną całkowitą wartość liczbową.
Poprawnie wyłapałeś, że ten warunek jest prawdziwy tylko wtedy, gdy x przechowuje dodatnią wartość liczbową. Rozbijmy to na części. Funkcja isNaN(x) w JavaScript sprawdza, czy przekazany argument „nie jest liczbą” (NaN = Not a Number). Zapis z wykrzyknikiem: !isNaN(x) oznacza więc „x jest liczbą lub da się go zinterpretować jako liczbę”. Druga część warunku: (x > 0) wymusza, żeby ta wartość była większa od zera, czyli dodatnia. Operator && (AND logiczne) powoduje, że oba warunki muszą być spełnione jednocześnie. W efekcie if wykona się tylko wtedy, gdy x reprezentuje dodatnią liczbę (np. 1, 3.14, 100, 0.0001). Co ważne, w JavaScript !isNaN("5") też będzie prawdą, bo łańcuch "5" zostanie zrzutowany do liczby, więc w praktyce ten warunek przepuści zarówno typ number, jak i tekst, który da się przekonwertować na liczbę dodatnią. W realnych projektach taką konstrukcję stosuje się np. przy walidacji pól formularza: sprawdzamy, czy użytkownik podał sensowną wartość liczbową (np. cena, ilość sztuk, wiek) i czy nie jest ona ujemna albo zerowa. Z mojego doświadczenia lepiej jednak korzystać z Number.isNaN() i jawnie rzutować dane (np. const value = Number(x)), bo klasyczne isNaN ma parę „dziwnych” zachowań wynikających z automatycznych konwersji typów w JS. Mimo to logika w tym zadaniu jest typowa i zgodna z dobrymi praktykami: najpierw walidacja typu/wartości, potem dopiero dalsza logika biznesowa.

Pytanie 40

W języku SQL, aby wybrać wszystkie rekordy z tabeli B, w tym część wspólną z tabelą A, należy zastosować typ związku

Ilustracja do pytania
A. A LEFT JOIN B
B. A RIGHT JOIN B
C. A INNER JOIN B
D. A FULL OUTER JOIN B
W tym pytaniu pułapka polega na tym, że łatwo pomylić pojęcie części wspólnej z całością jednego ze zbiorów. Diagram pokazuje całą tabelę B (włącznie z przecięciem z A), a nie tylko przecięcie. W SQL typ złączenia określa, z której tabeli bierzemy wszystkie rekordy, a z której tylko te pasujące. To, że widzimy też obszar wspólny, jest naturalnym efektem działania złączeń zewnętrznych, ale nie oznacza jeszcze, że chodzi o `INNER JOIN`.
Jeśli ktoś wybiera `A LEFT JOIN B`, to zwykle wynika z myślenia „chcę część wspólną i coś jeszcze”, ale myli kierunek. `LEFT JOIN` gwarantuje wszystkie rekordy z **lewej** tabeli (A), a z prawej (B) tylko dopasowane. Diagram z pytania pokazuje dokładnie odwrotną sytuację: komplet danych z B, a z A tylko tam, gdzie istnieje relacja. `A LEFT JOIN B` odpowiadałoby sytuacji, gdzie podświetlony jest cały zbiór A i przecięcie, a nie B.
Z kolei `A INNER JOIN B` zwróciłby wyłącznie część wspólną A∩B, czyli tylko te rekordy, które mają dopasowanie po obu stronach. Na diagramie byłby wtedy zaznaczony wyłącznie środek, a nie cały zielony obszar B. To typowy błąd: utożsamianie każdego JOIN z „częścią wspólną”. INNER JOIN jest dobry, gdy interesują nas tylko powiązane dane (np. zamówienia, które mają istniejącego klienta), ale w zadaniu wyraźnie mowa o „wszystkich rekordach z B”.
`A FULL OUTER JOIN B` idzie w drugą stronę – zwraca wszystko z A **i** wszystko z B, niezależnie od tego, czy jest dopasowanie, czy nie. To byłby diagram z zaznaczonymi obiema kółkami, czyli suma zbiorów A∪B. W standardzie SQL taki typ złączenia jest opisany jako pełne złączenie zewnętrzne i stosuje się go rzadziej, np. do porównywania różnic między dwiema tabelami. Tutaj jest to za szeroki zakres danych w stosunku do pytania.
Poprawne podejście wymaga więc skojarzenia, że skoro chcemy wszystkie rekordy z tabeli B, to w zapisie `A ... JOIN B` tabela B musi być po tej stronie, która jest „obowiązkowa”. Właśnie to zapewnia `RIGHT JOIN`: pełny zestaw wierszy z prawej tabeli, plus dopasowania z lewej tam, gdzie istnieją. Świadome operowanie tymi pojęciami bardzo ułatwia projektowanie zapytań raportowych i unikanie nieoczekiwanych braków lub duplikacji danych.