Wszystkie zagadnienia: Bazy danych
podstawowy SQLSELECTmatura podstawowa z informatyki

SELECT – podstawowe zapytania SQL

Podstawy zapytania SELECT i FROM – gwiazdka kontra jawna lista kolumn, kolejność kolumn w wyniku oraz kwalifikacja tabela.kolumna.

01

Opis

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.

  • Gwiazdka do podglądu, lista do pracy. SELECT * sprawdza, co jest w tabeli; w gotowym rozwiązaniu wypisuj tylko te kolumny, o które prosi polecenie.
  • Kolejność po SELECT to kolejność w wyniku, nie kolejność zapisania kolumn w tabeli.
  • SELECT niczego nie zmienia w bazie – to jedyne polecenie, które można uruchamiać bez ryzyka.
  • Nazwa kolumny musi być dokładna – literówka albo zła tabela po FROM kończy się błędem, nie przybliżonym dopasowaniem.
02

Zapytanie

-- Gwiazdka: wszystkie kolumny tabeli. To jest pełna tabela `uczniowie`,
-- na której oparte są przykłady w całym dziale.
SELECT *
FROM uczniowie
Wynik zapytania
idimienazwiskoklasasredniadata_urpeselemail
1AnnaKowalska3A4.752007-03-1207231212345a.kowalska@example.com
2PiotrNowak3B3.202006-11-0506310512345
3MarekWiśniewski3A5.102007-01-2807212812345m.wisniewski@example.com
4JuliaZając3C3.902006-05-1906251912345
5KarolDąbrowski3B4.102007-08-3007283012345k.dabrowski@example.com
-- Jawna lista kolumn: węższy i czytelniejszy wynik
SELECT nazwisko, srednia
FROM uczniowie
Wynik zapytania
nazwiskosrednia
Kowalska4.75
Nowak3.20
Wiśniewski5.10
Zając3.90
Dąbrowski4.10
-- Kolejność kolumn w wyniku to kolejność z zapytania
SELECT klasa, nazwisko, imie
FROM uczniowie
Wynik zapytania
klasanazwiskoimie
3AKowalskaAnna
3BNowakPiotr
3AWiśniewskiMarek
3CZającJulia
3BDąbrowskiKarol
-- 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
Wynik zapytania
iduczen_idprzedmiotocenadata
11informatyka52026-02-10
21matematyka42026-02-14
32informatyka32026-02-10
42angielski42026-02-20
53informatyka62026-02-10
63matematyka52026-03-01
74informatyka32026-02-10
85informatyka42026-02-10
95angielski22026-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
Wynik zapytania
nazwiskonazwisko
KowalskaKowalska
NowakNowak
WiśniewskiWiśniewski
ZającZając
DąbrowskiDąbrowski
-- Przypadek brzegowy: literówka w nazwie kolumny. Baza zgłasza błąd
-- zamiast zwrócić przybliżony wynik.
SELECT nazwisk
FROM uczniowie
Wynik zapytania
Komunikat błędu
Nieprawidłowa nazwa pola „nazwisk" w wyrażeniu definiującym pole.
03

Dialekt

W AccessieStandardowy SQLZnaczenie
[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ę.
04

Typowe błędy

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.

05

Zapamiętaj

  • SELECT pobiera dane i niczego nie zmienia w bazie – można je uruchamiać bez ryzyka.
  • Gwiazdka * zwraca wszystkie kolumny tabeli; jawna lista zwraca tylko te wskazane, w podanej kolejności.
  • FROM jest obowiązkowe – bez wskazania tabeli SELECT nie zadziała.
  • Nazwę tabeli lub kolumny ze spacją w Accessie zapisuje się w nawiasach kwadratowych, np. [Data urodzenia].
  • Kolumnę można poprzedzić nazwą tabeli i kropką (tabela.kolumna) – to ta sama składnia w Accessie i w standardzie.
  • Zwykły SELECT nie usuwa duplikatów – ani powtórzonych kolumn, ani powtórzonych wierszy.
  • Nazwy kolumn muszą być dokładne – literówka kończy się błędem, nie przybliżonym wynikiem.
06

Sprawdź się

Fragment tabeli oceny (tylko wpisy z informatyki):

iduczen_idprzedmiotocenadata
11informatyka52026-02-10
32informatyka32026-02-10
53informatyka62026-02-10
85informatyka42026-02-10

Uzupełnij odpowiedzi na podstawie tabeli powyżej i pełnej tabeli oceny z sekcji Zapytanie (9 wierszy):

PytanieOdpowiedź
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 .

07

Najczęściej zadawane pytania

Czy SELECT trzeba pisać wielkimi literami?

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.

Czy wynik zapytania jest zapisywany w bazie?

Nie. Wynik SELECT to tabela wyliczona na tę jedną chwilę – powstaje przy uruchomieniu zapytania i znika po jego zamknięciu. Struktura bazy pozostaje nienaruszona.

Co znaczy, że kolumna nie istnieje?

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.

Czy trzeba znać nazwy wszystkich kolumn tabeli przed napisaniem zapytania?

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.

Co się stanie, jeśli w SELECT wypiszę tę samą kolumnę dwa razy?

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.

Czy kolejność zapisania kolumn w samej tabeli ma znaczenie dla wyniku SELECT?

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.

Po co pisać tabela.kolumna, skoro wystarczy sama nazwa kolumny?

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.

Przećwicz w zadaniach maturalnych

Te zadania CKE sprawdzają dokładnie to zagadnienie – link prowadzi wprost do treści podpunktu w arkuszu:

Więcej zadań: SQL

↗

Powiązane zagadnienia