Wróć do: Bazy danych
podstawowy SQLSELECTmatura podstawowa z informatyki

SELECT – podstawowe zapytania SQL

Pobieranie danych z tabeli zapytaniem SELECT – gwiazdka kontra jawna lista kolumn oraz wpływ kolejności kolumn na wynik.

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.

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

Na maturze

Jeśli polecenie wymienia konkretne informacje („podaj nazwisko i średnią"), wypisz dokładnie te kolumny zamiast używać gwiazdki. SELECT * nie jest formalnie błędem, ale zwraca też kolumny, o które nikt nie prosił – a przy poleceniu wskazującym konkretne dane bywa to oceniane jako niepełne wykonanie zadania.

Uważaj na literówki w nazwach kolumn – to najczęstsza przyczyna błędu w tym najprostszym zapytaniu. Nazwy kolumn bierz z opisu struktury bazy dołączonego do arkusza, a nie z pamięci.

Zwróć też uwagę, że SELECT sam z siebie niczego nie zmienia w bazie – tylko odczytuje. Można je uruchamiać bez obaw, także po to, żeby sprawdzić, czy poprzedni krok zadania dał spodziewany wynik.

04

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.

Powiązane zagadnienia