SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE V A R A Ž D I N Luka Rajčević UVOD U SQL SEMINARSKI RAD Varaždin, 2011.
SVEUČILIŠTE U ZAGREBU
FAKULTET ORGANIZACIJE I INFORMATIKE
V A R A Ž D I N
Luka Rajčević
UVOD U SQL
SEMINARSKI RAD
Varaždin, 2011.
SVEUČILIŠTE U ZAGREBU
FAKULTET ORGANIZACIJE I INFORMATIKE
V A R A Ž D I N
Luka Rajčević
Redoviti student
Broj indeksa: 38117/09-R.
Smjer: Informacijski sustavi
Preddiplomski studij
UVOD U SQL
SEMINARSKI RAD
Mentor:
Dr. sc. Kornelije Rabuzin
Varaždin, travanj 2011.
I
Sadržaj
1. UVOD ..................................................................................................................................................................1
2. KRATKA POVIJEST SQL-A ............................................................................................................................2
3. STRUKTURIRANI JEZIK UPITA – SQL ........................................................................................................4
3.1. CODD-OVA PRAVILA ZA RAD S RELACIJSKIM BAZAMA PODATAKA ....................................................................4 3.2. DDL I DML ...................................................................................................................................................5 3.3. PRAVILA PISANJA KODA ..................................................................................................................................6 3.3. TIPOVI PODATAKA U SQL-U ...........................................................................................................................7
4. RAD S SQL-OM .................................................................................................................................................9
4.1. KREIRANJE BAZE ............................................................................................................................................9 4.2. RAD S PODACIMA U BAZI............................................................................................................................... 11
5. ALTERNATIVE SQL-U................................................................................................................................... 16
5. ZAKLJUČAK ................................................................................................................................................... 17
LITERATURA ...................................................................................................................................................... 18
1
1. Uvod
SQL – eng. structured query language, tj. strukturirani jezik za stvaranje upita. Iako ime to
sugerira, on je mnogo više od jezika za postavljanje upita. SQL je najpopularniji računalni jezik
za izradu, traženje, ažuriranje i brisanje podataka iz relacijskih baza podataka. Najpopularniji
znači da se gotovo sve današnje relacijske baze podataka temelje upravo na ovom jeziku koji je,
usputno rečeno, standardiziran ANSI standardom.
U ovom seminarskom radu ću pokazati kako je nastao SQL, kako se razvijao i kako je postao
glavni jezik za relacijske baze. Također ću opisati i naredbe koje se koriste u ovom jeziku,
pravila pisanja istih, tipove podataka koji se koriste u SQL-u itd.
Na kraju ću spomenuti i neke alternative SQL-u i iz svega navedenog izvesti nekakav zaključak.
2
2. Kratka povijest SQL-a
Upitni jezik SQL je nastao kao rezultat razvoja klase jezika u istraživačkom laboratoriju IBM-a,
u San Joseu, Kaliforniji. SQL je evoluirao od nekih ranijih jezika za upite. Tu „evoluciju“
karakterizira odstupanje od jezika relacijske algebre i približavanje jezicima relacijskog računa.
Jezici ove skupine, tj. upitni jezici, imaju jednu bitnu razliku u odnosu na ostale programske
jezike (C, C++, Java, Pascal) a to je da oni:
„omogućuju zadavanje onoga što se želi dobiti, bez preciznog navođenja načina kako će se
željeni rezultat dobiti“.
[Uvod u relacijske baze podataka, Pavlović-Lazetić Gordana, str 52.]
Prvi od jezika u klasi upitnih jezika stovrenih od IBM-a je bio upitni jezik SQUARE (Specifying
QUeries As Relational Expressions). Ovaj jezik je poprilično relacijski kompletan. Ima
prepoznatljivu sintaksu za sve operacije relacijske algebre, npr. Uspoređivanje skupova
inkluzijom.
Primjer sintakse jezika SQUARE, označava projekciju na atribute A, B, C rezultata prirodnog
spajanja relavije R i restrikcije S po uvjetu (D = d1).
Neprivlačnu matematičku sintaksu jezika SQUARE trebao je popraviti njegov nasljednik
SEQUEL (Structured English QUEry Language). „English“ u njegovom imenu se odnosi na
uvođenje rezerviranih riječi (keywords) iz engleskog jezika za označavanje uloge koju pojedini
atributi relacije imaju u upitu., dok „structured“ označava postojanje blokova od kojih se gradi
upit.
Primjer sintakse jezika SEQUEL.
Ovaj jezik je također relacijski kompletan jezik, podržava iste agragatne funkcije kao i
SQUARE. Ovaj je jezik, uz kasnije izmjene i iz pretežno pravnih razloga, preimenovan u SQL
(Structured Query Language). Pod ovim imenom još uvijek postoji, i od tada do danas je doživio
niz verzija i standarda. Prvi komercijalni SQL proizvod SQL/DS je predstavio IBM 1981. Iza
3
njega su se pojavili sustavi baza podataka Oracle i Relational Technology. Do 1986. Godine nije
bilo standarda upitnog jezika baza podataka. Prvi takav standard objavila je komisija X3H2 za
baze podataka Američkog instituta za standarde. Bio je to ANSI SQL/86. Taj standard je
sadržavao zajedničke kompoente raznih verzija SQl jezika. Jedan od poznatijih i bitnijih
standarda SQL-a je objavljen 1989. godine. Bio je to SQl/89, i bio je široko prihvaćen na tržištu.
Io je funkcionalno kompletniji od SQL/86. Najvažnije proširenej je bilo uvođenje referencijskog
integriteta i ugnježđenje SQL-a u programske jezike Ada, C, COBOL, FORTRAN, Pascal i PL/I.
Ostale bitnije verzije su SQL/92 ili SQL-2 (objavljen 1992.) i SQL/99 ili SQL-3 s nekim novim
mogućnostima.
4
3. Strukturirani jezik upita – SQL
3.1. Codd-ova pravila za rad s relacijskim bazama podataka
SQL jezik je razvijen za rad s relacijskim bazama podataka. Pravila prema kojima se radi u
relacijskim bazama, a ujedno i pravilima po kojima je stvoren SQL se pozabavio dr. Codd 1970.
godine. U članku „A relational model of data for large shared data banks“ iznosi 12 Coddovih
pravila za rad s relacijskim bazama podataka. U nastavku ću napisati tih 12 pravila:
0) Relacijski DBMS (Database Management System) – sustav za upravljanje bazama podataka
mora biti u mogućnosti da upravlja u ptpunosti bazama podataka kroz svoje relacijske
mogućnosti.
1) Pravila o informacijama – sve informacije u relacijskoj bazi podataka (uključujući imena
tablica i stupaca) predstavljaju se kao vrijednosti u tablici
2) Osiguravanje pristupa – svakoj se vrijednosti u relacijskoj bazi podataka može pristupiti
upotrebom kombinacije imena tablice, vrijednosti primarnog ključa i imena stupaca.
3) Sustavna podrška nedefiniranim vrijednostima – DBMS osigurava sustavnu podršku u radu sa
nedefiniranim veličinama (nepoznati ili neprimjenjivi tipovi podataka), koji se razlikuju od
definiranih vrijednosti i neovisni su.
4) Aktivan, uvijek dostupan relacijski katalog – opis baze podataka i njenog sadržaja je
predstavljen na logičkom nivou u vidu tabela i može se pretraživati pmoću baze podataka.
5) Razumljiv podjezik podataka – bar jedan podržani jezik mora imati dobro definiranu sintaksu
i biti razumljiv. Mora se podržati definicija podataka, upravljanje podacima, pracila integriteta,
autorizacija i transakcije.
6) Pravilo za ažuriranje pogleda – svi pogledi koji se teoretski mogu ažurirati, ažuriraju se kroz
sustav.
7) Unošenje, ažuriranje i uklanjanje podataka na nivou skupova – DBMS za dobivanje podataka
na nivou skupova i za unošenje, ispravak i uklanjanje podataka.
8) Fitička neovisnost podataka – mijenjanje fizičkog zapisa strukture ili metode pristupa ne
utječe na aplikacije ili programe.
9) Logička neovisnost podataka – koliko je god moguće, promjena strukture tablica ne utječe na
aplikacije ili programe.
5
10) Neovisnost integriteta – jezik baze podataka mora osigurati način za definiranje pravila
integriteta. Ona moraju biti sačuvana u katalogu, koji je uvijek dostupan i ne može se ignorirati.
11) Neovisnost od distribucije – prva ili ponovna distribucija pdataka ne utječe na zahtjeve
aplikacije.
12) Zaštita podataka – ne smije postojati mogućnost zaobilaženja pravila integriteta definiranih
jezikom baze podataka upotrebom jezika koji rade na niskom nivou.
3.2. DDL i DML
Čitajući ova pravila možemo reći da SQL kao strukturirani jezik za baze podataka omogućava da
tvorimo i promijenimo strukturu baze podataka, dodamo prava korisniku za pristup bazama
podataka ili tablicama, tražimo određene informacije odbaze ili da mijenjamo sam sadržaj baze.
Kako bi bili u mogućnosti raditi ovo sve nabrojano, SQL nam nudidvije skupine funkcija:
DDL ( Data definition language)
DML ( Data manipulation language)
DDL funkcije su funkcije za definiciju podataka (data definition). Naziv DDl se prvi put javlja u
vezi s Codasyl1 modelom baza podataka gdje je shema baze bila napisana u Data Description
Language-u koji je opisivao zapise, polja i skupove koji su činili model podataka. Kasnije se
počeo koristiti uglavnom u kontekstu SQL jezika, ali u zadnje vrijeme je on općeniti naziv za
bilo koji formalni jezik kojim se opisuju podaci ili druge strukture koje nose informacije.
Najčešća DDL naredba u SQL jeziku je naredba CREATE. Ova naredba u SQL-u stvara objekt
unutar sustava za upravljanje bazom podataka. Tip objekta koji se može kreirati ovisi o sustavu
za upravljanje a može biti npr. tablica, indeks itd. Najčešća CREATE naredba je svakako
CREATE TABLE ali o tome nešto kasnije.
DML funkcije su funkcije za upravljanje podacima (data manipulation). Pod DML jezike
smatramo velik broj računalnih kojima se koriste računalni programi ili baze podataka. Oni
ustvari služe za dodavanje, brisanje, editiranje i/ili ažuriranje podataka u bazama podataka.
Trenutno je najčešći DML onaj SQL-ov koji se koristi za dohvaćanje i upravljanje podataka
unutar relacijske baze. DML radi na način da mijenja podatke unutar SQL baze ali ne mijenja
shemu ili objekte unutar baze. Dakle, ukoliko imamo definiranu tablicu s nekim zapisima unutar
nje, sa DML naredbama možemo upravljati samo podacima. DML naredbe nemaju mogućnost
1 „Conference on Data Systems Languages“ – konzorcijum stvoren 1959. čiji su zaključci bili upute o razvoju
standardnih programskih jezika koji bi se mogli koristiti na mnogim računalima.
6
mijenjanja oblika tablice niti brisanja ili kreiranja iste. Za to je potreban DDL, opisan ranije.
Najpoznatije i najčešće korištene DML naredbe unutar SQL-a su npr. SELECT, INSERT,
UPDATE i/ili DELETE. Vidimo da je sintaksa vrlo jednostavna, engleske riječi koje rade upravo
ono što i same znače (odaberi, umetni, ažuriraj, izbriši). Postoje dva tipa DML jezika. To su
proceduralni i deklarativni. Svaka SQL DML naredba je deklarativnog tipa. Deklarativne
naredbe (SQL ili neke druge) opisuju što program treba napraviti, za razliku od proceduralnih
koje opisuju kako tj. na koji način program treba obaviti ono što želimo.
U početku su DML naredbe koristili samo računalni programi, no danas razvojem i širenjem
SQL njih koriste i mnogi korisnici također.
3.3. Pravila pisanja koda
Ono što je bitno spomenuti i objasniti, a što možda mnogima nije shvatljivo je način pisanja koda
u SQL-u. Dakle, u nekim primjerima naredbi od ranije mogli ste primjetiti da su sve SQL
naredbe bile pisane velikim slovima (upper case). To se radi iz razloga što se u kodu želi
naglasiti što je naredba a što je tekst ili neki podatak koji se unosi. Naime, SQL ne pravi razliku
između malih i velikih slova. U prijevodu, slijedeće dvije naredbe su potpuno jednake:
Kao što se vidi iz primjera, u prvom načinu ( sa velikim slovima) se jednostavno razaznaju
naredbe od imena tablica, stupaca, redova i/ili podataka. Iako je moguć i drugi način, ubuduće će
svi primjeri biti napisani prvim načinom radi lakšeg snalaženja u kodu.
Još jedna bitna stvar kod pisanja koda su komentari. Oni su tekst koji upišemo kao podsjetnik ili
kao opis nekih naredbi. Taj tekst se ne izvršava prilikom kompajliranja koda. U SQL-u postoje
dvije vrste komentara. To su:
1.) Komentar za samo jedan red kojemu je oznaka za početak „- -„ (bez navodnika), a iza slijedi
tekst komentara, npr:
7
2.) Komentar kroz više redova koji započinje oznakom „/*“ a završava sa „*/“ (obje oznake bez
navodnika), npr:
/* Ovo je
Komentar kroz
Više redova */
Imena objekata (tablice, stupci, redovi) moraju započeti slovom (malim ili velikim) il znakom _
(underscore). Dakle, ne smiju započeti sa brojem. U nastavku naziva (nakon prvog znaka) može
biti bilo koji znak pisan u Unicode kodu, decimalni brojevi ili neki specijalni znakovi @, $, _ ili
#, ali ne smiju biti ključne riječi (keywords).
3.3. Tipovi podataka u SQL-u
Prilikom kreiranja tablice (naredbom CREATE) određujemo nazive stupaca te tip podatka koji
će biti spremljen. To bi mogli usporediti sa inicijalizacijom varijable u programiranju. Tipovi
podataka u SQL jeziku su:
Cjelobrojni
bit – podatak koji je 1 ili 0
bigint – pohranjen je u 8 bajta i iznosi od
int (integer) koji iznosi od i pohranjen je u 4 bajta.
smallint – cijeli broj pohranjen u 2 bajta; vrijednost od
tinyint – podatak od 0 do 255
Decimalni
decimal ili numeric – vrijednosti od (pr. (11,2) gdje
prvi broj (11) označava ukupan broj znamenki a drugi – broj decimalnih mjesta
iza decimalne točke.
Novac
money – tip podataka isti kao i decimal. Razlika je u ispisu (pr. 1,245.127)
smallmoney – 4 bajtni novčani tip.
S pomičnim zarezom
float - tip podatka sa poičnim zarezom vrijednosti - 1.79E+308 to -2.23E-308
8
real - tip podatka s pomičnim zarezom vrijednosti - 3.40E + 38 to -1.18E - 38
Datum
datetime – datumski tip podataka razmjera od Siječanj 1, 1753, do Prosinac 31,
9999.
Smalldatetime 1. Siječanj 1900, do 6. Lipanj 2079.
Ostali datumski tipovi su: date, datetimeoffset, datetime2, time (uglavnom
kod MS SQL-a)
Niz znakova
Char (character) – znakovni niz npr. char (9). U bazi će ovaj podatak zauzimati
9 znakova bez obzira na unešenu duljinu što znači da može doći do skračenja
unosa ili do nadopune. Maksimalna vrijednost je 8000 znakova.
Nchar (national char) – u njega se spremaju znakovi koji spadaju u Unicode.
Maksimalna dužina je 4000 znakova.
Text – sprema tekstualne podatke. Može sadržavati 2,147,483,647 znakova.
Varchar – niz promjenjive dužine ( u bazu se sprema trenutna dužina podatka).
Maksimalne dužine 8000 znakova.
Binarni
Binary – binarni podatak maksimalne duljine 8000 bajtova
Varbinary – binarni podatak promjenjive dužine. Maksimalne dužine 8000
bajtova.
Image – binarni podatak primjenjive dužine, maksimalne dužine 2,147,483,647
bajtova.
9
4. Rad s SQL-om
4.1. Kreiranje baze
Dakle, SQL je jezik za stvaranje upita nad bazom podataka. No osim stvaranja upita, SQL je
zadužen i za cjelokupno dizajniranje baze podataka. U relacijskom modelu baza to znači da je
SQL zadužen za stvaranje tablica, redova i stupaca u tablicama, indeksa itd. Bazu podataka bi
mogli definirati kao objekt koji sadrži tablice i druge objekte u kojima se spremaju i obrađuju
podaci. Kako bi se kreirala baza podataka najčešće se koristi naredba
Sinonim za ovu naredbu je i
Iza imena baze (sheme) mogu slijediti dodaci koji pomnije opisuju bazu koju zelimo stvoriti. Oni
se dodaju sa CREATE SPECIFICATION, a neki od dodatnih opisa baze mogu biti NAME
(logičko ime baze podataka), FILENAME (ime i path datoteke baze podataka pod kojim ona
postoji na tvrdom disku), SIZE (početna veličina datoteke za podatke u MB ili kB), MAXSIZE
(najveća količina koju baza podataka smije automatski uzeti, može biti i UNLIMITED) itd. Ove
opcije se ne mogu primjeniti u svim sustavima za upravljanje bazom podataka. Oni nisu
standardizirani te njihovo postojanje varira od sustava do sustava.
Tablica predstavlja dvodimenzionalne matrice čiji redovi predstavljaju naziv i svpjstva objekata
pohranjenih u tablicu, a stupci svojstva objekata izražena odgovarajućim tipom podatka. Naredba
kojom se kreira tablica glasi:
Ukoliko želimo napraviti tablicu koja će se zvati npr. Korisnici u kojoj će stupci biti UserID,
Username, Password, Ime, Prezime, DatumRodjenja, Telefon tada ćemo SQL sintaksom načiniti
tablicu na slijedeći način:
10
Na ovakav način SQL će kreirati tablicu sa nazivom Korisnici. Ta tablica će imati 7 stupaca i to
redom: UserID, Username, Password, Ime, Prezime, GodinaUčlanjenja i telefon.. Iz ovog
primjera možemo vidjeti i jos neke dodatne naredbe koje smo koristili. To su NOT NULL
(naredba koja ne dozvoljava da određeno polje bude prazno, tj. da na njemu ne bude upisana
vrijednost) U našem slučaju username i password ne mogu biti prazna polja. PRIMARY KEY
nam govori koji stupac će služiti kao primarni ključ. Primarni ključ je jedinstven za svaki redak i
po njemu se reci i razlikuju. Ta vrijednost također ne smije biti NULL.
Naša tablica je prazna pa ćemo ju napuniti s podacima koje ćemo koristiti za upite. Unos
podataka u tablice se vrši naredbom INSERT. Upis izgleda ovako:
Kako bi unjeli podatke u prvu tablicu pišemo slijedeću naredbu:
Ovim kodom smo u tablicu Korisnici unijeli vrijednosti u polja. Na isti način u tablicu možemo
dodati još korisnika:
Nakon što smo unijeli podatke u tablicu naša „baza“ izgleda otprilike ovako:
Slika 1: Baza s podacima
11
4.2. Rad s podacima u bazi
Naredba SELECT koristi se za dohvaćanje (čitanje) podataka iz baze. Na našem konkretnom
primjeru, ukoliko bi htjeli ispisati imena svih korisnika to bi učinili na slijedeći način:
Na ovaj način dobivamo sve zapise koji se nalaze u stupcu Ime u našoj tablici:
Slika 4.2.1: Naredba SELECT
Naredbom SELECT tako možemo dohvatiti i ostale stupce u abzi, ali također možemo i
kombinirati i dobiti primjerice sva imena i sve brojeve telefona. Također željeli bismo i kolonu
password, ali je njen naziv na engleskom pa bi ga htjeli samo ovaj puta prikazati malo
prikladnije. Kod za ono što želimo napraviti i rezultat toga bi bio slijedeći:
U prošlom primjeru smo stupac imena „password“ prikazali kao „sifra“ ali samo ovaj jedan puta.
Kada bi htjeli izlistati cijelu tablicu ponovo vidjeli bi da se taj stupac i dalje zove „password“.
Inače, cijela tablica se može vrlo lako izlistati bez nabrajanja svih stupaca i to na način:
Slika 4.2.3: SELECT cijele tablice
Sada kad znamo unositi podatke u tablicu i pregledavati ih po određenim poljima možemo
učiniti nešto i da ih uredimo. Recimo da želimo sortirati prethodnu tablicu prema prezimenu i to
obrnutim abecednim redoslijedom. Upit izgleda ovako:
Slika 4.2.2: SELECT u kombinaciji sa AS
12
Slika 4.2.4: Sortiranje tablice po određenom stupcu
Na isti način možemo sortirati podatke prema više polja. Također, primjetite da smo u prošlom
primjeru uzeli cijelu tablicu. To ne mora biti slučaj. Sortiranje je moguće vršiti samo nad nekim
stupcima (npr. ispis imena i prezimena sortiran po imenu).
Pretpostavimo sad da smo dobili zahtjev i da trebamo za određenog korisnika pronaći sve
podatke (ili samo neke, postupak je isti). To ćemo napraviti na slijedeći način:
Slika 4.2.5: SELECT sa uvjetom
Dakle, potrebno je koristiti ključnu riječ WHERE i onda navesti uvjet koji se mora ispuniti da bi
ispisali određene podatke. U našem slučaju SELECT prolazi kroz bazu i za svaki red koji ima
username = 'Jose32' ispisuje ime, prezime i telefon.
Ponekad nam nije bitno samo koje podatke dobijemo od baze nego i koliko ih ima. U tu svrhu
nam služi naredba COUNT.
Slika 4.2.6: naredba COUNT
Da proširimo ovaj primjer sa nekim dodatnim uvjetom odgovor bi bio slijedeći:
Slika 4.2.7: naredba COUNT sa uvjetom
Dakle, naša baza nam je vratila odgovor da postoje 2 retka u kojima je godinauclanjenja > 1973.
A kad bi pogledali u nasu bazu mogli bi se uvjeriti da to i jest istina.
13
U slijedećim primjerima ću prikazati kako se mogu spajati podaci iz više tablica, tj. kako se
kombiniraju upiti nad više tablica. Za to će nam biti potrebna nova tablica. Nazvati ćemo ju
tekstovi. U toj tablici će se nalaziti UserID iz prve tablice te 2 nova stupa i to br_teksta i
naziv_teksta. Na već ranije opisani način unosimo podatke u tablicu. Naša tablica izgleda ovako:
Slika 4.2.8: Tablica tekstovi
Za svaki UserID smo unijeli po nekoliko tekstova (br_teksta i naziv_teksta). Primjetite da
korisnik sa UserID == 3 ima 2 jednaka teksta u tablici. Kako rješiti taj problem, tj. kako učiniti
da nam baza ne ispisuje oba teksta ako su oni jednaki? Način je vrlo jednostavan, dodati ćemo
samo još jednu ključnu riječ u naš upit, DISTINCT:
Slika 4.2.9:naredba DISTINCT
Na taj način smo iz rezultata izbacili duplikate.
Uzmimo za primjer slijedeću situaciju. Želimo izlistati sve tekstove koje je pisao određeni
korisnik, npr. Jose32. To ćemo učiniti uz pomoć ugnježđenih upita na slijedeći način:
Slika 4.2.10: ugnježđeni upit
Ovakav način radi na način da se prvo izvršava „unutarnji“ upit, tj. prvo se traži userID od
korisnika sa korisničkim imenom Jose32. Nakon što baza pronađe njegov ID koji je u ovom
slučaju jednak 2, prebacuje se na „vanjski“ upit te u tablici tekstovi traži one tekstove koje je
napisao netko sa userID 2. Rezultat su 2 teksta: „Pjesme I“ i „Pjesme II“. Na isti način možemo
14
vidjeti tekstove koje su napisali 2 ili više korisnika te npr. dobiti broj tekstova koje je napisao
određeni korisnik:
Slika 4.2.11: ugnježđeni upit (2)
Slika 4.2.12: Ugnježđeni upit (3)
To bi bili ugnježđeni upiti. Dakle, načini na koji oni rade je već objašnjen i prilično je
jednostavan i lak za shvaćanje. Postoje 2 (ili više) upita od kojih se prvo gleda onaj unutrašnji, i
tako sve do posljednjeg, „glavnog“ upita.
Još je jedna stvar dosta zanimljiva, a to je spajanje tablica. Ono što želimo postići je da uz broj
teksta i njegov naziv odmah vidimo i korisničko ime autora, kako bi bez dodatnog traženja mogli
dobiti svoj odgovor. Način na koji ćemo to napraviti je slijedeći:
Slika 4.2.13: Spajanje rezultata
Ono što radimo u ovome upitu je odabir stupaca koji nas zanimaju iz tablica koje imamo uz uvjet
da je userid iz jedne tablice jednak userid iz druge tablice. Dakle, za svaki tekst i broj teksta
automatski dobijemo izlistano i korisničko ime osobe koja je taj tekst pisala.
15
Naredba UPDATE je također korisna, a služi nam za ažuriranje podataka u bazi. Uzmimo npr.
da želimo promjeniti username i password korisniku Arseniju. To ćemo napraviti sa ovim
jednostavnim upitom:
Slika 4.2.14: naredba UPDATE
Na kraju su nam ostale naredbe za brisanje. DROP i DELETE. Samo ime kaže da naredba
DELETE služi za brisanje podataka iz tablice. Recimo da želimo iz tablice tekstovi obrisati zapis
čiji je userid = 1:
Slika 4.2.15: naredba DELETE
Naredba DROP služi za brisanje cijele tablice. Sintaksa je prilično jednostavna:
Slika 4.2.16: naredba DROP
Ovom naredbom smo prošli sve osnovne naredbe, a time i osnove SQL-a. Naredbe su jako
jednostavne, i sama sintaksa jezika je jednostavna u što smo se mogli i uvjeriti kroz primjer.
16
5. Alternative SQL-u
Za početak, trebam napraviti razliku između jezika za upite i SQL-a. SQL je jezik za upite, a
alternative koje ću navesti ovdje su alternative za SQL, a ne za upitni jezik. Neke od alternativa
za SQL su:
.QL (dot-q-el) –objektno orjentirani jezik za upite također korišten u relacijskim bazama
podataka. QL je ustvari OO (objektno orjentirana) varijanta logičkog programskog jezika
Datalog koji je također jedna alternativa SQL-u. Upiti u .QL – u su optimizirani i također
jednostavni. Najčešće korištenje ovog jezika je na način da se napiše upit koji se potom
pretvori u SQL upit i tako se mođe izvoditi na većini baza i tablica.
LINQ – je komponenta Microsoft .NET frameworka koja daje mogućnost stvaranja upita
svim .NET jezicima (VB, C# ...). LINQ definira skupinu metoda i pravila prijenosa za
podatke. Te metode i pravila koriste se kako bi se recimo podaci prenijeli i/ili filtrirali u npr.
nizove, pobrojenja, XML itd. Također i postoji mogućnost pretvaranja LINQ-a u SQL.
Query-by-example – je također upitni jezik za relacijske baze podataka. Razvijen u IBM-u
70-ih godina. On je prvi grafički upitni jezik, koristi vizualne tablice gdje bi korisnik unio
naredbe, primjere ili uvjete a jezik bi to izvršio. Danas je QBE poddržan u nekoliko sustava
za upravljanje bazama podataka posebice u Microsoft Accessu ali također i u Microsoft SQL
Server Enterprise Manageru.
17
5. Zaključak
SQL je upitni jezik koji se danas u velikoj većini koristi u svim sustavima za upravljanje bazama
podataka. Gotovo je nezamislivo danas održavati bazu ili se baviti nekim poslom s bazama
podataka a ne poznavati sintaksu i pravila SQL-a. Velika većina servera koji sadrže baze
podataka podržavaju SQL. Postoje i neke alternative, ali one se rijetko koriste. A čak ako se i
koriste, svaka od njih ima i mogućnost prevođenja u SQL. SQL je jednostavno standard za baze
podataka.
U ovom seminarskom radu sam prikazao osnove SQL-a. Pokazao sam na koji način se stvara
tablica te kako se obavljaju osnovne operacije nad elementima tablice. Naravno, ovo je bio samo
uvod u SQL. Postoji još mnoštvo drugih naredbi i mogućnosti osim ovih ovdje spomenutih. Ali o
tome nekom drugom prilikom.
18
Literatura
1. SQL, članak dostupan na http://en.wikipedia.org/wiki/SQL
2. SQL tutorial, dostupno na http://www.w3schools.com/sql/default.asp
3. Query by example, dostupno na http://en.wikipedia.org/wiki/Query_by_Example
4. .QL, dostupno na http://en.wikipedia.org/wiki/.QL
5. LINQ, dostupno na http://en.wikipedia.org/wiki/Language_Integrated_Query
6. Uvod u SQL, dostupno na
http://www.bhwebmasters.net/wp-content/uploads/2009/01/sql_new.pdf
7. SQl tutorial, dostupno na
http://www.riteh.uniri.hr/zav_katd_sluz/zr/nastava/bp/download/vjezbe/SQL_tutorial.pdf
8. Pavlović – Lažetić, Gordana: „Uvod u relacione baze podataka“ , dostupno na
http://download.tutoriali.org/Tutorials/Baze_podataka/Uvod_u_relacione_baze_podataka.pdf