Podstawy zapytania SELECT i FROM – gwiazdka kontra jawna lista kolumn, kolejność kolumn w wyniku oraz kwalifikacja tabela.kolumna.
SELECT to polecenie, którym pobiera się dane z bazy. W praktyce używa się go znacznie częściej niż poleceń dopisujących dane – informację raz się zapisuje, a odczytuje wielokrotnie.
Najprostsze zapytanie składa się z dwóch części: co chcemy zobaczyć (po SELECT) i skąd (po FROM). Wynikiem zawsze jest tabela – nawet gdy ma jeden wiersz albo jest pusta.
Gwiazdka zwraca wszystko. Zapis SELECT * FROM uczniowie oznacza „daj mi wartości ze wszystkich kolumn tej tabeli". Jest wygodny, gdy dopiero oglądasz nieznaną tabelę i chcesz zobaczyć, co w niej w ogóle jest.
Problem w tym, że przy szerokiej tabeli gwiazdka wysypuje na ekran mnóstwo kolumn, których wcale nie potrzebujesz – i przeszukiwanie tego wzrokiem staje się żmudne. Dlatego poza szybkim podglądem * stosuje się rzadko.
Jawna lista kolumn. Zamiast gwiazdki można wypisać po przecinku dokładnie te kolumny, które Cię interesują. Wynik zawiera wtedy tylko je – jest węższy, czytelniejszy i łatwiejszy do zinterpretowania.
Ma to też drugi, mniej oczywisty skutek: baza nie musi przygotowywać danych, o które nie prosisz. Przy dużych tabelach jawna lista kolumn potrafi zauważalnie przyspieszyć zapytanie. Dobra praktyka jest więc zbieżna z wydajnością – wybieraj to, czego naprawdę potrzebujesz.
Kolejność kolumn jest Twoją decyzją. Kolumny w wyniku pojawią się dokładnie w tej kolejności, w jakiej wypisałeś je po SELECT – niezależnie od tego, w jakiej kolejności są zapisane w tabeli. Jeśli chcesz zobaczyć najpierw nazwisko, a potem imię, wystarczy tak je wymienić.
Zwróć uwagę na puste miejsca w kolumnie email – to wartości NULL, czyli brak danych. Zachowują się inaczej niż wszystkie pozostałe wartości i mają własne reguły wyszukiwania.
To wciąż zwraca wszystkie wiersze tabeli. Zawężanie wyniku do wierszy spełniających warunek to zadanie klauzuli WHERE, a ustalenie kolejności wierszy – klauzuli ORDER BY.
Kolumnę można też zapisać z pełną nazwą tabeli z przodu, oddzieloną kropką: tabela.kolumna (np. uczniowie.nazwisko). Przy jednej tabeli to zbędne – sama nazwa kolumny wystarczy – ale klucze CKE zapisują tak nawet proste zapytania na jednej tabeli, więc warto rozpoznawać ten zapis w treści zadania. Kwalifikacja staje się konieczna dopiero wtedy, gdy w zapytaniu występuje więcej niż jedna tabela i te same nazwy kolumn się powtarzają – tym zajmuje się złączenie wielu tabel.
SELECT * sprawdza, co jest w tabeli; w gotowym rozwiązaniu wypisuj tylko te kolumny, o które prosi polecenie.-- Gwiazdka: wszystkie kolumny tabeli. To jest pełna tabela `uczniowie`, -- na której oparte są przykłady w całym dziale. SELECT * FROM uczniowie
| id | imie | nazwisko | klasa | srednia | data_ur | pesel | |
|---|---|---|---|---|---|---|---|
| 1 | Anna | Kowalska | 3A | 4.75 | 2007-03-12 | 07231212345 | a.kowalska@example.com |
| 2 | Piotr | Nowak | 3B | 3.20 | 2006-11-05 | 06310512345 | |
| 3 | Marek | Wiśniewski | 3A | 5.10 | 2007-01-28 | 07212812345 | m.wisniewski@example.com |
| 4 | Julia | Zając | 3C | 3.90 | 2006-05-19 | 06251912345 | |
| 5 | Karol | Dąbrowski | 3B | 4.10 | 2007-08-30 | 07283012345 | k.dabrowski@example.com |
-- Jawna lista kolumn: węższy i czytelniejszy wynik SELECT nazwisko, srednia FROM uczniowie
| nazwisko | srednia |
|---|---|
| Kowalska | 4.75 |
| Nowak | 3.20 |
| Wiśniewski | 5.10 |
| Zając | 3.90 |
| Dąbrowski | 4.10 |
-- Kolejność kolumn w wyniku to kolejność z zapytania SELECT klasa, nazwisko, imie FROM uczniowie
| klasa | nazwisko | imie |
|---|---|---|
| 3A | Kowalska | Anna |
| 3B | Nowak | Piotr |
| 3A | Wiśniewski | Marek |
| 3C | Zając | Julia |
| 3B | Dąbrowski | Karol |
-- Gwiazdka na innej tabeli: to jest pełna tabela `oceny`, na której oparte -- są przykłady o ocenach w całym dziale. SELECT * FROM oceny
| id | uczen_id | przedmiot | ocena | data |
|---|---|---|---|---|
| 1 | 1 | informatyka | 5 | 2026-02-10 |
| 2 | 1 | matematyka | 4 | 2026-02-14 |
| 3 | 2 | informatyka | 3 | 2026-02-10 |
| 4 | 2 | angielski | 4 | 2026-02-20 |
| 5 | 3 | informatyka | 6 | 2026-02-10 |
| 6 | 3 | matematyka | 5 | 2026-03-01 |
| 7 | 4 | informatyka | 3 | 2026-02-10 |
| 8 | 5 | informatyka | 4 | 2026-02-10 |
| 9 | 5 | angielski | 2 | 2026-03-05 |
-- Przypadek brzegowy: powtórzona kolumna na liście. SELECT nie usuwa -- duplikatów kolumn ani wierszy – to inne zadanie, patrz DISTINCT. SELECT nazwisko, nazwisko FROM uczniowie
| nazwisko | nazwisko |
|---|---|
| Kowalska | Kowalska |
| Nowak | Nowak |
| Wiśniewski | Wiśniewski |
| Zając | Zając |
| Dąbrowski | Dąbrowski |
-- Przypadek brzegowy: literówka w nazwie kolumny. Baza zgłasza błąd -- zamiast zwrócić przybliżony wynik. SELECT nazwisk FROM uczniowie
| Komunikat błędu |
|---|
| Nieprawidłowa nazwa pola „nazwisk" w wyrażeniu definiującym pole. |
| W Accessie | Standardowy SQL | Znaczenie |
|---|---|---|
[Nazwa pola] |
"Nazwa pola" lub nazwa bez spacji |
Nawiasy kwadratowe otaczają w Accessie nazwę tabeli lub kolumny zawierającą spację albo inny znak specjalny (np. [Data urodzenia]); standard SQL do tego celu używa cudzysłowu podwójnego, a w praktyce matury łatwiej jest w ogóle unikać spacji w nazwach. |
tabela.kolumna |
tabela.kolumna |
Zapis kwalifikujący kolumnę nazwą tabeli jest identyczny w Accessie i w standardzie – różnicy dialektu tu nie ma, ale klucze CKE zapisują tak nawet zapytanie na jednej tabeli, więc warto rozpoznawać tę składnię. |
Literówka w nazwie kolumny. Zapytanie SELECT nazwisk FROM uczniowie kończy się błędem w rodzaju „Nieprawidłowa nazwa pola „nazwisk" w wyrażeniu definiującym pole" – baza nie zgaduje, o którą kolumnę chodziło. Nazwy kolumn bierz ze struktury tabeli podanej w arkuszu, nie z pamięci, i sprawdź polskie znaki – bywają pomijane w nazwach kolumn, mimo że w danych występują.
Zapomniana klauzula FROM. Samo SELECT nazwisko bez wskazania tabeli nie zadziała – baza nie wie, skąd wziąć kolumnę. FROM jest tak samo obowiązkowe jak SELECT, nawet gdy tabela jest jedna i oczywista z treści zadania.
Gwiazdka tam, gdzie polecenie chce konkretnych kolumn. SELECT * FROM uczniowie, gdy zadanie mówi „wypisz nazwisko i średnią", zwróci też kolumny, o które nikt nie pytał. To nie jest błąd składni, ale bywa ocenione jako niepełne wykonanie polecenia – gwiazdka jest do podglądu, nie do gotowego rozwiązania.
Nazwa ze spacją zapisana bez nawiasów. SELECT Data urodzenia FROM uczniowie w Accessie rozpada się na dwie osobne nazwy i kończy błędem – Access potrzebuje [Data urodzenia] w nawiasach kwadratowych, żeby rozpoznać to jako jedną nazwę kolumny.
Przekonanie, że SELECT usuwa duplikaty. SELECT nazwisko, nazwisko FROM uczniowie naprawdę zwróci tę samą kolumnę dwa razy, a SELECT klasa FROM uczniowie zwróci „3A" tyle razy, ile jest uczniów w tej klasie – zwykły SELECT nic nie odfiltrowuje. Do unikalnych wierszy służy DISTINCT.
Kwalifikacja tabela.kolumna uznana za błąd składni. SELECT uczniowie.nazwisko FROM uczniowie jest poprawne, choć wygląda niezwyczajnie przy jednej tabeli – kropka nie jest literówką, tylko odwołaniem przez nazwę tabeli. Dopiero brak nawiasu przy nazwie ze spacją albo kropka postawiona w złym miejscu jest błędem.
* zwraca wszystkie kolumny tabeli; jawna lista zwraca tylko te wskazane, w podanej kolejności.[Data urodzenia].tabela.kolumna) – to ta sama składnia w Accessie i w standardzie.Fragment tabeli oceny (tylko wpisy z informatyki):
| id | uczen_id | przedmiot | ocena | data |
|---|---|---|---|---|
| 1 | 1 | informatyka | 5 | 2026-02-10 |
| 3 | 2 | informatyka | 3 | 2026-02-10 |
| 5 | 3 | informatyka | 6 | 2026-02-10 |
| 8 | 5 | informatyka | 4 | 2026-02-10 |
Uzupełnij odpowiedzi na podstawie tabeli powyżej i pełnej tabeli oceny z sekcji Zapytanie (9 wierszy):
| Pytanie | Odpowiedź |
|---|---|
| Ile wierszy ma fragment tabeli powyżej (same wpisy z informatyki)? | |
Ile kolumn ma tabela oceny? | |
| Jaka ocena jest zapisana w wierszu o id równym 5? | |
| Które słowo kluczowe SQL wskazuje tabelę, z której pobierane są dane? | |
| Ile wierszy zwróci zapytanie z gwiazdką na pełnej tabeli oceny? | |
| Jak nazywa się kolumna łącząca tabelę oceny z tabelą uczniowie? | |
| Ile razy w wyniku pojawi się kolumna nazwisko, jeśli wypiszesz ją dwa razy po SELECT? | |
| W jakich nawiasach zapisuje się w Accessie nazwę kolumny ze spacją? |
Zapytanie SELECT tylko dane i niczego w bazie nie zmienia, dlatego można je uruchamiać bez obaw. Kolumnę poprzedzoną nazwą tabeli i kropką, np. uczniowie.nazwisko, nazywamy zapisem .
Nie – select zadziała tak samo. Zwyczajowo słowa kluczowe SQL zapisuje się wielkimi literami, żeby odróżniały się od nazw tabel i kolumn. Warto się tego trzymać, bo zapytanie staje się czytelniejsze, ale nie jest to wymóg składni.
Nie. Wynik SELECT to tabela wyliczona na tę jedną chwilę – powstaje przy uruchomieniu zapytania i znika po jego zamknięciu. Struktura bazy pozostaje nienaruszona.
Baza zgłasza taki błąd, gdy nazwa po SELECT nie pasuje do żadnej kolumny w tabeli wskazanej po FROM. Najczęściej to literówka, polski znak diakrytyczny w nazwie albo pomylenie tabel – kolumna istnieje, ale w innej.
Nie trzeba znać ich na pamięć, ale trzeba je mieć przed oczami – zadanie zawsze podaje strukturę tabeli. Gdy nie masz pewności, jakie kolumny w ogóle są w tabeli, SELECT * FROM nazwa_tabeli pokaże wszystkie naraz.
Dostaniesz ją dwa razy w wyniku, z takimi samymi wartościami w obu kolumnach. SELECT nie sprawdza, czy nazwa się powtarza – po prostu wykonuje listę tak, jak ją zapisano.
Nie. O kolejności kolumn w wyniku decyduje wyłącznie kolejność, w jakiej wypisałeś je po SELECT – to, w jakiej kolejności kolumny są fizycznie zapisane w tabeli, nie ma tu żadnego znaczenia.
Przy jednej tabeli rzeczywiście wystarczy sama nazwa. Zapis tabela.kolumna staje się potrzebny, gdy zapytanie łączy kilka tabel i te same nazwy kolumn występują w więcej niż jednej z nich – wtedy sama nazwa jest niejednoznaczna.
Te zadania CKE sprawdzają dokładnie to zagadnienie – link prowadzi wprost do treści podpunktu w arkuszu:
Zagadnienia z tego samego obszaru matury – warto je powtórzyć razem: