Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
Kod SELECT imie, pesel, wiek FROM dane WHERE wiek IN (18,30) spowoduje wybranie
Odpowiedzi
Informacja zwrotna
W pytaniu mamy kod SQL, który robi zapytanie do bazy i wybiera kolumny 'imie', 'pesel' oraz 'wiek' z tabeli 'dane'. W klauzuli WHERE jest warunek, który sprawdza, czy 'wiek' wynosi 18 albo 30. Trochę to dziwne, bo jest tam błąd z nawiasami (mówiąc wprost, powinno być IN (18, 30), ale wygląda na to, że zamysł był dobry. Teoretycznie, to zapytanie ma na celu wybór osób w konkretnym wieku. Przyjmując, że w tabeli 'dane' są rekordy jak (Jan, 12345678901, 18) i (Anna, 98765432101, 30), to te dwa zapisy powinny się pojawić w wynikach. Operator IN w SQL jest użyty, by określić konkretne wartości, więc całkiem sensownie działa tutaj do filtracji na podstawie wieku. Takie zapytania są naprawdę popularne w bazach danych, szczególnie do analizy danych czy tworzenia raportów.
Pierwsza odpowiedź, która wskazuje na osoby poniżej 18 lat, jest błędna. To zapytanie SQL nie ma na celu wybrania młodszych; przecież filtruje tych, którzy mają 18 lub 30 lat. Co do drugiej odpowiedzi, to sugeruje, jakoby zapytanie wybierało osoby w przedziale od 18 do 30, co też jest pomyłką. Operator IN wskazuje konkretne liczby, a nie przedzial, dlatego w tym przypadku wiek pośredni nie ma miejsca. Trzecia odpowiedź, dotycząca osób powyżej 30 lat, kompletnie nie pasuje, bo nie dotyczy tego, co jest w zapytaniu. Właściwie to nie ma związku między tą składnią SQL a osobami, które mają więcej niż 30 lat. Każda z tych odpowiedzi wynika z niepoprawnego zrozumienia, jakie jest intencja zapytania, które jasno wybiera osoby tylko w dwóch podanych przedziałach. Myślę, że ważne jest, żeby dobrze rozumieć, jak działają operatory w SQL, żeby unikać takich pomyłek i nieporozumień.