 100%
besplatni online oglasnik Vecernjeg lista Mali oglasnik u vlasnistvu
najcitanijeg i najtiraznijeg dnevnog lista u Hrvatskoj. Besplatan pregled i postavljanje
oglasa. Svi oglasi sadrze broj telefona.
http://www.vecernji-list.hr/malioglasnik/ | |
Pozdrav
webmajstori! Upravo citate 50. broj newslettera! Nadamo se druzenju i ubuduce,
najmanje jos nekoliko puta toliko :-) Zadnji je dan nagradne
igre (PHP tecaj). Zaigrajte ako jos niste. SQL,
4. dio: DATA QUERY LANGUAGE (DQL)
Napisala: Blanka Matkovic © 2001 - 2003 Data
Query Language (DQL) jedan je od cetiri podvrste SQL jezika koji se sastoji od
naredbi za pretrazivanje i dohvacanje podataka u bazi, a njegova je najvaznija
i najkoristenija naredba SELECT koja uz pomoc uvjeta WHERE i JOIN moze dohvacati
podatke iz jedne ili vise tablica. Jednostavna
SELECT naredba SELECT naredba moze biti jednostavna ili slozena. Najjednostavnija
SELECT sintaksa izgleda ovako: SELECT * FROM
ime_tablice; Ovom naredbom dohvacaju se sve kolone u tablici. Ako zelimo
dohvatiti samo neke kolone, sintaksa ce izgledati ovako:
SELECT ime_kolone_1,ime_kolone_2,... FROM ime_tablice;
Slozena SELECT naredba Snaga SELECT naredbe dolazi do izrazaja koristenjem
rijeci WHERE kojom se iz tablice dohvacaju samo oni podaci koji zadovoljavaju
odredjeni uvjet. U tom slucaju sintaksa slozene SELECT naredbe izgledat ce ovako:
SELECT * FROM ime_tablice WHERE ime_odredjene_kolone=odredjena_vrijednost;
Na primjer, ako iz tablice Osobe koja se sastoji od kolona Ime, Prezime, Adresa,
Grad, Starost, zelimo izvuci samo one osobe s prebivalistem u Zagrebu, naredba
ce biti: SELECT Ime,Prezime FROM Osobe WHERE Grad='Zagreb';
Uz WHERE se uvijek koristi neki od 6 relacijskih operatora koje SQL sadrzi:
- = jednako
- <> ili !=
razlicito od
- < manje od
- >
vece od
- <= manje ili jednako
- >= vece ili
jednako
Npr. SELECT Ime, Prezime,
Adresa, Grad FROM Osobe WHERE Starost >=18;
Ovom naredbom
dohvacamo podatke o svim punoljetnim osobama. JOIN
uvjet Pomocu jednostavnijih SELECT naredbi mogu se izvuci podatke
iz jedne tablice, ali da bi korisnik dobio potpuno informacije, cesto je potrebno
jednom SELECT naredbom dobiti podatke iz vise tablica. To nam omogucava naredba
JOIN koji spaja podatke vise tablica. Da bi JOIN mogao funkcionirati, tablice
moraju imati zajednicku kolonu. Postoji nekoliko oblika JOIN naredbi, a
svaku od njih objasnit cemo pomocu tablica tecajevi
i polaznici. Tablica tecajevi:
| naziv | id | br_sati | | HTML | 1 | 20 |
| SQL | 2 | 20 | | ASP | 3 | 40 |
| JavaScript | 4 | 30 | | XML | 5 | 30 |
Tablica polaznici:
| ime | id_tecaj | | Maja | 2 |
| Ivan | 1 | | Ana | 3 | | Mario | 6 |
| Marija | 8 | | Ante | 7 | Cartesian
JOIN
Ovaj oblik JOIN naredbe spaja sve retke iz prve tablice sa
svim recima iz druge tablice, pa dobivamo kombinaciju svih zapisa u obje tablice.
Sintaksa glasi: SELECT tecajevi.naziv, tecajevi.id,
tecajevi.br_sati, polaznici.ime, polaznici.id_tecaj FROM tecajevi, polaznici;
Cartesian JOIN naredba ne koristi uvjet WHERE. Dobiveni rezultat ove naredbe izgleda
ovako:
| naziv | id | br_sati | ime | id_tecaj |
| HTML | 1 | 20 | Maja | 2 | | SQL | 2 | 20 | Maja | 2 |
| ASP | 3 | 40 | Maja | 2 | | JavaScript | 4 | 30 | Maja | 2 |
| XML | 5 | 30 | Maja | 2 | | HTML | 1 | 20 | Ivan | 1 |
| SQL | 2 | 20 | Ivan | 1 | | ASP | 3 | 40 | Ivan | 1 |
| JavaScript | 4 | 30 | Ivan | 1 |
| XML | 5 | 30 | Ivan | 1 | | HTML | 1 | 20 | Ana | 3 |
| SQL | 2 | 20 | Ana | 3 | | ASP | 3 | 40 | Ana | 3 |
| JavaScript | 4 | 30 | Ana | 3 |
| XML | 5 | 30 | Ana | 3 | | HTML | 1 | 20 | Mario | 6 |
| SQL | 2 | 20 | Mario | 6 | | ASP | 3 | 40 | Mario | 6 |
| JavaScript | 4 | 30 | Mario | 6 |
| XML | 5 | 30 | Mario | 6 | | HTML | 1 | 20 | Marija | 8 |
| SQL | 2 | 20 | Marija | 8 | | ASP | 3 | 40 | Marija | 8 |
| JavaScript | 4 | 30 | Marija | 8 |
| XML | 5 | 30 | Marija | 8 | | HTML | 1 | 20 | Ante | 7 |
| SQL | 2 | 20 | Ante | 7 | | ASP | 3 | 40 | Ante | 7 |
| JavaScript | 4 | 30 | Ante | 7 |
| XML | 5 | 30 | Ante | 7 |
Natural/Equi JOIN Natural JOIN spaja zapise iz prve tablice sa zapisima
iz druge tablice ako je zadovoljen uvjet WHERE. Sintaksa glasi:
SELECT tecajevi.naziv, tecajevi.id, tecajevi.br_sati, polaznici.ime FROM tecajevi,
polaznici WHERE tecajevi.id=polaznici.id_tecaj;
| naziv | id | br_sati | ime | | SQL | 2 | 20 | Maja |
| HTML | 1 | 20 | Ivan | | ASP | 3 | 40 | Ana |
Right Outer JOIN Right
Outer JOIN spaja zapise iz prve tablice s drugom tablicom na temelju vrijednosti
zadanih u JOIN uvjetu. Ova naredba takodjer ukljucuje i zapise iz druge tablice
koje nemaju odgovarajuci "par" u prvoj tablici, pa te kolone iz prve tablice imaju
vrijednost NULL. Sintaksa glasi: SELECT tecajevi.naziv,
tecajevi.id, tecajevi.br_sati, polaznici.ime, polaznici.id_ tecaj FROM tecajevi
right outer JOIN polaznici on tecajevi.id=polaznici.id_tecaj;
| naziv | id | br_sati | ime | id_tecaj |
| SQL | 2 | 20 | Maja | 2 | | HTML | 1 | 20 | Ivan | 1 |
| ASP | 3 | 40 | Ana | 3 | | NULL | NULL | NULL | Mario | 6 |
| NULL | NULL | NULL | Marija | 8 |
| NULL | NULL | NULL | Ante | 7 |
Left Outer JOIN Left outer JOIN
funkcionira jednako kao i right outer JOIN s jednom jedinom razlikom: naredba
ukljucuje i zapise iz prve tablice koje nemaju "par" u drugoj tablici, pa te kolone
iz druge tablice poprimaju vrijednost NULL. SELECT
tecajevi.naziv, tecajevi.id, tecajevi.br_sati, polaznici.ime, polaznici.id_
tecaj FROM tecajevi left outer JOIN polaznici on tecajevi.id=polaznici.id_tecaj;
| naziv | id | br_sati | ime | id_tecaj |
| HTML | 1 | 20 | Ivan | 1 | | SQL | 2 | 20 | Maja | 2 |
| ASP | 3 | 40 | Ana | 3 | | JavaScript | 4 | 30 | NULL | NULL |
| XML | 5 | 30 | NULL | NULL |
Full Outer JOIN Ova naredba predstavlja
kombinaciju left i right outer JOIN. Prvo se izvlace svi zapisi iz prve tablice
s odgovarajucima "parom" iz druge tablice, a zatim i preostali zapisi iz druge
tablice koji nemaju "par" u prvoj tablici. SELECT
tecajevi.naziv, tecajevi.id, tecajevi.br_sati, polaznici.ime, polaznici.id_
tecaj FROM tecajevi full outer JOIN polaznici on tecajevi.id=polaznici.id_tecaj;
| naziv | id | br_sati | ime | id_tecaj |
| HTML | 1 | 20 | Ivan | 1 | | SQL | 2 | 20 | Maja | 2 |
| ASP | 3 | 40 | Ana | 3 | | JavaScript | 4 | 30 | NULL | NULL |
| XML | 5 | 30 | NULL | NULL | | NULL | NULL | NULL | Mario | 6 |
| NULL | NULL | NULL | Marija | 8 |
| NULL | NULL | NULL | Ante | 7 |
O autoru:
Blanka Matkovic (buba_shady@yahoo.com)
- Poznatija kao Firewall. Clan je urednistva novog popularno-znanstvenog portala
Geopage (www.geopage.info), a uskoro i ponosni vlasnik IBMcertifikata
E-business Application Developer. |