MENU

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

 
 

Contents copyright © 2000 - 2001, Krzysztof Dziewo±ski. All rights reserved.