Operacje na wybranych polach w MySQL'u
W tym artykule zostają przedstawione podstawowe sprawy dotyczące operacji na polach bazy danych MySQL. Jeśli jesteś więc początkującym to jest to artykuł dla Ciebie.
Pobieranie wartości wybranych pól
Aby pobrać wszystkie rekordy z tabeli należy wpisać:
mysql> SELECT * FROM tabela;
Jeżeli chcemy pobrać jakieś konkretne dane z tabeli wystarczy w miejsce "*" wstawić nazwe pola które nas interesuje. Na przykład jeżeli chcemy pobrać userid z tabeli "tabela" należy wpisać:
mysql> SELECT userid FROM tabela;
Możemy także pobrać kilka różnych pól z jednej tabeli. Na przykład:
mysql> SELECT userid, username FROM tabela;
Ograniczenie ilości zwracanych rekordów
Czasami potrzebujemy po prostu kilku konkretnych rekordów, które spełniają potrzebne nam warunki. W tym celu musimy ograniczyć w jakiś sposób zwracane rekordy. Osiągamy to po przez stosowanie klauzuli "LIMIT" i "WHERE". Najpierw pobierzmy 2 pierwsze wiersze z naszej tabeli rozpoczynając od indeksu 0.
mysql> SELECT * FROM tabela LIMIT 0, 2;
Warto zauważyć że podawanie indeksu 0 nie ma większego sensu ponieważ jeżeli go nie podamy domyślnie zakładane jest, że mają zostać wyświetlone 2 pierwsze wiersze poczynając właśnie od indeksu 0.
Stosowanie klauzuli "WHERE" jest bardzo przydatne, gdy chcemy pobrać tylko te rekordy które spełniają potrzebne nam warunki. Załóżmy, że nasza tabela przechowuje dane ludzi mieszkających w różnych krajach i chcemy z niej pobrać tylko imię i kraj ale tylko Polaków. W tym celu wpisujemy:
mysql> SELECT username, usercountry FROM tabela WHERE usercountry = 'Polska';
Przy stosowaniu klauzuli "WHERE" przyda nam się znajomość operatorów logicznych. Dla osób, które znają PHP lub inny język programowania te operatory nie będą obce (prócz różnicy przy znaku równości).
| Operator logiczny | Opis |
|---|---|
| = | równy |
| != lub <> | różny |
| < | mniejszy |
| > | większy |
| <= | mniejszy lub równy |
| >= | większy lub równy |
Istotną sprawą są tu pola których "wartości" wynoszą NULL. Otóż takowa "wartość" nie może być porównywana za pomocą operatorów "=" lub "!=". W takich przypadkach korzystamy z operatorów IS NULL i NOT NULL.
Pamiętajmy o tym, że nic nie stoi na przeszkodzie w łączeniu klauzuli WHERE i LIMIT. Ograniczmy do 2 ilość zwracanych wyników z imieniami Polaków:
mysql> SELECT username, usercountry FROM tabele
->WHERE usercountry = 'Polska' LIMIT 1;
Możemy także dodać klauzule AND oraz OR. Tu także nic nie stoi na przeszkodzie aby je łączyć:
mysql> SELECT username, usercountry FROM tabela WHERE (usercoutry = 'Polska'
->OR usercountry = 'Japonia')
->AND indeks < 5;
Zwracam uwagę na nawiasy. Otóż są one potrzebne aby klauzula AND nie była stosowana tylko do "usercountry = 'Japonia'".
Istotną sprawą jest także umiejętność odpowiedniego uporządkowania naszych wyników. Wykorzystujemy do tego klauzulę ORDER BY. Wygląda to tak:
mysql> SELECT usernumber, userid FROM tabela ORDER BY usernumber;
Ta linia kodu sprawi, wszystkie wyciągnięte rekordy zostaną nam uporządkowane pod względem pola "usernumber" w kolejności rosnącej. W rosnącej ponieważ "ORDER BY" domyślnie właśnie w ten sposób sortuje. Aby posortować rekordy malejąco musimy napisać:
mysql> SELECT usernumber, userid FROM tabela ORDER BY usernumber DESC;


