CodeGym /Kursy /SQL SELF /Podstawowa składnia SELECT: struktura i komponenty zapyta...

Podstawowa składnia SELECT: struktura i komponenty zapytania

SQL SELF
Poziom 1 , Lekcja 4
Dostępny

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ą:

  1. Przetwarzana jest tabela w FROM: serwer znajduje wskazaną tabelę.
  2. Stosowane są warunki do wierszy (jeśli są): wybierane są tylko te wiersze, które spełniają warunki.
  3. 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.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION