MySQL – Praca na danych – filtrowanie
Poniższy artykuł to kontynuacja wpisu o operacjach wykonywanych na bazach danych, w pierwszej części opisaliśmy: podstawowe polecenia mysql , w dzisiejszy artykule opiszemy sposoby filtrowania danych w bazie.
Na początku przypomnijmy sobie strukturę naszej bazy danych, wyświetlmy znajdujące się w niej tabele:
show tables;
Aby wyświetlić zawartość tabel w konsoli wpiszemy polecenie:
select * from dzialy;
select * from pracownicy;
Pierwszym ćwiczeniem z jakim przyjdzie się nam zmierzyć to wyświetlenie z tabeli pracownicy wszystkich kobiet, warto zauważyć, że nie mamy pola płeć. Jak tego dokonać? W większości wszystkie imiona żeńskie kończą się na literę „a” .
Polecenie like
select imie, nazwisko from pracownicy where imie like ‚%a’;
Już tłumaczę co oznacza nasze zapytanie:
select imie, nazwisko – wyświetl imię nazwisko;
skąd wyciągamy? z tabeli pracownicy ;
where – warunek (i teraz jaki warunek? na pewno będziemy porównywać pole imie, where imie równa się? nie nie chcemy porównywać dokładnie imion ale chcemy je dopasować,
dopasowanie to właśnie like – czyli imie jest jak i tu podajemy wzorzec w naszym przypadku to dowolne litery (wieloznacznik) w mysql za tą wartość odpowiada znak procenta – zastępuje on dowolną liczbę liter. Procent odpowiada za dowolną liczbę liter jednak na końcu zawsze jest litera „a”.
Wykonanie powyższego zapytania zwróci nam następujący wynik:
Jeżeli chcielibyśmy wyciągnąć dane Pań których imię zaczyna się na „G” i kończy na „A” modyfikujemy zapytanie:
select imie, nazwisko from pracownicy where imie like ‚g%a’;
Between – polecenie służące do wyjmowania wyników z pomiędzy dwóch zakresów
Jako że wszystko najlepiej wytłumaczyć na przykładzie to: otrzymaliśmy zadanie wyselekcjonowania tych pracowników, którzy zarabiają pomiędzy 1600 a 3000 tysiące zł
Można to zrobić na dwa sposoby pierwszy:
select * from pracownicy where zarobki > 1500 and zarobki < 3000;
jednak prościej można to zapisać za pomocą polecenia between
select * from pracownicy where zarobki between 1600 and 3000;
Zapytanie zwróciło dokładnie taki sam wynik.
Skoro tak dobrze nam idzie, wykonajmy kolejny przykład
Szef podał nam numery ID 3 pracowników (powiedzmy:1, 4, 5 ) których dane mamy wyciągnąć z bazy, również to zadanie można wykonać na dwa sposoby:
select * from pracownicy where id=1 or id=4 or id=5;
select *from pracownicy where id in (1,4,5);
in możemy przetłumaczyć na: gdzie id zawiera się w (1, 4, 5)
Gdybyśmy mieli wyciągnąć przykładowo 100 takich osób musielibyśmy 100 razy powtórzyć warunek or, natomiast dzięki parametrowi in wypisalibyśmy tylko interesujące nas numery.
Gotowy plik do pobrania i zaimportowania bazy na którym wykonywaliśmy ćwiczenia znajduje się tutaj