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: 23 kwietnia 2026 12:42
  • Data zakończenia: 23 kwietnia 2026 13:02

Egzamin niezdany

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

Wymagane minimum: 20 punktów (50%)

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

Każde informacje, które odnoszą się do innych informacji, określane są jako

A. metalanguage.
B. databus.
C. metadata.
D. markup language.
Odpowiedź 'metadata' jest poprawna, ponieważ termin ten odnosi się do danych, które dostarczają informacji o innych danych. Metadata może zawierać różnorodne informacje, takie jak autor, data utworzenia, format pliku czy nawet kontekst użycia danych. Przykłady zastosowania metadanych obejmują biblioteki cyfrowe, gdzie metadata opisuje książki lub artykuły, umożliwiając ich łatwe wyszukiwanie. Standardy takie jak Dublin Core czy ISO 19115 definiują, jakie elementy powinny być uwzględnione w metadanych dla różnych typów zasobów. Dzięki dobrym praktykom w zakresie metadanych, organizacje mogą poprawić zarządzanie danymi, ułatwić ich wymianę oraz zapewnić, że użytkownicy będą mogli łatwo odnaleźć i wykorzystać odpowiednie informacje. W dobie Big Data i analityki danych, znaczenie metadanych rośnie, ponieważ umożliwiają one efektywne przetwarzanie i analizę dużych zbiorów informacji, wspierając decyzje biznesowe oraz innowacje technologiczne.

Pytanie 2

Który typ relacji wymaga stworzenia tabeli pośredniczącej łączącej klucze główne obu tabel?

A. 1..n
B. 1..1
C. n..n
D. n..1
Wybór relacji 1..1 sugeruje, że jeden rekord w pierwszej tabeli jest powiązany z dokładnie jednym rekordem w drugiej tabeli, co nie wymaga tabeli pośredniej. Przykładem może być relacja między tabelą 'Pracownicy' a tabelą 'Działy', gdzie każdy pracownik jest przypisany do jednego działu, a każdy dział ma jednego pracownika. Relacje 1..n oraz n..1 również nie wymagają tabel pośrednich, ponieważ pozwalają na przypisania jednego rekordu do wielu rekordów, ale nie wymagają wzajemnych powiązań, co jest charakterystyczne dla relacji n..n. Relacja 1..n oznacza, że jeden rekord z tabeli A może być powiązany z wieloma rekordami z tabeli B, ale nie odwrotnie, natomiast w relacji n..1 wiele rekordów z tabeli A jest przypisanych do jednego rekordu w tabeli B. Te błędne podejścia wynikają z niepełnego zrozumienia struktury relacji danych oraz roli tabel pośrednich w zarządzaniu skomplikowanymi powiązaniami. Aby uniknąć mylnych interpretacji, ważne jest zrozumienie, że relacje 1..1, 1..n i n..1 nie wymagają tabel pośrednich, ponieważ nie łączą wielu rekordów z obu tabel, co jest kluczowym wymogiem dla relacji n..n.

Pytanie 3

W przedstawionym kodzie PHP przeprowadzono operację na bazie danych. Jaką funkcję należy wywołać, aby uzyskać liczbę wierszy, które zostały zmienione w tabeli?

$zapytanie="UPDATE kadra SET stanowisko='Programista' WHERE id < 10"; mysqli_query($db, $zapytanie);
A. mysqli_use_result()
B. mysqli_affected_rows()
C. mysqli_num_rows()
D. mysqli_field_count()
Wybór innych funkcji zamiast mysqli_affected_rows() prowadzi do nieporozumień dotyczących ich przeznaczenia i zastosowania. Przykładowo, funkcja mysqli_num_rows() jest używana w kontekście kwerend SELECT, gdzie zwraca liczbę wierszy w zestawie wyników. Nie może być zastosowana po operacjach modyfikujących bazę danych, takich jak UPDATE, ponieważ nie dostarcza informacji o efektach tych operacji. Z kolei mysqli_use_result() jest przeznaczona do przetwarzania zestawów wyników z zapytań, co znowu nie odnosi się do sytuacji, w której chcemy znać liczbę zmienionych wierszy. Funkcja mysqli_field_count() zwraca liczbę kolumn w ostatnim zapytaniu, które zwróciło rezultat, co również nie ma zastosowania w kontekście zapytań modyfikujących. Typowym błędem myślowym jest mieszanie funkcji związanych z różnymi rodzajami zapytań. Ważne jest, aby rozumieć, jak różne funkcje w PHP dotyczące MySQL są ze sobą powiązane i jakie mają specyficzne zastosowania. Nieprawidłowe użycie tych funkcji może prowadzić do błędnych wniosków o stanie bazy danych i utrudniać debugowanie aplikacji. W związku z tym kluczowym elementem efektywnego zarządzania bazami danych jest znajomość odpowiednich funkcji oraz ich funkcji i ograniczeń.

Pytanie 4

Jakie mechanizmy przydzielania zabezpieczeń, umożliwiające przeprowadzanie operacji na bazie danych, są powiązane z zagadnieniami dotyczącymi zarządzania kontami, użytkownikami oraz uprawnieniami?

A. Z regułami
B. Z przywilejami systemowymi
C. Z przywilejami obiektowymi
D. Z atrybutami
Uprawnienia związane z atrybutami i regułami mogą mylnie wydawać się odpowiednie w kontekście zarządzania dostępem, ale ich zrozumienie jest kluczowe, aby uniknąć błędnych wniosków. Atrybuty w kontekście systemów zarządzania bazami danych są często używane do definiowania cech obiektów, takich jak kolumny w tabelach, ale nie są bezpośrednio związane z mechanizmami nadawania uprawnień. Reguły, choć mogą być wykorzystywane do definiowania polityk bezpieczeństwa, nie są tym samym co przywileje systemowe. Przywileje obiektowe, z kolei, dotyczą dostępu do konkretnych obiektów w bazie danych, takich jak tabele czy widoki, a nie ogólnych uprawnień administracyjnych. Często występuje nieporozumienie, że wszystkie te mechanizmy są równoważne, co prowadzi do niewłaściwego stosowania uprawnień w systemach. Kluczowe jest zrozumienie, że przywileje systemowe są tymi, które kontrolują dostęp do całej struktury bazy danych, a nie tylko do jej poszczególnych elementów, co stanowi podstawę dla skutecznego zarządzania bezpieczeństwem w środowiskach IT. W praktyce niepoprawne przypisywanie uprawnień może prowadzić do nieautoryzowanego dostępu do danych, co jest sprzeczne z najlepszymi praktykami ochrony informacji.

Pytanie 5

Które zapytanie MySQL należy użyć, aby usunąć jedynie pracowników, którzy zarabiają nie mniej niż 500 i nie więcej niż 1000 zł oraz ich miejsce pracy zawiera frazę tx

A. DELETE FROM pracownicy WHERE pensja BETWEEN 500 AND 1000 OR miejsce_pracy LIKE '%tx%';
B. DELETE FROM pracownicy WHERE pensja > 500 AND pensja < 1000 AND miejsce_pracy LIKE '%tx%';
C. DELETE FROM pracownicy WHERE pensja IN (500,1000) AND miejsce_pracy LIKE '*tx*';
D. DELETE FROM pracownicy WHERE pensja BETWEEN 500 AND 1000 AND miejsce_pracy LIKE '%tx%';
W tym zadaniu widać kilka typowych pułapek związanych z SQL-em: składnią operatora LIKE, doborem zakresu liczbowego oraz użyciem spójników logicznych AND i OR. Zacznijmy od wzorca tekstowego. W MySQL, zgodnie ze standardową składnią SQL, do dopasowań wzorców używa się znaków % i _. Procent oznacza dowolny ciąg znaków, a podkreślnik pojedynczy znak. Natomiast gwiazdka * nie jest prawidłowym wildcardem w operatorze LIKE, więc zapis typu LIKE '*tx*' po prostu nie zadziała tak, jak większość osób intuicyjnie zakłada. To jest częsty błąd u osób, które mieszają składnię SQL z np. wyrażeniami w stylu systemów plików czy niektórych narzędzi linuksowych. Kolejna sprawa to warunki logiczne. W tym poleceniu chodziło o wybranie rekordów, które spełniają oba kryteria jednocześnie: pensja w określonym przedziale i miejsce pracy zawiera „tx”. Użycie operatora OR całkowicie zmienia znaczenie zapytania, bo wtedy wystarczy, że spełniony jest tylko jeden z warunków. W efekcie można by usunąć osoby, które mają odpowiednią pensję, ale w ogóle nie mają „tx” w miejscu pracy, albo odwrotnie – mają „tx” w miejscu pracy, ale zarabiają dużo mniej lub więcej niż zadany zakres. To klasyczny przykład nieprecyzyjnie dobranego spójnika logicznego, który na produkcyjnej bazie może zakończyć się masowym usunięciem nie tych danych, co trzeba. Trzeci problem dotyczy interpretacji zakresu. Operator IN z wartościami (500,1000) nie wybiera przedziału od 500 do 1000, tylko dokładnie dwie wartości: 500 i 1000. To nie ma nic wspólnego z „między 500 a 1000”, więc zadanie nie byłoby zrealizowane. Z drugiej strony użycie warunku pensja > 500 AND pensja < 1000 wyklucza wartości graniczne, czyli 500 i 1000, co jest sprzeczne z opisem „nie mniej niż 500 i nie więcej niż 1000”. Z mojego doświadczenia najczęściej takie błędy wynikają z pośpiechu i nieprzeczytania dokładnie treści zadania. Dobra praktyka jest taka, żeby zawsze świadomie decydować, czy zakres ma być domknięty (BETWEEN) czy otwarty (>, <) oraz żeby testować zapytanie w wersji SELECT przed wykonaniem operacji DELETE albo UPDATE. To pozwala od razu zauważyć, że warunki logiczne albo wzorzec LIKE nie działają tak, jak zakładaliśmy w głowie.

Pytanie 6

Tabela faktury w bazie danych zawiera pola: numer, data, id_klienta, wartość oraz status. Każdego dnia tworzony jest raport dotyczący faktur z dnia bieżącego. Zawiera on jedynie numery oraz wartości faktur. Która z poniższych kwerend SQL pozwoli na wygenerowanie tego raportu?

A. SELECT * FROM faktury WHERE data=CURRENT_DATE();
B. SELECT * FROM faktury;
C. SELECT numer, wartość FROM faktury;
D. SELECT numer, wartosc FROM faktury WHERE data=CURRENT_DATE();
Analizując inne dostępne kwerendy, możemy zauważyć, że nie spełniają one wymogów skutecznego raportowania faktur z bieżącego dnia. Pierwsza z nich, która wykorzystuje 'SELECT * FROM faktury;', zwraca wszystkie kolumny z tabeli faktury, co nie jest zgodne z wymaganiami, ponieważ nie ogranicza wyników do tylko dwóch pożądanych pól, czyli numeru i wartości. Takie podejście generowałoby zbędne dane, co mogłoby prowadzić do niewłaściwej analizy. Druga kwerenda, 'SELECT numer, wartość FROM faktury;', z kolei nie zawiera żadnego filtra daty, przez co zwracałaby numery i wartości wszystkich faktur, niezależnie od daty ich wystawienia. To podejście nie dostarczałoby potrzebnych informacji dotyczących tylko bieżącego dnia, co jest kluczowe w kontekście tworzenia codziennego raportu. Ostatnia z błędnych odpowiedzi to 'SELECT * FROM faktury WHERE data=CURRENT_DATE();'. Choć ta kwerenda zawiera właściwy warunek daty, to znowu, użycie '*' powoduje, że zwracane są wszystkie kolumny, a nie tylko te, które są istotne dla raportu. Takie podejście jest nieefektywne, a także niezgodne z najlepszymi praktykami tworzenia raportów, które powinny być zwięzłe i skoncentrowane na kluczowych informacjach.

Pytanie 7

Jednym z atrybutów tabeli ksiazki jest pole czyWypozyczona, które może mieć dwie wartości: true lub false. Jaki typ danych będzie najbardziej odpowiedni dla tego pola?

A. BOOLEAN
B. CHAR
C. VARCHAR(5)
D. DOUBLE
Odpowiedź 'BOOLEAN' jest poprawna, ponieważ jest to typ danych, który idealnie odpowiada na potrzeby pola 'czyWypozyczona', które przyjmuje jedynie dwie wartości: true (prawda) oraz false (fałsz). W przypadku baz danych, typ BOOLEAN jest optymalny do reprezentowania stanów logicznych, co pozwala na efektywniejsze zarządzanie danymi oraz ich przetwarzanie. Przykładowo, w systemie zarządzania biblioteką, pole 'czyWypozyczona' może być używane do szybkiego filtrowania książek, które są aktualnie dostępne lub wypożyczone. Użycie typu BOOLEAN eliminuje potrzebę zbędnych konwersji typu, zwiększa czytelność kodu oraz ułatwia optymalizację zapytań SQL. W praktyce, stosowanie typu BOOLEAN jest zgodne z najlepszymi praktykami projektowania baz danych, które promują przejrzystość i zgodność z modelowaniem danych. Warto również zauważyć, że w niektórych systemach zarządzania bazami danych (np. PostgreSQL) typ BOOLEAN jest natywnie obsługiwany, co dodatkowo wpływa na wydajność operacji na danych.

Pytanie 8

Jakie technologie są konieczne do uruchomienia systemu CMS Joomla!?

A. Apache, PHP i MySQL
B. IIS, PERL i MySQL
C. PHP oraz MySQL
D. Apache oraz PHP
Joomla! jest systemem zarządzania treścią, który wymaga specyficznych technologii do prawidłowego działania. Do uruchomienia Joomla! niezbędne jest środowisko, które obejmuje serwer WWW Apache, język skryptowy PHP oraz bazę danych MySQL. Apache jest najpopularniejszym serwerem WWW, który obsługuje wiele funkcji, takich jak obsługa dynamicznych treści oraz zarządzanie dużymi ilościami ruchu. PHP jest językiem skryptowym, który pozwala na interakcję z bazą danych oraz generowanie treści w czasie rzeczywistym, co jest kluczowe dla działania CMS-a. MySQL natomiast jest systemem zarządzania bazą danych, który przechowuje wszystkie dane dotyczące witryny, takie jak artykuły, ustawienia i użytkownicy. Przykładem zastosowania tych technologii może być stworzenie strony internetowej dla lokalnej organizacji non-profit, gdzie Joomla! umożliwia łatwe zarządzanie treścią przez osoby nieposiadające zaawansowanej wiedzy technicznej. Dobre praktyki w branży zalecają stosowanie najnowszych wersji tych technologii, aby zapewnić bezpieczeństwo oraz wydajność witryny.

Pytanie 9

Które z komend przyznaje najniższy poziom uprawnień dla użytkownika uczen w zakresie modyfikacji danych oraz struktury tabeli?

A. GRANT INSERT, DROP ON szkola.przedmioty TO uczen
B. DRANT DROP ON szkola.przedmioty TO uczen
C. GRANT ALTER, SELECT ON szkola.przedmioty TO uczen
D. GRANT SELECT ON szkola.przedmioty TO uczen
Wszystkie pozostałe polecenia przyznają użytkownikowi uczeń szerszy zakres uprawnień, co prowadzi do większego ryzyka nieautoryzowanej modyfikacji danych. Polecenie DRANT DROP ON szkola.przedmioty TO uczen jest nieprawidłowe, ponieważ DRANT nie jest poprawnym poleceniem SQL, co czyni jego interpretację niemożliwą. W kontekście administracji bazami danych, DROP oznacza usunięcie całej tabeli, co w przypadku użytkownika uczeń może prowadzić do katastrofalnych skutków, gdyż może on przypadkowo lub celowo usunąć istotne dane. Kolejne polecenie GRANT INSERT, DROP ON szkola.przedmioty TO uczen przyznaje prawo do wstawiania nowych danych oraz usuwania tabeli. Takie uprawnienia są zdecydowanie nieodpowiednie dla użytkownika uczeń. Umożliwiają one nie tylko dodawanie nieautoryzowanych rekordów, ale także ich usuwanie, co narusza zasady bezpieczeństwa i integralności danych. Podobnie, GRANT ALTER, SELECT ON szkola.przedmioty TO uczen przyznaje prawo do modyfikacji struktury tabeli, co oznacza, że uczeń mógłby zmieniać kolumny, dodawać nowe oraz wprowadzać zmiany, które mogą wpływać na funkcjonowanie całej bazy danych. Prawo do ALTER jest jednym z najszerszych uprawnień w SQL i nie powinno być przyznawane użytkownikom, którzy nie są administratorami, aby zapewnić pełną kontrolę nad bazą danych.

Pytanie 10

Zakładając, że użytkownik nie miał wcześniej żadnych uprawnień, polecenie SQL przyzna użytkownikowi anna jedynie uprawnienia do

GRANT SELECT, INSERT, UPDATE ON klienci TO anna;
A. wybierania, wstawiania oraz modyfikacji danych w wszystkich tabelach w bazie o nazwie klienci
B. wybierania, wstawiania oraz aktualizacji danych tabeli o nazwie klienci
C. wybierania, dodawania pól oraz modyfikacji struktury wszystkich tabel w bazie o nazwie klienci
D. wybierania, dodawania pól oraz modyfikacji struktury tabeli o nazwie klienci
Jak się przyjrzysz innym odpowiedziom, to zauważysz, że mają trochę błędnych założeń. Pierwsza odpowiedź mówi o nadawaniu praw do wszystkich tabel w bazie klienci, co jest błędne, bo polecenie SQL mówi tylko o jednej tabeli - klienci. Nie ma tu mowy o całej bazie, więc ta odpowiedź jest do bani. Druga opcja, która dotyczy dodawania pól i zmiany struktury tabeli, też jest złudna. Te operacje wymagają użycia zmiany komendy ALTER, a nie GRANT, bo GRANT to tylko nadawanie praw do już istniejących danych. Czwarta odpowiedź myli się sugerując, że można zmieniać strukturę wszystkich tabel, co w ogóle nie jest tym, co robi GRANT. Często pojawia się ten błąd, że jedna komenda SQL może mieć szerokie zastosowanie, a tak naprawdę każda z nich ma swoją specyfikę i ograniczenia w działaniach. Rozumienie tego jest kluczem do efektywnego zarządzania uprawnieniami w bazach danych. Warto być czujnym, bo źle nadane uprawnienia mogą zaszkodzić bezpieczeństwu i integralności danych.

Pytanie 11

$z = mysqli_query($db, "SELECT ulica, miasto, kod_pocztowy FROM adresy");
$a = mysqli_fetch_row($z);
echo "$a[1], $a[2]";
W języku PHP zapisano fragment kodu działającego na bazie MySQL. Jego zadaniem jest wypisanie
A. ulicy i miasta ze wszystkich zwróconych rekordów
B. ulicy i miasta z pierwszego zwróconego rekordu
C. miasta i kodu pocztowego z pierwszego zwróconego rekordu
D. miasta i kodu pocztowego ze wszystkich zwróconych rekordów
Kod PHP wykonuje zapytanie do bazy danych przy użyciu funkcji mysqli_query co powoduje pobranie wszystkich rekordów z kolumn ulica miasto i kod_pocztowy z tabeli adresy jednak funkcja mysqli_fetch_row pobiera tylko pierwszy rekord z wynikowego zbioru danych. Jest to kluczowy aspekt ponieważ mysqli_fetch_row nie iteruje automatycznie przez wszystkie rekordy co jest częstym błędem w interpretacji działania tej funkcji. Często mylnie zakłada się że funkcja echo w połączeniu z pętlą może obsłużyć cały zestaw danych co w kontekście tego kodu nie ma miejsca ponieważ pętla nie została użyta. Zrozumienie działania funkcji takich jak mysqli_fetch_row jest kluczowe dla poprawnego przetwarzania danych z bazy. Indeksowanie w tablicach wynikowych zaczyna się od zera dlatego też $a[1] i $a[2] odnoszą się do drugiego i trzeciego elementu tablicy a nie pierwszego i drugiego co również jest częstym źródłem błędów wśród początkujących programistów. Ponadto brak zrozumienia że echo wypisuje wartości z jednego rekordu a nie wszystkich może prowadzić do błędnych założeń w projektowaniu logiki aplikacji. Aby uzyskać dane ze wszystkich rekordów konieczne byłoby zastosowanie pętli takiej jak while która iterowałaby przez cały zbiór wyników co pokazuje różnicę w podejściu między pobieraniem pojedynczego rekordu a całego zestawu danych. Zrozumienie tych koncepcji jest istotne dla efektywnego i bezpiecznego korzystania z bazy danych w aplikacjach PHP i pozwala na unikanie typowych błędów związanych z przetwarzaniem rekordów z bazy danych. Dokładne zrozumienie struktury tablic wynikowych i sposobu ich przetwarzania jest niezbędne do rozwijania wydajnych i bezpiecznych aplikacji webowych. Warto również pamiętać o zabezpieczeniach takich jak użycie przygotowanych zapytań SQL by uniknąć ataków typu SQL Injection co jest istotnym aspektem tworzenia aplikacji bezpiecznych i odpornych na próby nieautoryzowanego dostępu.

Pytanie 12

Aby w tabeli praca, tworzonej w języku SQL, dodać do kolumny stawka warunek, który wymusza, aby przyjmowane były jedynie wartości dodatnie, a jednocześnie mniejsze niż 50, należy zastosować zapis

A. … stawka foat CHECK (stawka IN (0, 50.00))
B. … stawka foat CHECK (stawka>0 OR stawka<50.00)
C. … stawka foat CHECK (stawka>0 AND stawka<50.00)
D. … stawka foat CHECK (stawka BETWEEN 0 AND 50.00)
Poprawna odpowiedź to zapis '… stawka foat CHECK (stawka>0 AND stawka<50.00)', ponieważ warunek ten precyzyjnie określa, że wartość w kolumnie 'stawka' musi być większa od zera oraz mniejsza od 50, co oznacza, że akceptowane będą tylko rzeczywiste wartości dodatnie mieszczące się w tym przedziale. Zastosowanie warunku CHECK jest kluczowym elementem w zapewnieniu integralności danych w bazach danych. Dzięki temu, przy wstawianiu lub aktualizacji danych w tabeli 'praca', system zablokuje wszelkie operacje, które nie spełniają tego kryterium, co z kolei zapobiega wprowadzaniu błędnych danych. W praktyce, stosowanie takich warunków w definicji kolumn w SQL jest zgodne z dobrymi praktykami projektowania baz danych, które kładą nacisk na walidację danych już na poziomie schematu bazy. Przykładowo, jeżeli chcemy zapewnić, aby stawka wynagrodzenia pracowników nie przekraczała określonego limitu, stosowanie CHECK z warunkiem 'stawka<50.00' stanowi efektywny sposób na wymuszenie tej zasady. Tego rodzaju rozwiązania nie tylko poprawiają jakość danych, ale również ułatwiają przyszłe analizy statystyczne oraz raportowanie.

Pytanie 13

Po zrealizowaniu polecenia SQL użytkownik Ela zyska możliwość wykorzystania poniższych uprawnień:

GRANT SELECT, INSERT, UPDATE, DELETE ON baza1.tab1 TO 'Ela'@'localhost';
A. realizować wszystkie działania na strukturze danych
B. przeprowadzać wszystkie operacje na danych
C. tylko tworzyć i zmieniać strukturę tabeli
D. tylko dodawać oraz zmieniać dane
Wybór odpowiedzi, która sugeruje, że użytkownik może jedynie dodawać i modyfikować dane, jest mylny, ponieważ nie uwzględnia uprawnienia SELECT, które jest również częścią przyznanych uprawnień. Ograniczając interpretację do dodawania i modyfikowania danych, można zignorować kluczowy aspekt bazy danych – możliwość ich przeglądania. Ponadto, twierdzenie, że użytkownik może jedynie tworzyć i modyfikować strukturę tabel, jest nieadekwatne, ponieważ polecenie GRANT nie dotyczy uprawnień do zmiany struktury bazy danych, takich jak dodawanie nowych tabel czy kolumn. Takie operacje są regulowane przez inne uprawnienia, które muszą być również przyznane. W sytuacji, gdy mówimy o operacjach na strukturze danych, należy uwzględnić, że uprawnienia GRANT dotyczą jedynie pracy z danymi przechowywanymi w tabelach, a nie z ich strukturalnymi aspektami. Pojęcie 'wszystkie operacje na strukturze danych' może wprowadzać w błąd, ponieważ nie odnosi się do przyznanych uprawnień, które nie obejmują na przykład tworzenia nowych tabel lub zmiany ich definicji. Dlatego ważne jest, aby dokładnie zrozumieć różnicę między uprawnieniami do operacji na danych a uprawnieniami do zarządzania strukturą bazy danych. Kluczowym błędem jest zatem niedostrzeganie znaczenia uprawnienia SELECT oraz niewłaściwe rozumienie zakresu przyznawanych uprawnień w kontekście SQL.

Pytanie 14

Jaką funkcję w języku PHP należy wykorzystać, aby nawiązać połączenie z bazą danych o nazwie zwierzaki?

A. $polacz = sql_connect('localhost', 'root','','zwierzaki');
B. $polacz = server_connect('localhost', 'root','','zwierzaki');
C. $polacz = db_connect('localhost', 'root','','zwierzaki');
D. $polacz = mysqli_connect('localhost', 'root','','zwierzaki');
Odpowiedzi, które nie korzystają z funkcji mysqli_connect, bazują na nieaktualnych lub niepoprawnych założeniach dotyczących połączeń z bazą danych w PHP. Na przykład, funkcja db_connect nie jest standardową funkcją dostępną w PHP, co sprawia, że jej użycie prowadzi do błędu. Użytkownicy mogą sądzić, że ta funkcja działa w podobny sposób jak mysqli_connect, lecz w rzeczywistości jest to wytwór nieformalny lub nieprawidłowy, który nie odpowiada standardom języka PHP. Z kolei sql_connect jest często mylona z mysqli_connect, jednak również nie istnieje w dokumentacji PHP jako wbudowana funkcja, co czyni jej stosowanie błędnym. Co więcej, server_connect to kolejna niepoprawna koncepcja, ponieważ nie ma takiej funkcji w PHP. Użytkownicy mogą myśleć, że nazewnictwo funkcji jest dowolne, ale w rzeczywistości język PHP ma ustalone standardy, które muszą być przestrzegane. Dlatego właściwe zrozumienie narzędzi i funkcji dostępnych w PHP jest kluczowe dla efektywnego programowania i unikania typowych błędów, które mogą wynikać z nieznajomości dokumentacji oraz z zastosowania niepoprawnych funkcji.

Pytanie 15

Podczas projektowania formularza konieczne jest wstawienie kontrolki, która odnosi się do innej kontrolki w odrębnym formularzu. Taka operacja w bazie danych Access jest

A. niemożliwa
B. niemożliwa w każdym trybie poza trybem projektowania
C. możliwa dzięki ustawieniu ścieżki do kontrolki w atrybucie "Źródło kontrolki"
D. możliwa tylko wtedy, gdy są to dane numeryczne
Odpowiedź jest poprawna, ponieważ w Microsoft Access można odwoływać się do kontrolek w innych formularzach poprzez ustawienie właściwości 'Źródło kontrolki'. Ta właściwość umożliwia wskazanie skąd ma pochodzić wartość, która ma być wyświetlana w danej kontrolce. Przykładowo, jeśli mamy formularz z danymi klientów, a chcemy w innym formularzu wyświetlić imię i nazwisko danego klienta, możemy użyć odpowiedniego odwołania do kontrolki w formularzu klientów. Ważne jest, aby ścieżka do kontrolki była poprawna, co oznacza, że musi być zgodna z nazwą formularza oraz nazwą kontrolki. Użycie właściwości 'Źródło kontrolki' jest zgodne z najlepszymi praktykami projektowania baz danych, ponieważ umożliwia elastyczne i dynamiczne łączenie danych. Zrozumienie tego procesu jest kluczowe dla efektywnego projektowania złożonych aplikacji bazodanowych z wieloma formularzami oraz relacjami między nimi.

Pytanie 16

W programie Microsoft Access mechanizmem ochrony danych związanym z tabelą i kwerendą jest

A. wykorzystanie makr
B. przypisanie uprawnień
C. ustalanie limitów przestrzeni na dysku
D. określanie zakresu tabel
Przypisanie uprawnień jest kluczowym elementem zarządzania bezpieczeństwem w Microsoft Access, ponieważ pozwala na kontrolowanie, kto ma dostęp do danych w tabelach i kwerendach. W praktyce, administratorzy baz danych mogą definiować, które grupy użytkowników mogą przeglądać, edytować lub usuwać dane. To podejście jest zgodne z zasadą najmniejszych uprawnień, co oznacza, że użytkownicy otrzymują tylko te uprawnienia, które są im niezbędne do wykonywania swoich zadań. Na przykład, jeśli pracownik potrzebuje jedynie przeglądać dane w konkretnej tabeli, administrator może przyznać mu jedynie uprawnienia do odczytu, co minimalizuje ryzyko nieautoryzowanych zmian. Warto także wspomnieć, że przypisanie uprawnień nie ogranicza się tylko do tabel, ale dotyczy również kwerend, formularzy i raportów, co pozwala na szczegółowe zarządzanie dostępem do różnych zasobów systemu. Dobre praktyki w zakresie bezpieczeństwa baz danych zalecają regularne audyty uprawnień, aby upewnić się, że są one nadal odpowiednie do zmieniających się potrzeb organizacji oraz roli użytkowników.

Pytanie 17

Co wchodzi w skład standardowego frameworka?

A. zarządzanie komunikacją z bazą danych, system uruchamiania i przetwarzania akcji
B. przetwarzanie formularzy oraz wbudowany serwer
C. domena oraz obsługa błędów
D. system uruchamiania i przetwarzania akcji oraz certyfikat http
Wybór odpowiedzi, który nie odnosi się do zarządzania komunikacją z bazą danych oraz mechanizmu uruchamiania i przetwarzania akcji, może prowadzić do mylnych przekonań na temat roli frameworków. Na przykład, odpowiedzi dotyczące certyfikatu HTTP i serwera wbudowanego mogą sugerować, że te elementy są kluczowe dla frameworków, podczas gdy w rzeczywistości to mechanizmy, które są bardziej związane z infrastrukturą sieciową i konfiguracją serwera. Certyfikat HTTP jest istotny dla bezpieczeństwa komunikacji, ale nie jest częścią samego frameworka aplikacyjnego. Podobnie, obsługa formularzy jest funkcją, którą wiele frameworków oferuje, lecz nie jest ona wystarczająca do pełnego operowania w kontekście aplikacji webowych. Ponadto, odpowiedź dotycząca domeny i obsługi błędów może wprowadzać w błąd, ponieważ domena to szerszy termin związany z architekturą aplikacji, a obsługa błędów to mechanizm usprawniający interakcję użytkownika, ale nie definiujący samego frameworka. Właściwe zrozumienie roli zarządzania danymi i mechanizmów przetwarzania akcji jest kluczowe dla efektywnego tworzenia aplikacji, które są skalowalne i łatwe w utrzymaniu.

Pytanie 18

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

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

Pytanie 19

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

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

Pytanie 20

W języku PHPnie ma możliwości

A. przetwarzanie danych z formularzy
B. zmienianie dynamiczne treści strony HTML w przeglądarce
C. obróbka informacji przechowywanych w bazie danych
D. tworzenie dynamicznej zawartości strony internetowej
Pomimo powszechnej wiedzy o zastosowaniach PHP, istnieje pewne nieporozumienie dotyczące jego funkcji w kontekście dynamicznych zmian na stronach internetowych. PHP jest używane do przetwarzania danych po stronie serwera, co oznacza, że jego zadaniem jest generowanie treści, które są następnie wysyłane do przeglądarki użytkownika. Pierwsza z niepoprawnych odpowiedzi sugeruje, że PHP może przetwarzać dane zgromadzone w bazie danych, co jest prawdą, jednak nie odnosi się do sedna pytania. PHP efektywnie współpracuje z bazami danych za pomocą zapytań SQL, ale to, co jest zwracane, to statyczny kod HTML. W kontekście generowania dynamicznej zawartości strony, PHP może być użyte do stworzenia HTML, ale nie do jego późniejszej modyfikacji w przeglądarce. Odpowiedź dotycząca generowania dynamicznej zawartości nie uwzględnia, że zmiany te są wynikiem działania PHP przed wysłaniem danych do klienta. Kolejna odpowiedź, sugerująca, że PHP może bezpośrednio zmieniać HTML w przeglądarkach, myli funkcjonalności języka. Nowoczesne aplikacje webowe często wykorzystują JavaScript do interakcji z użytkownikiem po załadowaniu strony, co pozwala na dynamiczne zmiany bez konieczności ponownego ładowania strony. Również przetwarzanie danych formularzy jest zadaniem, które PHP wykonuje, ale dotyczy to głównie zbierania i przesyłania danych do serwera, a nie modyfikacji treści na stronie po jej załadowaniu. Podsumowując, kluczowym aspektem jest zrozumienie, że PHP jest językiem po stronie serwera, a wszelkie dynamiczne interakcje w przeglądarkach powinny być zarządzane za pomocą technologii klienckich, takich jak JavaScript, co jest zgodne z aktualnymi standardami tworzenia aplikacji webowych.

Pytanie 21

W hurtowni danych stworzono tabelę sprzedaz, która zawiera pola: id, kontrahent, grupa_cenowa, obrot. Jakie polecenie trzeba zastosować, aby znaleźć tylko kontrahentów z grupy cenowej numer dwa, których obrót przekracza 4000 zł?

A. SELECT sprzedaz FROM kontrahent WHERE grupa_cenowa = 2 AND obrot > 4000;
B. SELECT kontrahent FROM sprzedaz WHERE grupa_cenowa = 2 OR obrot > 4000;
C. SELECT kontrahent FROM sprzedaz WHERE grupa_cenowa = 2 AND obrot > 4000;
D. SELECT sprzedaz FROM kontrahent WHERE obrot > 4000;
Dwie niepoprawne odpowiedzi pokazują, że są pewne nieporozumienia w kwestii SQL. W pierwszej z nich używasz operatora OR, co psuje całą logikę zapytania. To sprawia, że możesz dostać kontrahentów z drugiej grupy cenowej albo tych, co mają obrót powyżej 4000 zł, a nie tylko tych, którzy spełniają oba warunki jednocześnie. W analizie danych ważne jest, żeby warunki były precyzyjne, bo inaczej wyniki mogą być nieczytelne. W kolejnej odpowiedzi widzę, że próbujesz wydobywać dane z kolumny kontrahent, co jest niepoprawne, bo kolumna to nie tabela. Musisz mieć jasność co do struktury bazy danych, żeby pisać odpowiednie zapytania. A ostatnia odpowiedź nie zawiera warunku dla grupy cenowej, więc zwróci jakieś niepełne dane. Dobrym pomysłem jest też testować swoje zapytania na mniejszych zbiorach danych, niż wdrażać je od razu w produkcji, żeby uniknąć takich błędów.

Pytanie 22

W wyniku przedstawionego polecenia w tabeli zostanie ```ALTER TABLE nazwa1 ADD nazwa2 DOUBLE NOT NULL;```

A. dodana kolumna nazwa2 z wymuszoną wartością DOUBLE
B. zmieniony typ kolumny nazwa2 na DOUBLE
C. zmieniona kolumna z nazwa1 na nazwa2
D. dodana kolumna nazwa2 o typie zmiennoprzecinkowym
Analizując pozostałe odpowiedzi, można zauważyć, że nie odzwierciedlają one poprawności działania zapytania SQL. Pierwsza odpowiedź sugeruje zmianę nazwy kolumny, co jest błędnym podejściem, ponieważ użycie klauzuli "ADD" wyraźnie wskazuje na dodanie nowej kolumny, a nie na modyfikację istniejącej. Zmiana nazwy kolumny wymagałaby użycia zapytania "ALTER TABLE ... RENAME COLUMN...", co jest zupełnie inną operacją. Drugie stwierdzenie koncentruje się na zmianie wartości kolumny "nazwa2" na typ DOUBLE, co jest niepoprawne, gdyż zapytanie nie zmienia wartości, a dodaje nową kolumnę. Ostatnia odpowiedź wskazuje na dodanie kolumny z wartością domyślną, co również jest błędne, gdyż w zapytaniu nie określono wartości domyślnej dla nowej kolumny. W rzeczywistości, przy dodawaniu kolumny można również ustawić wartość domyślną, ale nie jest to wymagane. Typowe błędy w myśleniu prowadzące do takich wniosków często wynikają z niepełnego zrozumienia składni SQL i funkcji poszczególnych poleceń. Dlatego istotne jest, aby przed przystąpieniem do modyfikacji struktury bazy danych dobrze zaznajomić się z dokumentacją i zasadami działania systemu zarządzania bazą danych, z którego się korzysta.

Pytanie 23

Aby cofnąć uprawnienia danemu użytkownikowi, należy użyć polecenia

A. DELETE PRIVILEGES
B. REVOKE
C. GRANT NO PRIVILEGES
D. DELETE
Wybór 'DELETE' do odbierania uprawnień to zły ruch, bo to polecenie służy do usuwania rekordów z tabel, a nie do zarządzania uprawnieniami. Ludzie często się mylą co do tego, a 'DELETE PRIVILEGES' brzmi trochę sensownie, ale w rzeczywistości to nie jest standardowa komenda w żadnym systemie baz danych. Można sobie to pomylić z 'REVOKE', co prowadzi do błędnych wniosków. Dodatkowo, 'GRANT NO PRIVILEGES' nie ma racji bytu, bo nie funkcjonuje jako polecenie w SQL. Zamiast tego, trzeba sięgać po 'REVOKE', żeby cofnąć konkretne uprawnienia. To typowy błąd, jakim jest mieszanie operacji na danych z operacjami na uprawnieniach, co może skutkować nieefektywnym zarządzaniem dostępem i zagrożeniami bezpieczeństwa. Ważne jest, żeby zrozumieć, że operacje na danych i zarządzanie uprawnieniami to zupełnie różne sprawy, co jest kluczowe do odpowiedniego administrowania bazą danych.

Pytanie 24

Aby zwiększyć wydajność operacji w bazie danych, należy skupić się na polach, które są często wyszukiwane lub sortowane

A. dodać więzy integralności
B. stworzyć oddzielną tabelę przechowującą wyłącznie te pola
C. dodać klucz obcy
D. utworzyć indeks
Dodawanie kluczy obcych nie jest bezpośrednią metodą na przyspieszenie operacji na bazie danych. Klucze obce są używane do zapewnienia integralności referencyjnej, co oznacza, że ich celem jest zapewnienie spójności danych w relacjach pomiędzy tabelami. Choć klucze obce mogą wpłynąć na wydajność w kontekście zapytań, nie przyspieszają one ani nie optymalizują wyszukiwania w obrębie pojedynczych tabel. Tworzenie osobnych tabel przechowujących tylko te pola również nie jest metodą optymalizacji efektywności wyszukiwania. Tego rodzaju podejście może prowadzić do komplikacji w zarządzaniu danymi oraz zmniejszenia wydajności przy łączeniu tabel w zapytaniach. Dodanie więzów integralności, które zapewniają, że dane w tabelach są poprawne i zgodne z określonymi zasadami, jest również istotne, ale nie wpływa bezpośrednio na szybkość operacji na bazie danych. Takie podejścia mogą prowadzić do błędnych przekonań, że poprawa wydajności bazy danych można osiągnąć poprzez wprowadzenie dodatkowych ograniczeń lub zmian w strukturze danych, co w rzeczywistości może generować dodatkowe koszty obliczeniowe przy wykonywaniu podstawowych operacji. Kluczowe jest stosowanie odpowiednich technik indeksacji, które są powszechnie uznawane za najlepszą praktykę w kontekście optymalizacji zasobów bazy danych.

Pytanie 25

Utworzono bazę danych zawierającą tabelę podzespoły, która składa się z pól: model, producent, typ, cena. Aby uzyskać listę wszystkich modeli pamięci RAM od firmy Kingston uporządkowaną według ceny, zaczynając od najniższej, należy wykorzystać zapytanie:

A. SELECT model FROM producent WHERE typ="RAM" OR producent="Kingston" ORDER BY podzespoly ASC
B. SELECT model FROM podzespoly WHERE typ="RAM" OR producent="Kingston" ORDER BY cena DESC
C. SELECT model FROM podzespoly WHERE typ="RAM" AND producent="Kingston" ORDER BY cena DESC
D. SELECT model FROM podzespoly WHERE typ="RAM" AND producent="Kingston" ORDER BY cena ASC
Niepoprawne odpowiedzi bazują na zrozumieniu logiki zapytań SQL, ale zawierają istotne błędy w składni i koncepcji dzielenia danych. W pierwszej opcji, użycie operatora OR w klauzuli WHERE prowadzi do wyników, które mogą obejmować modele innych typów pamięci, ponieważ filtruje dane na podstawie jednego z dwóch warunków, co jest sprzeczne z zamiarem uzyskania precyzyjnych wyników tylko dla pamięci RAM od producenta Kingston. Taki błąd w myśleniu może wynikać z mylnego przekonania, że użycie operatora OR zawsze jest lepsze dla zwiększenia ilości danych, co w rzeczywistości prowadzi do zafałszowania wyników. W drugiej odpowiedzi, mimo że użycie operatora AND jest poprawne, sortowanie wyników w kolejności malejącej (ORDER BY cena DESC) nie odpowiada wymaganiu wyświetlenia najtańszej pamięci jako pierwszej, co też czyni tę odpowiedź niewłaściwą. Ostatnia opcja błędnie odnosi się do tabeli 'producent', co jest oczywistym naruszeniem zasad normalizacji bazy danych, ponieważ zapytanie powinno odnosić się do tabeli 'podzespoly', gdzie znajdują się odpowiednie dane. Tego rodzaju błędy mogą prowadzić do nieefektywnego wykorzystania zapytań SQL, co w praktyce będzie skutkować nieprawidłowymi wynikami w aplikacjach opartych na bazach danych, co obniża jakość i wydajność aplikacji. Zrozumienie tych koncepcji jest kluczowe dla prawidłowego stosowania SQL w codziennych zastosowaniach związanych z zarządzaniem danymi.

Pytanie 26

Baza danych szkoły podstawowej dla dzieci w wieku 6 lat obejmuje tabelę szkoła, która zawiera kolumny: imie, nazwisko, klasa. Wszyscy uczniowie w klasach od 1 do 5 przeszli do wyższej klasy. W celu zwiększenia wartości w kolumnie klasa o 1, należy wykonać następujące polecenie

A. UPDATE szkoła SET klasa = klasa + 1 WHERE klasa >=1 AND klasa <= 5
B. SELECT szkoła FROM klasa = klasa + 1 WHERE klasa >=1 AND klasa <= 5
C. UPDATE nazwisko, imie SET klasa = klasa + 1 WHERE klasa>l OR klasa < 5
D. SELECT nazwisko, imie FROM klasa = klasa + 1 WHERE klasa>l OR klasa < 5
W analizie odpowiedzi, które są nieprawidłowe, można zauważyć szereg nieporozumień związanych z podstawowymi zasadami składni SQL i logiką operacji na bazach danych. W pierwszej z niepoprawnych propozycji zastosowano polecenie SELECT, które jest używane do pobierania danych, a nie do ich aktualizacji. Definicja sama w sobie jest błędna, ponieważ nie można używać SELECT do modyfikacji zawartości tabeli. Druga odpowiedź również wykorzystuje SELECT, co sprawia, że jest nieodpowiednia, ale dodatkowo wykorzystuje błędny warunek 'klasa>l OR klasa < 5', gdzie 'l' jest nieprawidłowym oznaczeniem, co wskazuje na nieporozumienie w składni. Ostatnia nieprawidłowa odpowiedź znowu używa błędnego polecenia, tym razem próbując zaktualizować 'nazwisko, imie', co jest niemożliwe, gdyż kolumna 'klasa' powinna być aktualizowana w kontekście całej tabeli 'szkoła'. Takie błędy pokazują brak zrozumienia dla struktury zapytań SQL oraz zasad dotyczących modyfikacji danych w bazach danych. Kluczowe dla efektywnego korzystania z SQL jest zrozumienie, które polecenia są odpowiednie do danych operacji oraz jakie składnie są wymagane do poprawnego ich zdefiniowania. Właściwe podejście do aktualizacji danych wymaga nie tylko znajomości polecenia UPDATE, ale także umiejętności poprawnego formułowania warunków w klauzuli WHERE, aby uniknąć niepożądanych efektów ubocznych, takich jak aktualizacja niewłaściwych rekordów.

Pytanie 27

W systemie MySQL trzeba użyć polecenia REVOKE, aby użytkownikowi anna cofnąć możliwość wprowadzania zmian jedynie w definicji struktury bazy danych. Odpowiednia komenda do odebrania tych uprawnień ma postać

A. REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'
B. REVOKE CREATE ALTER DROP ON tabela1 FROM 'anna'@'localhost'
C. REVOKE ALL ON tabela1 FROM 'anna'@'locaihost'
D. REVOKE CREATE INSERT DELETE ON tabela1 FROM 'anna'@'localhost'
W analizie odpowiedzi, które są niepoprawne, kluczowe jest zrozumienie, jakie uprawnienia są odbierane i dlaczego to ma znaczenie. Odpowiedzi takie jak 'REVOKE ALL ON tabela1 FROM 'anna'@'localhost'' są niewłaściwe, ponieważ polecenie REVOKE ALL odbiera wszystkie prawa użytkownikowi, co może być zbyt drastycznym krokiem. W kontekście zarządzania uprawnieniami, ważne jest, aby podejść do tego z miarą i precyzją, a nie stosować ogólne odbieranie wszystkich praw. Ponadto, odpowiedzi, które obejmują niewłaściwe kombinacje uprawnień, takie jak 'REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'', są również błędne. Odbieranie prawa UPDATE nie jest zgodne z celem pytania, które dotyczy jedynie strukturalnych zmian, a nie wprowadzania danych. Właściwe podejście do konfiguracji uprawnień powinno koncentrować się na ograniczaniu dostępu użytkowników tylko tam, gdzie jest to absolutnie konieczne, a nie na eliminacji ich zdolności do pracy z danymi w ogóle. Użytkownicy często popełniają błąd myślowy, myśląc, że odebranie zbyt wielu uprawnień jest rozwiązaniem problemu bezpieczeństwa, podczas gdy w rzeczywistości może to prowadzić do zablokowania niezbędnych operacji, co zagraża efektywności pracy organizacji.

Pytanie 28

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 CHANGE imie TEXT;
B. ALTER TABLE klienci MODIFY COLUMN imie VARCHAR(30);
C. CHANGE TABLE klienci TO COLUMN imie SET CHAR(30);
D. CHANGE TABLE klienci MODIFY imie CHAR(30);
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 29

W bazie danych znajduje się tabela pracownicy z kolumnami: id, imie, nazwisko, pensja. W nadchodzącym roku postanowiono zwiększyć wynagrodzenie wszystkim pracownikom o 100 zł. Zmiana ta w bazie danych będzie miała formę

A. UPDATE pracownicy SET pensja = 100;
B. UPDATE pracownicy SET pensja = pensja +100;
C. UPDATE pensja SET +100;
D. UPDATE pensja SET 100;
W celu podniesienia pensji wszystkim pracownikom o 100 zł, zastosowanie ma polecenie SQL UPDATE. Poprawna instrukcja 'UPDATE pracownicy SET pensja = pensja + 100;' działa na zasadzie modyfikacji istniejących wartości w kolumnie 'pensja' w tabeli 'pracownicy'. Ta konstrukcja przyjmuje bieżącą wartość pensji każdego pracownika i dodaje do niej 100 zł. Jest to standardowa praktyka w SQL, gdzie używamy operatora '+', aby zmodyfikować dane. Warto pamiętać, że takie operacje są powszechnie wykorzystywane w systemach baz danych do aktualizacji informacji, co pozwala na efektywne zarządzanie danymi. Dla porównania, instrukcje SELECT, które służą do pobierania danych, nie są odpowiednie w tym kontekście. W rezultacie każdy pracownik w tabeli otrzyma nową, zwiększoną pensję, co odzwierciedli aktualizację w bazie danych.

Pytanie 30

W SQL instrukcja INSERT INTO

A. wprowadza dane do tabeli.
B. wprowadza nową tabelę.
C. modyfikuje rekordy przypisaną wartością.
D. dodaje kolumny do istniejącej tabeli.
Odpowiedź 'wprowadza dane do tabeli' jest poprawna, ponieważ polecenie INSERT INTO w języku SQL służy dokładnie do tego celu - do dodawania nowych rekordów (wierszy) do istniejącej tabeli w bazie danych. W praktyce, polecenie to pozwala na wprowadzenie danych zgodnych z określoną strukturą tabeli, co oznacza, że musimy dostarczyć wartości dla odpowiednich pól. Przykład użycia polecenia INSERT INTO: 'INSERT INTO pracownicy (imie, nazwisko, wiek) VALUES ('Jan', 'Kowalski', 30);' W tym przypadku, dodawany jest nowy rekord do tabeli 'pracownicy', wskazując konkretne wartości dla kolumn 'imie', 'nazwisko' oraz 'wiek'. Zgodnie z dobrą praktyką, przed wprowadzeniem danych do tabeli warto upewnić się, że są one zgodne z definicją kolumn, aby uniknąć błędów w czasie wykonywania polecenia. Ponadto, często zaleca się stosowanie transakcji, aby mieć możliwość wycofania wprowadzonych zmian w przypadku wystąpienia błędów. INSERT INTO jest fundamentalną częścią operacji CRUD (Create, Read, Update, Delete), które są podstawą zarządzania danymi w bazach danych, a jego właściwe zrozumienie jest kluczowe dla każdego, kto pracuje z SQL.

Pytanie 31

ID_PracownikaNazwiskoImięStanowiskoWynagrodzenie
1KowalskiKrzysztofkasjer3215,76
2NowakAntonikierownik5350,00
3ZającAlicjaksięgowy4568,70
4KrólWitoldkasjer3045,00
5NowikGrzegorzkasjer2750,65
6KotulskiAndrzejkierowca3467,00
7TutkaKatarzynakierownik4935,33
8PoradaJakubmagazynier3321,56
Które zapytanie SQL należy wykonać na tabeli Pracownicy, aby otrzymać średnie wynagrodzenie dla pracownika na stanowisku kasjer?
A. SELECT SUM(*) FROM Pracownicy AND Stanowisko= 'kasjer';
B. SELECT AVG(kasjer.Wynagrodzenie) FROM Pracownicy;
C. SELECT AVG(Wynagrodzenie) FROM Pracownicy WHERE Stanowisko='kasjer';
D. SELECT SREDNIA(Wynagrodzenie) AND Stanowisko='kasjer' FROM Pracownicy;
Poprawne zapytanie to SELECT AVG(Wynagrodzenie) FROM Pracownicy WHERE Stanowisko='kasjer';, bo dokładnie robi to, o co chodzi w treści zadania. Funkcja AVG() w SQL jest standardową funkcją agregującą, która liczy średnią arytmetyczną z wartości liczbowych w danej kolumnie. W tym przypadku kolumna to Wynagrodzenie, czyli kwoty wypłat, a klauzula WHERE Stanowisko='kasjer' zawęża zestaw rekordów tylko do pracowników na stanowisku kasjera. Najpierw więc silnik bazy danych filtruje wiersze (kasjerów), a dopiero potem na tej ograniczonej grupie liczy średnią. To jest bardzo typowy i poprawny schemat pracy z danymi w SQL: najpierw filtrujesz, potem agregujesz. Moim zdaniem warto zauważyć, że taka konstrukcja jest uniwersalna – w praktyce w firmach często liczy się średnie wynagrodzenia dla różnych stanowisk, działów, lokalizacji. Wtedy zmienia się tylko warunek w klauzuli WHERE. Można też pójść krok dalej i użyć GROUP BY, np. SELECT Stanowisko, AVG(Wynagrodzenie) FROM Pracownicy GROUP BY Stanowisko; żeby dostać średnie dla wszystkich stanowisk naraz, co jest wygodne np. w raportach HR. To, co masz w odpowiedzi, to w zasadzie „wersja jednostanowiskowa” takiego raportu. Ważna dobra praktyka: zawsze filtrujemy w klauzuli WHERE, a nie próbujemy wpychać warunków do funkcji agregującej. Dzięki temu zapytanie jest czytelne, zgodne ze standardem SQL i dobrze optymalizowane przez silnik bazy. W realnych projektach staramy się też nadać alias wynikom agregacji, np. SELECT AVG(Wynagrodzenie) AS SredniaKasjera FROM Pracownicy WHERE Stanowisko='kasjer';, żeby w raportach i w kodzie aplikacji od razu było wiadomo, co oznacza zwracana kolumna.

Pytanie 32

Podane w ramce polecenie SQL ma za zadanie

UPDATE Uczen SET id_klasy = id_klasy + 1;
A. zwiększyć o jeden wartość w kolumnie id_klasy dla wszystkich rekordów tabeli Uczen
B. zwiększyć o jeden wartość pola id_klasy w jednym rekordzie tabeli Uczen
C. ustawić wartość w kolumnie id_klasy na 1 dla wszystkich rekordów tabeli Uczen
D. ustawić wartość pola id_klasy na 1 dla wszystkich rekordów tabeli Uczen
Polecenie SQL UPDATE Uczen SET id_klasy = id_klasy + 1; modyfikuje wszystkie rekordy w tabeli Uczen, bo nie ma w nim klauzuli WHERE. To jest kluczowa rzecz: brak WHERE oznacza, że polecenie dotyczy całej tabeli, a nie pojedynczego wiersza. Wyrażenie id_klasy = id_klasy + 1 oznacza aktualizację kolumny na podstawie jej dotychczasowej wartości – po prostu dodajemy 1 do obecnej wartości w każdej krotce. Nie ustawiamy stałej wartości, tylko wykonujemy operację arytmetyczną na kolumnie. W praktyce taki zapis stosuje się np. gdy chcemy przesunąć identyfikatory klas, zmienić numerację poziomów, podnieść wszystkim uczniom numer semestru albo zaktualizować jakiś licznik. W SQL to bardzo typowy wzorzec: UPDATE tabela SET kolumna = kolumna + wartość WHERE warunek; i w dobrych praktykach zawsze pilnuje się, żeby świadomie używać lub pomijać WHERE. Administratorzy baz danych zwykle wręcz powtarzają zasadę: przed uruchomieniem UPDATE bez WHERE zastanów się dwa razy, czy na pewno chcesz zmienić wszystkie wiersze. Moim zdaniem warto zapamiętać dwie rzeczy: po pierwsze, UPDATE bez WHERE = aktualizacja wszystkich rekordów; po drugie, po lewej stronie znaku równości zawsze jest nazwa kolumny, którą zmieniamy, a po prawej – wyrażenie, z którego zostanie policzona nowa wartość. To wyrażenie może używać starej wartości tej samej kolumny, tak jak tutaj. W wielu systemach bazodanowych (np. MySQL, PostgreSQL, SQL Server) ta konstrukcja działa identycznie, więc to taki uniwersalny, standardowy zapis, zgodny z ogólnymi zasadami języka SQL.

Pytanie 33

Klucz obcy w tabeli jest ustanawiany w celu

A. wiązać go z innymi kluczami obcymi w tabeli
B. określić relację 1..n powiązującą go z kluczem głównym innej tabeli
C. opracować formularz do wprowadzania danych do tabeli
D. zapewnić jednoznaczną identyfikację rekordu w tabeli
Klucz obcy jest często mylony z innymi elementami bazy danych, co prowadzi do nieprawidłowych wniosków na temat jego funkcji. Nie jest to mechanizm do łączenia go z innymi kluczami obcymi tabeli, co sugeruje pierwsza odpowiedź. Zamiast tego, klucz obcy ma na celu ustanowienie relacji między tabelami, co jest znacząco różne. Proces tworzenia formularzy do wprowadzania danych również nie jest bezpośrednio związany z funkcją klucza obcego. Formularze są narzędziem interfejsu użytkownika, które pozwala na wprowadzanie danych, ale nie wpływają na relacje między danymi w bazie. Ponadto, chociaż klucz obcy może wspierać identyfikację rekordu, jego główną rolą nie jest jednoznaczne wskazywanie na rekord w obrębie tej samej tabeli, lecz raczej wskazywanie na rekord w innej tabeli. Tego rodzaju nieporozumienia wynikają z braku zrozumienia zasad modelowania danych oraz relacji 1..1 i 1..n, co jest podstawą projektowania baz danych. Klucz obcy jest kluczowym elementem w relacyjnych bazach danych, a jego prawidłowe zrozumienie jest niezbędne do efektywnego korzystania z systemów zarządzania danymi.

Pytanie 34

Przedstawiony fragment kodu ilustruje działanie

Ilustracja do pytania
A. podjęcia decyzji
B. pozyskiwania danych
C. prezentacji danych
D. wykorzystania zdefiniowanej procedury lub funkcji
Zastosowanie gotowej procedury lub funkcji nie jest reprezentowane przez blok w kształcie rombu. Takie czynności zazwyczaj ilustruje się prostokątem z zaokrąglonymi narożnikami lub innym charakterystycznym symbolem, który wskazuje na działanie sekwencyjne. Wczytanie danych z kolei często reprezentowane jest przez blok w kształcie równoległoboku, podkreślający operacje wejścia-wyjścia, czyli interakcję z zewnętrznym źródłem danych. Wyświetlanie danych również jest związane z operacjami wejścia-wyjścia, co sugeruje podobny symbol jak w przypadku wczytywania danych. Podstawowy błąd myślowy w tych odpowiedziach polega na myleniu struktury kontrolnej z funkcjami operacyjnymi. Struktury kontrolne, jak decyzje, są kluczowe dla logiki programu, podczas gdy operacje wejścia-wyjścia są bardziej związane z przetwarzaniem danych. Zrozumienie tych różnic jest fundamentalne dla poprawnego projektowania algorytmów i diagramów przepływu, co znacząco wpływa na efektywność i czytelność projektowanych systemów.

Pytanie 35

W SQL, aby uniemożliwić stworzenie konta przy wykonywaniu kwerendy CREATE USER, gdy konto już istnieje, można zastosować następującą składnię

A. CREATE OR REPLACE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
B. CREATE USER IF NOT EXISTS 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
C. CREATE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
D. CREATE USER OR DROP 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
Odpowiedzi, które nie zawierają klauzuli 'IF NOT EXISTS', nie są optymalne, ponieważ mogą prowadzić do błędów, gdy próbuje się utworzyć konto, które już istnieje. W przypadku polecenia 'CREATE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';', jeśli konto 'anna' jest już w systemie, użytkownik otrzyma błąd, co skutkuje niepowodzeniem całego skryptu. W kontekście administracji baz danych, jest to szczególnie problematyczne, gdy skrypty są uruchamiane automatycznie, ponieważ mogą one przerywać dalsze operacje. Natomiast składnia 'CREATE USER OR DROP 'anna'@'localhost' IDENTIFIED BY 'yu&T%';' jest nieprawidłowa, ponieważ nie istnieje w standardzie SQL. Użytkownicy mogą mylić 'DROP' z opcją usunięcia konta, co w praktyce nie powinno być podejmowane bez wyraźnej intencji. Ostatecznie, 'CREATE OR REPLACE USER...' działa odmiennie, ponieważ nie jest standardową operacją w SQL dla użytkowników; bardziej odpowiednie byłoby jej zastosowanie w kontekście obiektów, takich jak procedury czy widoki. Kluczowe jest zrozumienie, że błędne podejście do tworzenia użytkowników może prowadzić do chaosu w zarządzaniu bazą danych i stwarzać potencjalne zagrożenia dla bezpieczeństwa. Dlatego tak istotne jest stosowanie klauzuli 'IF NOT EXISTS', co jest zgodne z najlepszymi praktykami w branży zarządzania systemami baz danych.

Pytanie 36

Zdefiniowana jest tabela o nazwie wycieczki z atrybutami nazwa, cena oraz miejsca (jako liczba dostępnych miejsc). Aby wyświetlić jedynie nazwy tych wycieczek, dla których cena jest mniejsza niż 2000 złotych i które mają co najmniej cztery wolne miejsca, należy użyć zapytania

A. SELECT nazwa FROM wycieczki WHERE cena<2000 AND miejsca>3;
B. SELECT nazwa FROM wycieczki WHERE cena<2000 OR miejsca>4;
C. SELECT * FROM wycieczki WHERE cena<2000 AND miejsca>4;
D. SELECT * FROM wycieczki WHERE cena<2000 OR miejsca>3;
Przyglądając się pozostałym odpowiedziom, można zauważyć, że nie spełniają one wymagań stawianych przez pytanie, co czyni je błędnymi. Pierwsza z nich zawiera operator OR, co oznacza, że przynajmniej jeden z warunków musi być spełniony. W związku z tym, możliwe jest uzyskanie wyników, w których cena jest niższa niż 2000 zł, ale liczba wolnych miejsc wynosi tylko 4 lub mniej, co nie odpowiada wymogowi przynajmniej czterech wolnych miejsc. Dodatkowo, operator AND przed warunkiem miejsc >4 jest niewłaściwy, ponieważ nie zapewnia, że liczba wolnych miejsc będzie co najmniej cztery. Trzecia odpowiedź z kolei wykorzystuje operator * w klauzuli SELECT, co powoduje, że zwrócone zostaną wszystkie kolumny tabeli wycieczki zamiast tylko nazw. Ostatecznie, ostatnia odpowiedź również błędnie używa operatora OR zamiast AND, co prowadzi do sytuacji, w której system może zwrócić wycieczki z ceną powyżej 2000 zł, jeśli chociaż jedno z kryteriów jest spełnione, co nie jest zgodne z zamiarem użytkownika. Te błędy ilustrują istotę precyzyjnego formułowania zapytań SQL, aby uzyskać dokładne i zgodne z wymaganiami wyniki.

Pytanie 37

W bazie danych dotyczącej pojazdów pole kolor w tabeli samochody może mieć wartości jedynie z definicji lakier. Aby nawiązać relację między tabelami samochody a lakier, należy użyć kwerendy

A. ALTER TABLE lakier ADD FOREIGN KEY (barwa) REFERENCES samochody(kolor);
B. ALTER TABLE samochody ADD FOREIGN KEY (kolor) REFERENCES lakier(lakierId);
C. ALTER TABLE samochody ADD FOREIGN KEY kolor REFERENCES lakier;
D. ALTER TABLE samochody ADD FOREIGN KEY barwa REFERENCES samochody.lakier;
Odpowiedź "ALTER TABLE samochody ADD FOREIGN KEY (kolor) REFERENCES lakier(lakierId);" jest poprawna, ponieważ prawidłowo definiuje klucz obcy w tabeli samochody, wskazując, że kolumna kolor w tej tabeli odnosi się do kolumny lakierId w tabeli lakier. Umożliwia to zapewnienie integralności referencyjnej, co oznacza, że wartości koloru w tabeli samochody będą mogły przyjmować tylko te wartości, które istnieją w tabeli lakier. Jest to standardowa praktyka w projektowaniu baz danych, która pomaga zapobiegać błędom, takim jak wprowadzenie koloru, który nie jest dostępny w zbiorze dozwolonych opcji. W praktyce, podczas dodawania nowego wpisu do tabeli samochody, system bazy danych automatycznie sprawdzi, czy dany kolor istnieje w tabeli lakier. Takie podejście zapewnia większą spójność danych oraz ułatwia zarządzanie them, zwłaszcza w większych aplikacjach, gdzie liczba potencjalnych wartości kolorów może być znaczna. Stosowanie kluczy obcych jest zgodne z zasadami normalizacji baz danych, co przyczynia się do ich efektywności i skalowalności.

Pytanie 38

Podaj dwa sposoby ochrony bazy danych Microsoft Access?

A. Zaszyfrowanie pliku bazy danych oraz wiadomości SMS z kodem autoryzacyjnym
B. Ustalenie hasła do otwarcia bazy danych oraz zabezpieczeń na poziomie użytkownika
C. Funkcje anonimowe oraz ustawienie hasła do bazy danych
D. Ustalenie zabezpieczeń na poziomie użytkownika i sesji
W analizie pozostałych odpowiedzi można zauważyć, że wiele z nich nie odnosi się do skutecznych metod ochrony bazy danych Microsoft Access. Na przykład, funkcje anonimowe nie są standardową metodą zabezpieczania baz danych. Anonimizacja danych może być stosowana w kontekście ochrony prywatności, ale nie zapobiega dostępowi do samej bazy danych. Ponadto, ustalenie hasła otwarcia bazy danych bez dodatkowych zabezpieczeń nie zapewnia pełnej ochrony, ponieważ łatwe do odgadnięcia hasła mogą być szybko złamane przez atakujących. W kontekście zabezpieczeń SMS z kodem autoryzującym, warto zauważyć, że ta metoda w zasadzie nie jest stosowana w Microsoft Access. Chociaż SMS-y z kodami mogą być skuteczne w autoryzacji na poziomie aplikacji lub systemów webowych, Access nie obsługuje takiej funkcji. Wprowadzenie takich środków może być mylące i nie prowadzi do rzeczywistego zabezpieczenia bazy danych. Podobnie, ustalenie zabezpieczeń na poziomie sesji, mimo że jest ważne w niektórych systemach, nie znajduje zastosowania w Access, który nie obsługuje bardziej zaawansowanych metod autoryzacji sesji, jak to ma miejsce w systemach zarządzania bazami danych wysokiego poziomu, takich jak SQL Server. W skrócie, brak znajomości funkcji i ograniczeń Microsoft Access prowadzi do zaproponowania nieefektywnych metod zabezpieczeń.

Pytanie 39

Na przedstawionym obrazie zobrazowano wybór formatu pliku do zaimportowania bazy danych. Który z formatów należy wybrać, jeśli dane zostały wyeksportowane z programu Excel i zapisane w formie tekstowej z użyciem przecinka do oddzielania wartości pól?

Ilustracja do pytania
A. XML
B. ESRI
C. SQL
D. CSV
Format SQL jest używany do zapisywania i przenoszenia poleceń bazodanowych które pozwalają na operacje takie jak tworzenie modyfikowanie i pobieranie danych SQL to język zapytań a nie format przechowywania danych co sprawia że nie nadaje się do prostego importu danych wyeksportowanych z Excela bezpośrednio w formie tekstowej XML z kolei jest formatem tekstowym używanym do przechowywania danych w strukturze hierarchicznej z możliwością definiowania złożonych relacji między danymi Choć elastyczny i potężny XML jest często zbyt skomplikowany dla prostych tabelarycznych danych jakie można znaleźć w plikach Excel Wymaga tworzenia struktur znaczników co może być niepotrzebne zwłaszcza dla prostych zestawów danych ESRI czyli format plików kształtu jest specyficzny dla danych geograficznych i przestrzennych i nie jest używany do przenoszenia danych tabelarycznych Excel MediaWiki tabela jest rozwiązaniem specyficznym które umożliwia eksport i import danych w formacie wiki przydatnym jedynie w kontekście platform wiki Zastosowanie tych formatów w kontekście importu prostych danych tabelarycznych z Excela które są zapisane przy użyciu przecinków jako separatorów wydaje się niepraktyczne Odpowiednim i efektywnym rozwiązaniem jest zatem użycie CSV który zapewnia łatwość importu i szeroką kompatybilność z różnymi systemami i oprogramowaniem

Pytanie 40

Na serwerze MySQL do odebrania praw użytkownikowi służy polecenie

A. GRANT
B. REVOKE
C. RENAME
D. CREATE
Poprawna komenda do odebrania uprawnień użytkownikowi w MySQL to REVOKE i warto ją sobie dobrze zakodować w głowie, bo w administracji bazą używa się jej naprawdę często. Składnia w najprostszym wariancie wygląda np. tak: REVOKE SELECT, INSERT ON baza.tabela FROM 'user'@'localhost'; – tutaj odbierasz konkretne prawa (SELECT, INSERT) do wskazanej tabeli danemu użytkownikowi. Można też odebrać wszystkie uprawnienia: REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';, co jest przydatne, gdy chcesz „odciąć” konto od bazy, ale jeszcze go nie usuwać. Z mojego doświadczenia lepiej jest właśnie ograniczać i porządkować uprawnienia, niż od razu kasować użytkowników, bo często wracasz do tych kont np. w środowisku testowym. W MySQL cały mechanizm praw opiera się na parze GRANT/REVOKE: GRANT nadaje uprawnienia, REVOKE je odbiera. To jest zgodne z dobrymi praktykami bezpieczeństwa – minimalny dostęp, tylko tyle, ile jest faktycznie potrzebne (zasada least privilege). W realnych projektach webowych np. aplikacja PHP powinna mieć konto w MySQL z ściśle ograniczonym zakresem operacji, a gdy zmienia się rola aplikacji, zamiast tworzyć nowe konto „na pałę”, lepiej doprecyzować lub cofnąć stare uprawnienia właśnie przez REVOKE. Warto też pamiętać, że po większych zmianach praw dobrze jest wykonać FLUSH PRIVILEGES w starszych wersjach MySQL lub po modyfikacjach bezpośrednio w tabelach systemowych, chociaż standardowo przy GRANT/REVOKE nie jest to już konieczne. Moim zdaniem opanowanie REVOKE to podstawa świadomej administracji serwerem bazodanowym, szczególnie gdy mówimy o środowiskach produkcyjnych, gdzie każdy nadmiarowy przywilej może być potencjalnym zagrożeniem.