No to lecimy, już zaczęliśmy ogarniać SELECT, czyli komendę SQL służącą do wyciągania danych z tabeli albo kilku tabel w bazie danych. Można powiedzieć, że to taki F5 w przeglądarce dla bazy danych: "pokaż mi, co tam masz". Prosta struktura zapytania wygląda tak:
SELECT kolumna1, kolumna2, … kolumnaN
FROM tabela
Gdzie:
SELECT— to słowo kluczowe, od którego zaczyna się zapytanie.kolumna1, kolumna2, ...— to lista kolumn, z których chcesz pobrać dane.FROM tabela— wskazuje tabelę, z której wyciągane są dane.
Rozbijmy to od razu na części z przykładami!
Podstawowa struktura komendy SELECT
Wybieranie wszystkich kolumn. Jeśli chcesz zobaczyć wszystkie dane z tabeli, możesz użyć gwiazdki *. Załóżmy, że mamy tabelę students:
| id | name | age | grade |
|---|---|---|---|
| 1 | Alex | 17 | A |
| 2 | Maria | 19 | B |
| 3 | Otto | 21 | C |
Żeby wyciągnąć wszystkie dane z tej tabeli, użyj takiego zapytania:
SELECT * FROM students
I wynikiem będzie taki zestaw kolumn i wierszy:
| id | name | age | grade |
|---|---|---|---|
| 1 | Alex | 17 | A |
| 2 | Maria | 19 | B |
| 3 | Otto | 21 | C |
Czyli — cała tabela, jak zamawiałeś.
Wybieranie konkretnych kolumn
Oczywiście najczęściej chcesz wybrać tylko te kolumny, które są ci potrzebne, żeby nie ciągnąć niepotrzebnych danych. Na przykład chcesz poznać imiona i wiek studentów. Wtedy piszesz takie zapytanie:
SELECT name, age FROM students
Wynik wykonania zapytania będzie taki:
| name | age |
|---|---|
| Alex | 17 |
| Maria | 19 |
| Otto | 21 |
Widzisz różnicę? Jak wybierasz tylko potrzebne kolumny, zapytanie jest szybsze i ładniejsze.
Kolejność wykonywania zapytania
Zapytania SQL to trochę podchwytliwa sprawa: chociaż piszemy SELECT na początku, to tak naprawdę najpierw przetwarzana jest część FROM, a dopiero potem zwracany jest wynik. Tak to wygląda pod maską:
- Przetwarzana jest tabela w
FROM: serwer znajduje wskazaną tabelę. - Stosowane są warunki do wierszy (jeśli są): wybierane są tylko te wiersze, które spełniają warunki.
- Wybierane są wskazane kolumny: z pozostałych wierszy wyciągane są potrzebne dane.
Czyli w takim poleceniu:
SELECT name FROM students
Najpierw serwer znajdzie tabelę students, potem przeczyta kolumnę name, i dopiero wtedy zwróci wynik.
Praktyczne przykłady
Przykład nr 1: Lista studentów.
Wyobraź sobie, że jesteś administratorem uniwersytetu i potrzebujesz imion wszystkich studentów. Zapytanie:
SELECT name
FROM students;
Wynik:
| name |
|---|
| Alex |
| Maria |
| Otto |
Przykład nr 2: Dodajemy wiek i id.
Teraz potrzebujesz id, imion i wieku. Po prostu dodaj jeszcze parę kolumn:
SELECT name, age, id
FROM students;
Wynik:
| name | age | id |
|---|---|---|
| Alex | 17 | 1 |
| Maria | 19 | 2 |
| Otto | 21 | 3 |
Przykład nr 3: Dodajemy wyrażenia.
Załóżmy, że chcesz wiedzieć, ile lat zostało twoim studentom do pełnoletności.
Wtedy zamiast age wpisz 21-age. Tu dla przykładu przyjmujemy, że pełnoletność jest w wieku 21 lat:
SELECT name, 21-age
FROM students;
I taki będzie wynik:
| name | 21-age |
|---|---|
| Alex | 4 |
| Maria | 2 |
| Otto | 0 |
Więcej o wyrażeniach dowiesz się w kolejnych wykładach. A teraz zobaczmy błędy, z którymi pewnie już się spotkałeś.
Typowe błędy przy używaniu SELECT
Literówki w nazwach tabel i kolumn.
Jeden z najczęstszych błędów — kiedy nazwa tabeli albo kolumny jest wpisana z błędem.
Jeśli w bazie nie ma tabeli studentsz, dostaniesz błąd:
SELECT name
FROM studentsz; -- Błąd: nie ma takiej tabeli!
Albo jeśli kolumna nazywa się name, a wpiszesz student_name, znowu błąd:
SELECT student_name -- Błąd: nie ma takiej kolumny!
FROM students;
Rozwiązanie jest proste: zawsze sprawdzaj nazwy tabel i kolumn.
Błędy składniowe w zapytaniu.
Kolejny częsty błąd — zapomniałeś przecinka, kiedy wypisywałeś kolumny:
SELECT name age id -- Błąd: brak przecinka!
FROM students;
Ale nie ma co się stresować. Zapytanie SELECT tylko wybiera dane. Każdy błąd w takim zapytaniu nie jest w stanie uszkodzić danych w twojej bazie. Ale jak dojdziemy do zapytań, które zmieniają dane — wtedy błędy mogą być dużo bardziej kosztowne.
Używanie * zamiast konkretnych kolumn.
Kiedy używasz *, wyciągasz WSZYSTKIE dane, także te niepotrzebne. To obniża wydajność i może być problematyczne przy dużych tabelach. Zawsze wybieraj tylko te kolumny, które naprawdę są ci potrzebne.
GO TO FULL VERSION