SQL: Wyszukiwanie danych | SELECT
Baza danych do pobrania: rezerwacje_lotnicze
Składnia polecenia SELECT
SELECT kolunma1, kolumna2 FROM nazwa_tabeli;
Rozpocznijmy od najprostszego zapytania: Wypisz wszystko z tabeli pasażer.
SELECT * FROM pasazer;
+----+----------+-----------+--------------+-------------+----------------------------------+----------+ | id | imie | nazwisko | pesel | telefon | mail | adres_id | +----+----------+-----------+--------------+-------------+----------------------------------+----------+ | 1 | Jan | Kowalski | 66110012121 | 66677712345 | jank@ilovetechnikinformatyk.pl | 1 | | 2 | Jan | Nowak | 86110045455 | 12312312312 | jann@ilovetechnikinformatyk.pl | 2 | | 3 | Tadeusz | Nowak | 46120023232 | 45678901332 | tadzio@ilovetechnikinformatyk.pl | 3 | | 4 | Zdzisław | Konopka | 7602334213 | 3424325434 | zdzichu@ilovethissite.pl | 1 | | 5 | Wiesława | Zzagrobna | 201005123456 | 123456123 | podziemie@thissiteisamazing.pl | 1 | +----+----------+-----------+--------------+-------------+----------------------------------+----------+
Zapytania SQL składamy podobnie jak zdania w języku polskim, warto, żeby trzymały szyk.
SELECT (wybierz) * (wszystko) FROM (z tabeli) pasazer
Aby wypisać np. same imiona i nazwiska pasażerów, w miejscu * znalazłoby się: imię, nazwisko, a całe zapytanie wyglądałoby następująco:
SELECT imie, nazwisko FROM pasazer;
WHERE
Składnia:
SELECT kolumna1, kolumna2... FROM nazwa_tabeli WHERE warunki;
Aby uściślić w jakiś sposób nasze wyszukiwanie użyjemy klauzuli WHERE. Służy ona do dodania do naszego zapytania dodatkowych warunków.
Wracając do pierwszego zapytania, wypiszmy na ekran wszystkie dane z tabeli pasazer, gdzie (WHERE) pole adres_id jest równe 1
SELECT * FROM pasazer WHERE adres_id = 1;
+----+----------+-----------+--------------+-------------+--------------------------------+----------+ | id | imie | nazwisko | pesel | telefon | mail | adres_id | +----+----------+-----------+--------------+-------------+--------------------------------+----------+ | 1 | Jan | Kowalski | 66110012121 | 66677712345 | jank@ilovetechnikinformatyk.pl | 1 | | 4 | Zdzisław | Konopka | 7602334213 | 3424325434 | zdzichu@ilovethissite.pl | 1 | | 5 | Wiesława | Zzagrobna | 201005123456 | 123456123 | podziemie@thissiteisamazing.pl | 1 | +----+----------+-----------+--------------+-------------+--------------------------------+----------+
Wypisane zostały wszystkie rekordy tabeli pasazer zawierające w kolumnie adres_id wartość 1.
Analogicznie można wypisać dane z wykorzystaniem w warunku znaków mniejszości czy większości.
SELECT * FROM pasazer WHERE id >=3;
+----+----------+-----------+--------------+-------------+----------------------------------+----------+ | id | imie | nazwisko | pesel | telefon | mail | adres_id | +----+----------+-----------+--------------+-------------+----------------------------------+----------+ | 3 | Tadeusz | Nowak | 46120023232 | 45678901332 | tadzio@ilovetechnikinformatyk.pl | 3 | | 4 | Zdzisław | Konopka | 7602334213 | 3424325434 | zdzichu@ilovethissite.pl | 1 | | 5 | Wiesława | Zzagrobna | 201005123456 | 123456123 | podziemie@thissiteisamazing.pl | 1 | +----+----------+-----------+--------------+-------------+----------------------------------+----------+
Warunek może również zawierać znak różne od <>.
SELECT * FROM pasazer WHERE id <> 3;
+----+----------+-----------+--------------+-------------+--------------------------------+----------+ | id | imie | nazwisko | pesel | telefon | mail | adres_id | +----+----------+-----------+--------------+-------------+--------------------------------+----------+ | 1 | Jan | Kowalski | 66110012121 | 66677712345 | jank@ilovetechnikinformatyk.pl | 1 | | 2 | Jan | Nowak | 86110045455 | 12312312312 | jann@ilovetechnikinformatyk.pl | 2 | | 4 | Zdzisław | Konopka | 7602334213 | 3424325434 | zdzichu@ilovethissite.pl | 1 | | 5 | Wiesława | Zzagrobna | 201005123456 | 123456123 | podziemie@thissiteisamazing.pl | 1 | +----+----------+-----------+--------------+-------------+--------------------------------+----------+
LIMIT
SELECT * FROM pasazer ORDER by id DESC LIMIT 1;
+----+----------+-----------+--------------+-----------+--------------------------------+----------+ | id | imie | nazwisko | pesel | telefon | mail | adres_id | +----+----------+-----------+--------------+-----------+--------------------------------+----------+ | 5 | Wiesława | Zzagrobna | 201005123456 | 123456123 | podziemie@thissiteisamazing.pl | 1 | +----+----------+-----------+--------------+-----------+--------------------------------+----------+
AND, OR
SELECT * FROM pasazer WHERE imie LIKE "J%" AND nazwisko LIKE "K%";
+----+------+----------+-------------+-------------+--------------------------------+----------+ | id | imie | nazwisko | pesel | telefon | mail | adres_id | +----+------+----------+-------------+-------------+--------------------------------+----------+ | 1 | Jan | Kowalski | 66110012121 | 66677712345 | jank@ilovetechnikinformatyk.pl | 1 | +----+------+----------+-------------+-------------+--------------------------------+----------+
SELECT * FROM pasazer WHERE imie LIKE "J%" OR nazwisko LIKE "K%";
+----+----------+----------+-------------+-------------+--------------------------------+----------+ | id | imie | nazwisko | pesel | telefon | mail | adres_id | +----+----------+----------+-------------+-------------+--------------------------------+----------+ | 1 | Jan | Kowalski | 66110012121 | 66677712345 | jank@ilovetechnikinformatyk.pl | 1 | | 2 | Jan | Nowak | 86110045455 | 12312312312 | jann@ilovetechnikinformatyk.pl | 2 | | 4 | Zdzisław | Konopka | 7602334213 | 3424325434 | zdzichu@ilovethissite.pl | 1 | +----+----------+----------+-------------+-------------+--------------------------------+----------+
SELECT * FROM pasazer WHERE imie LIKE "J%" AND ( nazwisko LIKE "K%" OR nazwisko LIKE "N%" );
+----+------+----------+-------------+-------------+--------------------------------+----------+ | id | imie | nazwisko | pesel | telefon | mail | adres_id | +----+------+----------+-------------+-------------+--------------------------------+----------+ | 1 | Jan | Kowalski | 66110012121 | 66677712345 | jank@ilovetechnikinformatyk.pl | 1 | | 2 | Jan | Nowak | 86110045455 | 12312312312 | jann@ilovetechnikinformatyk.pl | 2 | +----+------+----------+-------------+-------------+--------------------------------+----------+