Top Banner
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.
21

Uvod u sql

May 24, 2015

Download

Documents

Luka Rajčević
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Uvod u sql

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.

Page 2: Uvod u sql

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.

Page 3: Uvod u sql

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

Page 4: Uvod u sql

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.

Page 5: Uvod u sql

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

Page 6: Uvod u sql

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.

Page 7: Uvod u sql

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.

Page 8: Uvod u sql

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.

Page 9: Uvod u sql

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:

Page 10: Uvod u sql

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

Page 11: Uvod u sql

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.

Page 12: Uvod u sql

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:

Page 13: Uvod u sql

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

Page 14: Uvod u sql

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

Page 15: Uvod u sql

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.

Page 16: Uvod u sql

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

Page 17: Uvod u sql

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.

Page 18: Uvod u sql

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.

Page 19: Uvod u sql

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.

Page 20: Uvod u sql

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.

Page 21: Uvod u sql

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