Mamy zainstalowaną bazę danych MySQL u siebie. Mamy stworzoną bazę oraz tabele. Jesteśmy w stanie modyfikować owe tabele, tworzyć nowe oraz relacje między nimi. Za pomocą zapytania „insert” dodajemy treści do naszej bazy, natomiast nie jesteśmy w stanie ich ciągle odczytać. To zmieni się za chwilę.
Do wyciągania danych z bazy służy zapytanie „select„, ale po kolei.
Sprawdźmy jakie mamy bazy danych:
show databases;
Zobaczymy kolumnę z listą baz danych oczywiście, możemy teraz zacząć korzystać z jednej z nich wpisując:
use {nazwa_bazy};
Teraz możemy zobaczyć jakie mamy tabele:
show tables;
games |
offers |
users |
Zapytanie select
Możemy teraz wyciągnąć informacje zawarte w jednej z tych kolumn za pomocą zapytania „select„.
SELECT * FROM `games`;
Rozbijmy powyższe zapytanie na części:
- SELECT = pobierz
- * = wszystko
- FROM = z
- `games` = tabelki o nazwie 'games’
Efekt zapytania to oczywiście wyświetlenie wszystkich danych z tabeli „games„:
id | title |
1 | game1 |
2 | game2 |
3 | game3 |
Taki sam efekt osiągniemy jeśli wpiszemy np:
SELECT id, title FROM `baza`.`games`;
Jedna z różnic jakie wprowadza powyższy zapis to deklaracja nie tylko tabeli z której pragniemy pobrać dane, ale również nazwa bazy, możemy się więc śmiało domyśleć że zastępuje nam to użycie zapytania poprzedzającego „select„, czyli „use {nazwa_bazy}„.
Kolejną różnicą jest zastąpienie gwiazdki nazwami kolumn oddzielonych przecinkiem. Domyśleć się możemy, że dzięki takiemu zapisowi możemy zdecydować jakie kolumny nas interesują, nie musimy bowiem pobierać wszystkich, a jedynie wybrane kolumny.
Poniżej przedstawię to samo zapytanie, ale kolejny raz zmodyfikowane:
SELECT title as "nazwa gry" FROM `games`;
Przypuśćmy, że słowo „title” nie wiele mi mówi, wolał bym „nazwa gry” oraz kolumna „id” jest mi zbędna, problem ten rozwiązałem powyższym zapytaniem. Nie modyfikuje ono nazwy kolumny w bazie (nie jest to „alter table„) a jedynie modyfikuje wyświetlenie kolumny po pobraniu danych.
nazwa gry |
game1 |
game2 |
game3 |
Nie jest łatwo, wprowadzam kolejne modyfikacje:
SELECT `games`.`title` as "nazwa gry" FROM `games`;
Zmiana polega na tym, że informuję bazę danych o którą kolumnę o nazwie „title” mi chodzi. Jaki jest tego sens ? Przecież w tabeli „games” mamy tylko jedną taką kolumnę i co więcej, nie możemy mieć drugiej o takiej samej nazwie.
Ma to sens w momencie gdy pobieramy dane z wielu tabel przy użyciu oczywiście jednego zapytania. W przypadku pobierania danych z wielu tabel, może nastąpić konflikt nazw kolumn, w takich przypadkach przy pomocy powyższego zapisu informujemy bazę, że pod nazwą „nazwa gry” chcemy wartość która jest w tabeli „games” i kolumnie „title„.