Pobieranie danych z tabeli

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, nazwiskoplaca:

+------------+--------------+---------+
| 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.

WAŻNE! Klauzulę WHERE stosuje się najczęściej w poleceniu SELECT. Ma ona jednak zastosowanie także w innych poleceniach operujących na danych takich jak UPDATE, DELETE itp.

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.

  • Czy artykuł był pomocny ?
  • Tak   Nie

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.