KWALIFIKACJA INF3 - STYCZEŃ 2018

PYTANIE NR 17.
Wskaż prawdziwe stwierdzenie dla polecenia.
Ilustracja przedstawia fragment kodu SQL, który jest częścią polecenia tworzenia tabeli w bazie danych.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Klauzula IF NOT EXISTS w poleceniu tworzenia tabeli działa ochronnie: pozwala wykonać CREATE TABLE bez błędu, gdy tabela już istnieje. Pozostałe stwierdzenia są zbyt kategoryczne (np. obowiązkowy charset) albo nie wynikają z definicji tabeli i kodowania znaków.

Pełne wyjaśnienie:

W SQL (np. w MySQL) polecenie tworzenia tabeli może zawierać klauzulę IF NOT EXISTS. Jej sens jest praktyczny: jeśli tabela o danej nazwie już istnieje, serwer nie przerywa wykonania polecenia błędem "table exists", tylko pomija utworzenie. Dzięki temu skrypty instalacyjne, migracje i wdrożenia mogą być bardziej odporne na ponowne uruchomienie (tzw. idempotencja).

Dlaczego pozostałe odpowiedzi są nieprawdziwe?

  • "Klauzula CHARACTER SET utf8 jest obowiązkowa."
    W definicji tabeli ustawienie zestawu znaków jest opcjonalne: jeśli go nie podasz, tabela/kolumny dziedziczą domyślne ustawienia bazy danych lub serwera. Obowiązkowość zależy od wymagań projektu, a nie od składni.
  • "Do tabeli nie można wprowadzać ulic zawierających w nazwie polskie znaki."
    Możliwość zapisu polskich znaków zależy od użytego zestawu znaków i kolacji (oraz typu danych), a nie od samego faktu istnienia tabeli. Przy poprawnej konfiguracji kodowania (np. UTF) takie dane są możliwe.
  • "Rekordem tabeli nie może być 3 MAJA."
    Rekord to wiersz (zestaw wartości w kolumnach). "3 MAJA" może być wartością pola tekstowego (np. nazwa ulicy), o ile kolumna ma odpowiedni typ i dopuszcza taką wartość. Tego typu zdanie nie jest logiczną konsekwencją typowego polecenia CREATE TABLE.

Wskazówka egzaminacyjna: w pytaniach o składnię SQL szukaj odpowiedzi opisujących działanie klauzuli (co robi z błędem/wykonaniem), a ostrożnie traktuj zdania absolutne ("zawsze", "obowiązkowe", "nie można"), bo często są fałszywe bez dodatkowych warunków.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Oznacza, że tabela zostanie utworzona tylko wtedy, gdy jeszcze nie istnieje. Jeśli istnieje, polecenie nie zakończy się błędem "table exists", tylko zostanie pominięte. To ułatwia uruchamianie skryptów instalacyjnych i migracji wielokrotnie.
Bo skrypt może być uruchomiony ponownie (np. na innym środowisku lub po częściowym wdrożeniu). IF NOT EXISTS zmniejsza ryzyko przerwania instalacji przez błąd, gdy tabela została już wcześniej utworzona.
Nie. Zwykle jest opcjonalny, bo tabela i kolumny mogą dziedziczyć domyślne ustawienia zestawu znaków z bazy danych lub serwera. Podaje się go, gdy chcesz jawnie wymusić konkretne kodowanie/kolację dla tabeli.
Zły charset/kolacja może skutkować "krzakami", utratą znaków diakrytycznych, błędnym sortowaniem i porównywaniem tekstu oraz problemami przy imporcie danych. W aplikacjach webowych wpływa to np. na adresy, nazwiska i wyszukiwanie.
Tak, jeśli kolumny tekstowe używają zestawu znaków obsługującego takie litery (np. Unicode/UTF). Ograniczenia pojawiają się dopiero przy niepoprawnej konfiguracji kodowania lub gdy aplikacja wysyła dane w innym kodowaniu niż baza.
Rekord to jeden wiersz tabeli, czyli komplet wartości we wszystkich (lub części) kolumn. Pojedynczy napis (np. nazwa ulicy) jest zazwyczaj wartością konkretnej kolumny, a nie "rekordem" samym w sobie.
CREATE TABLE tworzy strukturę (schemat) tabeli: kolumny, typy i ograniczenia. INSERT dodaje dane do istniejącej tabeli. W zadaniach egzaminacyjnych pytania o IF NOT EXISTS dotyczą zwykle tworzenia obiektów, nie wstawiania danych.
DROP TABLE IF EXISTS stosuje się, gdy chcesz usunąć tabelę, jeśli istnieje (np. w testach lub przy odtwarzaniu środowiska). CREATE TABLE IF NOT EXISTS jest bezpieczniejsze, gdy nie chcesz kasować danych, a tylko uniknąć błędu przy tworzeniu.
Częsty błąd to mylenie znaczenia: część osób sądzi, że IF NOT EXISTS "sprawdza brak danych", a nie brak obiektu (tabeli). Inny błąd to uznawanie, że ustawienia typu CHARACTER SET są zawsze obowiązkowe, mimo że często są dziedziczone.
Przećwicz podstawowe DDL/DML: CREATE, ALTER, DROP, INSERT, SELECT. Warto wykonywać polecenia w lokalnym MySQL/MariaDB i obserwować komunikaty błędów. Szczególnie opanuj klauzule warunkowe typu IF EXISTS/IF NOT EXISTS.
info

To pytanie poprawnie rozwiązuje 67% zdających egzamin. średnie

Specjaliści zwracają uwagę: "Klauzula IF NOT EXISTS w poleceniu tworzenia tabeli działa ochronnie: pozwala wykonać CREATE TABLE bez błędu, gdy tabela już istnieje."

Źródła:

  • MySQL 8.0 Reference Manual: CREATE TABLE Syntax (IF NOT EXISTS) – https://dev.mysql.com/doc/refman/8.0/en/create-table.html (accessed 2026-02-18)
  • MySQL 8.0 Reference Manual: Character Sets and Collations (podstawy działania i konfiguracji) – https://dev.mysql.com/doc/refman/8.0/en/charset.html (accessed 2026-02-18)
  • MySQL 8.0 Reference Manual: The utf8mb4 Character Set (kontekst dot. utf8/utf8mb4) – https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-utf8mb4.html (accessed 2026-02-18)

Materiały:

  • Dokumentacja MySQL: składnia CREATE TABLE i IF NOT EXISTS
  • Materiały o różnicach między utf8 a utf8mb4 w MySQL oraz o kolacjach
  • Kurs podstaw SQL (DDL/DML) z ćwiczeniami na CREATE/ALTER/INSERT

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego