traži:  
 php.com.hr > Osnove rada s MySqlom

Osnove rada s MySqlom
 


U ovom poglavlju ćemo proći kroz osnove izrada tablica te kroz osnovne tipove polja koje MySql podržava. Da bi olakšali ovaj proces upoznat ćemo se sa alatom za rad sa MySql-om koji je napisan u PHP-u, što ga čini idelanim za naše potrebe. Nakon što kreiramo vrlo jednostavnu bazu spojit ćemo se na MySql server te vidjeti kako PHP-om napuniti bazu podacime, pribavljati podatke iz baze te mijenjati i brisati ih.

Normalno, prije nego li kreiramo bazu moramo otići u nabavku osnovnih namirnica. Prva stvar koja će nam trebati je MySql server koji se može skinuti na www.mysql.com. U ovom trenutku neću opisivati kako instalirati MySql pošto postoje odlične upute u manualu koji se također može naći na www.mysql.com te je poželjno imati ga u nekom windows help file formatu radi lakšeg korištenja kasnije.

Nakon što uspješno instalirate MySql automatski je stvoren ugrađeni korisnik root koji je ujedno i superadministrator. To znaći da on ima sve permisije i ima apsolutnu kontrolu i uvid u cijeli server sa svim njegovim bazama. On također može dodavati nove korisnike. Normalno, pošto se radi o ugrađenom korisniku on nema lozinke, i to ćemo sada promijeniti da bi se uskladili sa realnim uvijetima koji se nalaze na komercijalnim serverima.

Namiještanje lozinke korisnika

Lozinku postojećem korisniku možemo namjestiti na više načina. Najjednostavniji je pomoću administarcijskog alata koji dolazi u paketu binarnih fileova u distribuciji. Nažalost, radi se o command prompt alatu tako da ćemo sada morati malo tipkati.

1.Otvorite command prompt (Start -> Run -> Upišite „cmd“ )

2.Pozicionirajte se u c:/mysql/bin

3. Utipkajte :

C:\mysql\bin>mysqladmin.exe -u root password lozinka

Ukoliko nekada kasnije želite ponovno izmjeniti lozinku za ovog korisnika ponovite iste korake, samo ovog puta morate mysqladmin-u dati i opciju –p te ćete prije izmjene passworda biti zatraženi stari password.

C:\mysql\bin>mysqladmin.exe -u root -p password nova_lozinka

Napominjem, ovo je samo jedan od više načina kako izmjeniti ili namijestiti loziku korisniku. Ukoliko se želite upoznati sa ostalim načinima, oni su navedeni i opisani na http://www.mysql.com/doc/en/Passwords.html.

Sada kada smo obavili početne konfiguracije možemo početi koristiti MySql. Prvi alat sa kojim ćemo se ukratko upoznati je defaultni MySql klijent.
Defaultni MySql klijent

MySql u standardnoj distribuciji dolazi i sa klijentom pomoću kojeg možemo pregledavati i manipulirati bazama na našem lokalnom serveru. Radi se o shell programu, koji je poprilično nepraktičan za neki ozbiljniji rad pošto se radi o ASCII prikazima podataka što nerijetko rezultira vrlo nepreglednim rezultatima upita, involvira puno tipkanja i za njegovo korištenje je potrebno solidno poznavanje SQL-a i za najjednostavnije operacije. Iz tih razloga se na njemu neću previše zadržavati, već ću samo proletiti kroz njega i iskoristiti ga za isticanje nekih bitnih stvari.

U tipičnoj instalaciji, klijent se nalazi u c:/mysql/bin direktoriju, a radi se o mysql.exe datoteci. Da bi se klijent pokrenuo potrebno mu je pri pozivanju proslijediti korisničko ime te dati opciju koja omogućuje naknadni upis lozinke.

C:\mysql\bin>mysql -u root –p

Nakon upisa lozinke ušli ste u mysql klijent koji izgleda odprilike ovako :

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 16 to server version: 4.0.17-max-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Kao što se vidi iz uvodnog teksta, dok se nalazite u klijentu svaka naredba mora završiti sa „;“ ili „\g“, dok se jedna naredba može protezati kroz više redova.

Već se iz priloženog može vidjeti da se radi o vrlo neprektičnom alatu u kojem je potrebno svaku pojedinu informaciju, kao popis svih bazi na serveru, zasebno zatražiti. Tako da bi vidjeli sve baze koje postoje na našem lokalnom serveru potrebno je upisati naredbu :

mysql>SHOW DATABASES;

Prije nego krenemo dalje, važno je napomenuti da su naredbe case insensitive tako da se ne morate brinuti o tome.

Rezultat gornje naredbe bi trebao izgledati otprilike ovako :

+---------------+

| Database |

+---------------+

| mysql |

| test |

+---------------+

2 rows in set (0.01 sec)

Kao što vidite, pri instalaciji MySQl-a automatski se stvaraju dvije tablice. Ona prva „mysql“ sadrži podatke oko našeg servera poput liste korisnika, njihovih prava i slične informacije. Vrlo je bitno da ne mijenjate podatke unutar te tablice a da niste 100% digurni što radite jer bi moglo trajno oštetiti MySql.

Baza „test“ je prazna i sa njom se možete igrati. Trenutačno ju nećemo dirati, već ćemo napraviti novu bazu te tablicu u njoj.

Ono što je zanimljivo primjetiti je da se ispod rezultata ovog upita ispisuje i vrijeme potrebno za obavljanje upita. Ovo je vrlo zgodan podatak za testiranje i lickanje upita prije njihovog ugrađivanja u samu skriptu. Normalno, ovo nije krajnja brzina izvođenja pojedinog upita unutar same skripte pošto nešto vremena ode i na prijenos podataka sa Mysql servera do naše skripte, no o ovome će biti govora nešto kasnije.

Vježba 1 : Stvaranje baze kroz MySql shell klijent

Napravit ćemo bazu koja će se koristiti na manjem siteu. Radi se o siteu za malu tvrtku kojoj je potrebno samo periodički objavljivati novosti, dok će ostatak sitea biti statički HTML. Da bi ispunili zahtijeve moramo napraviti novu bazu na serveru u kojoj će se nalaziti jedna tablica.

Naredba za stvaranje nove baze te njen rezultat izgleda:

mysql> CREATE DATABASE site_novosti;

Query OK, 1 row affected (0.00 sec)

Ovdje je vrlo bitno reći da su imena bazi, tablica te polja u njima case sensitive, te da se u njima ne smije nalaziti bilo kakav prazan prostor (razmak, tabulator, novi red).

Ukoliko sada obavite upit za prikaz svih baza na serveru u listi rezultata će se pojaviti i naša novostvorena baza.Da bi ju mogli početi koristiti te stvarati tablice u njoj ili baratati sa podacima u njima moramo prvo reći MySql-u da ćemo od sada nju koristiti.

mysql> USE site_novosti;

Database changed

Nakon obavljanja ovog upita / naredbe svi SQL upiti koje upisujemo u komandnu liniju će se odnositi na izabranu bazu.

Slijedeći korak je stvaranje tablice.
Stvaranje tablica

Nakon što smo uspješno stvorili bazu za naš prvi mali projekt stvorit ćemo i tablicu koja će nam biti potrebna da zadovoljimo potrebe našeg sitea. Kao što sam već rekao, jedini dinamički koji je potreban je vrlo jednostavan sistem novosti.

Struktura tablice će izgledati ovako :

U gornjoj shemi oznaka PK označava Primary Key ili Primarni ključ. Ukratko, primarni ključ je ono polje tablice koje će za svaki redak tablice imati unikatnu vrijednost te tako nepogrešivo identificira svaki pojedini redak tablice. U situacijama kada iz samog entiteta koji reprezentira tablica, kao u našem slučaju, nije vidljiv neki segment koji bi unikatno identificirao svaki zapis, polju se daje cijelobrojni (integer) tip, po mogućnosti što većeg raspona. U MySql-u postoji mehanizam koji može automatski dodjeljivati novu vrijednost takvom polju pri svakom unosu novog retka u tablicu. Takva polja se zovu autoincrement. Suprotna situacija bi bila kada iz samog objekta (ili entiteta, onoga što tablica reprezentira) vidimo neki njegov segment koji unikatno identificira svaki zapis u tablici. Primjer toga bi bio JMBG kod tablice koja bi sadržavala listu klijenata, ili neka posebna šifra sa vlastitom logikom generiranja. Mi ćemo koristiti autoincrement cjelobrojno polje.

U našoj tablici upoznati ćemo se sa još tri druga tipa polja.

Naslov će biti varchar tipa, ograničen na maksimalno 150 znakova. Tekst će biti tipa text, što je tip koji omogućuje upis velikih binarnih podataka (u ovom slučaju teksta) i nema ograničene veličine a datum, pogađate, tipa date.

Za sada neću ulaziti u detalje ovih i ostalih MySql tipova podataka.

Naredba za stvaranje tablice izgleda ovako :

CREATE TABLE novosti (

idnovost INT( 11 ) NOT NULL AUTO_INCREMENT ,
naslov VARCHAR( 150 ) NOT NULL ,
tekst TEXT NOT NULL ,
datum DATE NOT NULL ,
PRIMARY KEY ( idnovost )

);

Nakon uspješnog izvršenja ove naredbe možemo provjeriti da li je ona stavrno stvorena izvrašavanjem slijedeće naredbe :

mysql> SHOW TABLES;

+----------------------------+

| Tables_in_site_novosti |

+----------------------------+

| novosti |

+----------------------------+

1 row in set (0.01 sec)

Na samoj naredbi za stvaranje tablica se neću zadržavati jer ćete kasnije u vodiču biti upoznati sa alatom za rad sa MySql-om kroz grafičko korisničko sučelje kroz koje je puno brže i lakše stvoriti novu tablicu.

Posjetite za detaljnije informacije: http://dev.mysql.com/doc/mysql/en/creating-tables.html

Da bi izašli iz shell klijenta upišiti :

mysql>quit;

Ovime ćemo i završiti ovaj dio vodića i prebacit ćemo se na zanimljivi dio. Spajanje MySql-a i PHP za stvaranje dinamičkih web stranica.

 


PHP i MySQL
 © 2004 - 2008 php.com.hr