Aby pobrać dane zapisane w tabeli należy użyć zapytania SELECT. Jego postać ogólna prezentuje się następująco:
SELECT co_zaprezentować FROM nazwa_tabeli [WHERE warunki_wyszukiwania] [ORDER BY sortowanie [ASC | DESC], ...] [LIMIT [ofset,] ilość_wierszy];
W miejscu co_zaprezentować podaj (po przecinku) listę kolumn, które chcesz zawrzeć w zestawieniu. W miejscu nazwa_tabeli podaj nazwę tabeli, z której pobierzesz dane. Wybierając trzy kolumny do zestawienia z tabeli pracownicy napiszesz następująco:
SELECT imie, nazwisko, placa FROM pracownicy;
Spowoduje to wyświetlenie wszystkich rekordów, jednak w zestawieniu zostaną zaprezentowane jedynie wartości trzech pól: imie, nazwisko i placa:
+------------+--------------+---------+ | imie | nazwisko | placa | +------------+--------------+---------+ | Jan | Kowalski | 1200.00 | | Izabela | Kwiatkowska | NULL | | Aleksander | Borowiecki | 1500.34 | | Aniela | Michałkowska | 854.29 | | Katarzyna | Kowalska | 1200.00 | +------------+--------------+---------+
Aby w zestawieniu umieścić wszystkie pola można użyć w miejscu co_zaprezentować znaku '*’ (gwiazdki):
SELECT * FROM pracownicy;
Zostaną wówczas wyświetlone wszystkie rekordy znajdujące się w tabeli:
+------------+--------------+----------------+---------+ | imie | nazwisko | data_urodzenia | placa | +------------+--------------+----------------+---------+ | Jan | Kowalski | 2002-07-20 | 1200.00 | | Izabela | Kwiatkowska | NULL | NULL | | Aleksander | Borowiecki | 1952-08-06 | 1500.34 | | Aniela | Michałkowska | 1970-05-23 | 854.29 | | Katarzyna | Kowalska | 2002-07-02 | 1200.00 | +------------+--------------+----------------+---------+
Dzięki klauzuli WHERE jesteś w stanie wpłynąć na zakres prezentowanych danych. Dzięki niej możesz dokładnie definiować co chcesz uzyskać swoim zapytaniem. Specyfikując dokładne warunki wyszukiwania można z tabeli zawierającej setki tysięcy rekordów wybrać tylko kilka interesujących w danym momencie informacji.
Stosując operatory przyrównania możesz dokładnie określić, jakie informacje chcesz pobrać. Dozwolone w MySQL operatory przyrównania to:
= | równe |
> | większe |
>= | większe równe |
< | mniejsze |
<= | mniejsze równe |
<> lub != | różne |
LIKE | służy głównie do porównywania danych łańcuchowych |
Przykłady zastosowania:
SELECT * FROM pracownicy WHERE placa >= 1000;
Spowoduje wyświetlenie listy pracowników, których płaca jest większa lub równa 1000:
+------------+------------+----------------+---------+ | imie | nazwisko | data_urodzenia | placa | +------------+------------+----------------+---------+ | Jan | Kowalski | 2002-07-20 | 1200.00 | | Aleksander | Borowiecki | 1952-08-06 | 1500.34 | +------------+------------+----------------+---------+
SELECT imie, nazwisko, placa FROM pracownicy WHERE nazwisko = 'Kowalski';
Spowoduje wyświetlenie danych (tylko imię, nazwisko i placa) wszystkich pracowników, których nazwisko brzmi dokładnie Kowalski:
+------+----------+--------------------+ | imie | nazwisko | placa | +------+----------+--------------------+ | Jan | Kowalski | 1200.00 | +------+----------+--------------------+
SELECT * FROM pracownicy WHERE nazwisko LIKE 'K%';
Spowoduje wyświetlenie wszystkich pracowników, których nazwisko rozpoczyna się na literę 'K’:
+-----------+-------------+----------------+--------------------+---------+ | imie | nazwisko | data_urodzenia | adres | placa | +-----------+-------------+----------------+--------------------+---------+ | Jan | Kowalski | 2002-07-20 | Kwiatowa 8, Poznań | 1200.00 | | Izabela | Kwiatkowska | NULL | NULL | NULL | | Katarzyna | Kowalska | 2002-07-02 | NULL | 1200.00 | +-----------+-------------+----------------+--------------------+---------+
Dzięki zastosowaniu znaków globalnych (% i _) istnieje możliwość przyrównania do dowolnego ciągu znaków. Znak '%’ (procent) zastępuje dowolną ilość znaków. Znak '_’ (podkreślenie) zastępuje dokładnie jeden znak. Zapytanie:
SELECT imie, nazwisko FROM pracownicy WHERE nazwisko LIKE 'Kowalsk_';
spowoduje wyświetlenie wszystkich pracowników, których nazwisko zaczyna się ciągiem znaków 'Kowalsk’ i zaraz po nim występuje jeden dowolny znak:
+-----------+----------+ | imie | nazwisko | +-----------+----------+ | Jan | Kowalski | | Katarzyna | Kowalska | +-----------+----------+
Warunki wyboru podawane za WHERE można łączyć ze sobą stosując operatory AND oraz OR. Dzięki temu istnieje możliwość zbudowania zapytania bardziej złożonego, a co za tym idzie bardziej dokładnego.
W momencie zastosowania operatora AND wszystkie połączone tak warunki muszą zostać spełnione, aby w wyniku pojawił się dany rekord. Jeśli zastosujesz do połączenia warunków operator OR – wówczas może zostać spełniony tylko jeden z warunków wchodzących w skład zapytania. Wydając zapytanie:
SELECT * FROM pracownicy WHERE (placa > 500 AND placa < 1000) OR nazwisko = 'Kowalski';
spowodujesz wyświetlenie w wyniku wszystkich pracowników, których płaca mieści się w zakresie 500-1000 oraz pracowników o nazwisku 'Kowalski’:
+--------+--------------+----------------+---------+ | imie | nazwisko | data_urodzenia | placa | +--------+--------------+----------------+---------+ | Jan | Kowalski | 2002-07-20 | 1200.00 | | Aniela | Michałkowska | 1970-05-23 | 854.29 | +--------+--------------+----------------+---------+
Dane w tabeli mogą być przechowywane w dowolnej kolejności. Możesz jednak spowodować ich pobranie w ściśle określonym porządku. Kolumny, według których MySQL ma posortować dane podaje się po klauzuli ORDER BY oddzielone przecinkami. Chcąc więc uszeregować listę pracowników rosnąco według nazwiska i malejąco według płacy wpiszesz następujące polecenie:
SELECT * FROM pracownicy ORDER BY nazwisko ASC, placa DESC;
ASC oznacza sortowanie rosnąco według podanego pola, DESC natomiast oznacza sortowanie malejące:
+------------+--------------+----------------+---------+ | imie | nazwisko | data_urodzenia | placa | +------------+--------------+----------------+---------+ | Aleksander | Borowiecki | 1952-08-06 | 1500.34 | | Katarzyna | Kowalska | 2002-07-02 | 1200.00 | | Jan | Kowalski | 2002-07-20 | 1200.00 | | Izabela | Kwiatkowska | NULL | NULL | | Aniela | Michałkowska | 1970-05-23 | 854.29 | +------------+--------------+----------------+---------+
Używając klauzuli LIMIT spowodujesz wyświetlenie jedynie części rekordów. Aby pobrać dwa pierwsze rekordy napisz:
SELECT * FROM pracownicy LIMIT 2;
W wyniku otrzymasz:
+---------+-------------+----------------+---------+ | imie | nazwisko | data_urodzenia | placa | +---------+-------------+----------------+---------+ | Jan | Kowalski | 2002-07-20 | 1200.00 | | Izabela | Kwiatkowska | NULL | NULL | +---------+-------------+----------------+---------+
Wypełniając pole ofset wyświetlisz podaną ilość rekordów od pewnego miejsca w tabeli. Chcąc pobrać rekordy od 3 do 7 napisz następująco:
SELECT * FROM pracownicy LIMIT 2, 5;
Spowoduje to wyświetlenie pięciu rekordów (o ile tyle istnieje w bazie) poczynając od rekordu trzeciego:
+------------+--------------+----------------+---------+ | imie | nazwisko | data_urodzenia | placa | +------------+--------------+----------------+---------+ | Aleksander | Borowiecki | 1952-08-06 | 1500.34 | | Aniela | Michałkowska | 1970-05-23 | 854.29 | | Katarzyna | Kowalska | 2002-07-02 | 1200.00 | +------------+--------------+----------------+---------+
MySQL pozwala na połączenie ze sobą wielu opcji, dzięki którym można bardzo dokładnie zawęzić poszukiwaną ilość informacji. Przykład bardziej złożonego zapytania można przedstawić następująco:
SELECT imie, nazwisko, placa FROM pracownicy WHERE placa >= 500 AND placa < 1200 ORDER BY nazwisko LIMIT 5;
Powyższe zapytanie spowoduje wygenerowanie następującego zestawienia:
+--------+--------------+--------+ | imie | nazwisko | placa | +--------+--------------+--------+ | Aniela | Michałkowska | 854.29 | +--------+--------------+--------+
Jak widać połączono w tym momencie warunek wyboru według płacy pomiędzy 500 a 1200 z sortowaniem danych według nazwiska i ograniczeniem wyniku tylko do pięciu pierwszych rekordów.
Hosting stworzony dla WordPressa
Masz stronę WWW na WordPressie? My też uwielbiamy ten system dla stron internetowych. Dlatego stworzyliśmy hosting specjalnie dla jego użytkowników.