Pobieranie danych z tabeli zapytaniem SELECT – gwiazdka kontra jawna lista kolumn oraz wpływ kolejności kolumn na wynik.
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.
-- 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 |
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.
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.
Zagadnienia z tego samego obszaru matury – warto je powtórzyć razem: