Kurs MySQL cz.I
[ Podstawy MySQL'a (cz. 1) ]
WstΩp
MySQL jest chyba jednym z najpopularniejszych interface'≤w jΩzyka
SQL (Structured Query Language), charakteryzuje siΩ ogromn▒
elastyczno╢ci▒, jeszcze wiΩksz▒ prΩdko╢ci▒ i co najwa┐niejsze jest bardzo
│atwy w obs│udze.
Instalacja ( pod Win32 )
Instalacja nie sprawi najmniejszych problem≤w nawet 'zielonym' -
wystarczy otworzyµ zwyk│ym edytorem tekstu plik php3.ini (lub php.ini - w
zale┐no╢ci od wersji PHP), nastΩpnie znale╝µ linijkΩ
;extension=php3_mysql.dll i usun▒µ ╢rednik, kt≤ry znajduje siΩ na
pocz▒tku linii. W ten spos≤b bΩdziemy mogli korzystaµ z dobrodziejstw
MySQL'a na serwerze Apache.
Zapytania
Aby wykonaµ cokolwiek w swojej bazie nale┐y wys│aµ do niej
informacje, wszystkie informacje wysy│ane s▒ do bazy danych w postaci
zapyta±, do czego s│u┐y funkcja mysql_query(zapytanie). Wszystkie
zapytania wysy│amy w nastΩpuj▒cy spos≤b:
$zaptanie="twoje zapytanie"; $wykonaj=mysql_query($zapytanie);
Po takiej operacji zmienna $wykonaj bΩdzie zawieraµ warto╢µ TRUE,
je╢li operacja powiedzie siΩ, je╢li nie - zwr≤ci warto╢µ FALSE.
ú▒czymy siΩ z baz▒ danych
Aby po│▒czyµ siΩ z baz▒ danych u┐ywamy komendy:
mysql_connect (nazwa_hosta[:port] [, u┐ytkownik] [,has│o]);
W praktyce oznacza to, ┐e wymagana jest nazwa hosta - nastΩpnie
opcjonalnie mo┐emy wpisaµ nazwΩ u┐ytkownika oraz jego has│o. Je╢li nie
podamy nazwy hosta automatycznie nast▒pi pr≤ba po│▒czenia siΩ z
localhostem. Je╢li zabraknie nazwy u┐ytkownika automatycznie zostaniemy
zalogowani jako w│a╢ciciel procesu baz danych, przewa┐nie w│a╢ciciel nie
ma ustawionego has│a, wiΩc trzeci parametr nie jest wymagany. Poni┐szy
przyk│ad pokazuje jak po│▒czyµ siΩ z serwerem mojserwer.pl jako u┐ytkownik
foo, z has│em off:
$sql = mysql_connect (mojserwer.pl, foo, off);
Funkcja mysql_connect zwr≤ci warto╢µ TRUE, je╢li zako±czy
siΩ sukcesem, je╢li nie powiedzie siΩ - zwr≤ci warto╢µ FALSE.
Je╢li zako±czy│e╢ ju┐ operacje w swojej bazie nale┐y siΩ
roz│▒czyµ, co robi siΩ funkcj▒ mysql_close(id_po│▒czenia). Aby
zako±czyµ po│▒czenie, kt≤re zaprezentowa│em powy┐ej nale┐a│oby zastosowaµ
komendΩ 'mysql_close' w nastΩpuj▒cy spos≤b:
mysql_close($sql);
Tworzenie nowej bazy oraz jej wybieranie
Do stworzenia nowej bazy u┐ywamy komendy
mysql_create_db(nazwa) np.:
mysql_create_db("zawodnicy");
Samo stworzenie bazy nie oznacza, ┐e w│a╢nie na niej bΩdziemy
wykonywaµ operacje, dlatego musimy j▒ wybraµ, co robimy komend▒
mysql_select_db(nazwa) np.:
mysql_select_db("zawodnicy");
Od tej pory mo┐na ju┐ wykonywaµ r≤┐ne operacje w bazie
'zawodnicy'.
Zagadnienia SQL
BazΩ danych mo┐emy stworzyµ tak┐e za pomoc▒ wyra┐e± SQL w formie
zapytania:
$zapytanie="CREATE DATABASE zawodnicy"; $wykonaj =
mysql_query($zaptanie);
Gdy nasza baza jest ju┐ utworzona mo┐emy zacz▒µ wprowadzaµ dane,
najpierw jednak trzeba utworzyµ tabelΩ, robimy to wg nastΩpuj▒cego
schematu sk│adni SQL:
CREATE TABLE nazwa_tabeli (nazwa1 typ1, nazwa2 typ2, PRIMARY
KEY(nazwa_x))
Postarajmy siΩ stworzyµ tabelΩ wed│ug danego schematu:
$zapytanie = "CREATE TABLE nba (id char(3) NOT NULL, imie
char(30), lata char(3), punkty char(3), mistrzostwa char(3), PRIMARY
KEY(id))";
Rozpatrzmy powy┐szy przyk│ad: klucz oznaczony jako PRIMARY KEY
oznacza, ┐e klucz ten jest kluczem g│≤wnym, a klucz g│≤wny nie mo┐e siΩ
powtarzaµ - w przypadku gdyby klucz g│≤wny siΩ powt≤rzy│ po prostu rekord
nie zostanie dodany do tabeli, klucz oznaczony jako NOT NULL nie mo┐e byµ
pusty.
DostΩpnych jest kilka typ≤w p≤l, niekt≤re z nich przedstawiam
poni┐ej:
char(x) - ci▒g znak≤w o maksymalnej d│ugo╢ci x, gdzie x nie
mo┐e byµ wiΩkszy od 255, blob - ci▒g znak≤w o d│ugo╢ci
ograniczonej przez twoj▒ pamiΩµ, integer - liczba ca│kowita z
zakresu od do , data - data w formacie DBMS (uwaga format
odwrotny do normalnego: YYYY-MM-DD), year - rok, je╢li zostanie
podany z│y, jego warto╢µ zmieni siΩ w 0000, decimal(x, y) -
liczba dziesiΩtna, gdzie x oznacza maksymaln▒ liczbΩ cyfr, a y maksymaln▒
liczbΩ cyfr po przecinku.
Mamy ju┐ stworzon▒ tabelΩ, teraz trzeba co╢ do niej dodaµ, robimy
to wg nastΩpuj▒cego schematu:
INSERT INTO nazwa_tabeli VALUES (wartosc_pola1, wartosc_pola2,
wartosc_pola3...)
Nie zawsze musimy wype│niaµ wszystkich p≤l, a robi siΩ to w
nastΩpuj▒cy spos≤b:
INSERT INTO nazwa_tabeli (nazwa_pola1, nazwa_pola2) VALUES
(wartosc_pola1, wartosc_pola2)
Teraz pora na przyk│ad, za│≤┐my, ┐e chcemy dodaµ do naszej tabeli
nowego zawodnika, operacja ta wygl▒da tak:
$zapytanie = "INSERT INTO nba VALUES(Jordan, 13, 32, 6)";
Po wykonaniu takiej operacji tabela 'nba' bΩdzie ju┐ zawieraµ
jednen rekord. Teraz kolejno mo┐emy dodawaµ w ten sam spos≤b kolejne
rekordy.
Je╢li chcemy przeszukaµ nasz▒ tabelΩ w poszukiwaniu jakiego╢
konkretnego rekordu robimy to za pomoc▒ komendy SELECT wg schematu:
SELECT nazwa_pola FROM nazwa_tabeli WHERE warunek
Oczywi╢cie nazw p≤l mo┐emy podaµ kilka, lub wszystkie - jednak
zamiast tego po prostu wstawiamy znak gwiazdki (SELECT * FROM itd.),
warunek mo┐e byµ bardzo z│o┐ony, ale to jest temat na kolejny artyku│.
Za│≤┐my, ┐e chcemy przeszukaµ nasz▒ tabelΩ w poszukiwaniu zawodnika o
nazwisku 'Pipen' robimy to w nastΩpuj▒cy spos≤b:
$zapytanie = "SELECT imie FROM nba WHERE imie='Pipen'";
Funkcja zwr≤ci warto╢µ TRUE je╢li znajdzie w naszej tabeli Pipena,
je╢li nie - FALSE. PamiΩtaj jednak, ┐e rozr≤┐niane s▒ wielkie i ma│e
litery, dlatego 'Pipen' to nie to samo co 'pipen' czy 'PIPEN'...
Je╢li jaki╢ rekord jest ju┐ nie aktualny, lub po prostu ╝le
wpisali╢my dane, nale┐a│oby go zaktualizowaµ, do czego s│u┐y komenda
UPDATE:
UPDATE nazwa_tabeli SET wartosc_pola WHERE warunek
Powiedz my, ┐e chcemy zmieniµ w naszej tabeli ile lat gra│ Jordan,
robimy to tak:
$zapytanie = "UPDATE nba SET lata=15 WHERE imie='Jordan'";
Teraz Jordan gra│ ju┐ 15, a nie tak jak wcze╢niej 13 lat. Je╢li
jakie╢ dane z danej tabeli ju┐ nas nie interesuj▒ pozbywamy siΩ ich
komend▒ DELETE:
DELETE FROM nazwa_tabeli [WHERE warunek]
W powy┐szym przyk│adzie warunek wzi▒│em w nawias, poniewa┐ je╢li
nie podamy warunku z tabeli zostan▒ wymazane wszystkie rekordy. W praktyce
kasowanie prezentuje siΩ nastΩpuj▒co:
$zapytanie = "DELETE FROM nba WHERE imie=Jordan";
Od tej chwili Jordana ju┐ nie ma w naszej tabeli zawodnik≤w nba.
Jak wy╢wietliµ wyniki przeszukiwania tabeli?
Skoro poznali╢cie ju┐ podstawowe zagadnienia SQL'a to mo┐emy
przej╢µ do bardziej zaawansowanych struktur - wy╢wietlanie wynik≤w
przeszukiwania tabeli. Wszystko odbywa siΩ wg poni┐szego schematu:
$zapytanie = "SELECT * FROM nazwa_tabeli"; $wykonaj =
mysql_query($zaptanie); while($wiersz =
mysql_fetch_array($wykonaj)) { print "Pole
pierwsze".$wiersz['pole1']."<br>"; print "Pole
drugie".$wiersz['pole2']."<br>"; print "Pole
trzecie".$wiersz['pole3']."<br>"; }
Wszystko to odbywa siΩ dziΩki komendzie 'mysql_fetch_array',
kt≤rej zadaniem jest pobieranie wierszy ze zbioru wynik≤w i zwracanie jej
w postaci tablicy. Oczywi╢cie ka┐da osoba znaj▒ca HTML'a i PHP
zorientowa│a siΩ, ┐e zamiast pisaµ 'print' trzy razy, mo┐na by napisaµ
tylko raz, ale napisa│em tak dla przejrzysto╢ci kodu.
Autor:
Piotr Ku╝mi±ski
pk@php.pl / piotr.k@2com.pl
http://pk.help.pl
http://www.php.pl
|