Anda di halaman 1dari 9

6 SQL (Structured Query Language) 6.

1 Uvod SQL jezik podrava tri osnovne funkcije u radu sa bazama podataka: definicija baze podataka: definisanje strukture, koje tabele postoje, koji atributi postoje u tabelama i kog su tipa, koja ogranienja postoje u tabelama. manipulacija bazom podataka: pored upita nad bazom podataka, kojima dobijamo eljene informacije, neophodno je obezbjediti i auriranje baze podataka, odnosno unos, izmjenu i brisanje podataka. kontrola pristupa podacima: kontrola koji korisnici imaju pristup kojim podacima i ta mogu da rade sa tim podacima. 6.2 SQL za definiciju baze podataka Definicija neke baze podataka podrazumjeva i mogunost naknadne izmjene te definicije. U standardnom SQL jeziku se to postie sa svega dvije naredbe: CREATE: slui za kreiranje nekog objekta (tabele ili indeksa) u bazi podataka DROP: slui za uklanjanje definicije nekog objekta iz baze podataka. 6.2.1 SQL tipovi podataka ema relacije je skup atributa za koje je definisano kog su tipa podataka. Zato je neophodno da se definie kog su tipa kolone u tabeli. To su: INTEGER ili skraeno INT: cijeli brojevi od 32 bita SMALLINT: 16 bitni cio broj DECIMAL (m,n) ili skraeno DEC (m,n): decimalni broj sa ili bez predznaka i sa ukupno m cifara od ega su n decimalne. CHARACTER (n) ili skraeno CHAR (n) LOGICAL DATE 6.2.2 Naredbe kreiranja i uklanjanja tabele Iskaz kreiranja. Osnovni oblik iskaza za kreiranje bazne tabele je

CREATE TABLE ImeTabele ( ImeKolone TipKolone Ogranienje Kolone .. {, ImeKolone TipKolone Ogranienje Kolone ... } [OgranienjeTabele] Ime tabele je identifikator (maksimalne duine 18 znakova u DB2), iji je prvi znak slovo a ostali znaci su slova, cifre ili podvlaka ( ). Ovako definisano ime je nekvalifikovano, a moe se kvalifikovati navoenjem lokacije (sheme) i vlasnika tabele. Definicija kolone def-kolone ima oblik: ime-kolone tip-podataka [NOT NULL] [[WITH] DEFAULT [ vrednost]]

Ogranienje kolone i njihova znaenja su: NOT NULL u koloni nije dozvoljena NULL vrijednost UNIQUE u koloni nije dozvoljeno ponavljanje iste vrijednosti PRIMARY KEY kolona je primarni klju i u njoj nije dozvoljena NULL vrijednost niti ponavljanje vrijednosti CHECK (Predikat) svaka vrijednost u koloni mora da zadovoljava uslov zadat logikim izrazom koji smo oznaili sa Predikat i u kome se ne mogu navoditi druge kolone. DEFAULT = Konstanta ako se prilikom unoenja jednog reda podataka u tabelu za kolonu ne zada vrijednost, preuzima se podrazumjevana vrijednost Konstanta. Za statiku specifikaciju referencijalnog integriteta za jednu kolonu: REFERENCES ImeTabele [(Ime Kolone)] kolona je strani klju u odnosu na tabelu ImeTabele, i uvijek mora imati ili vrijednost primarnog kljua u toj tabeli ili NULL vrijednost (ako nema NOT NULL ogranienja) Za cijelu tabelu se mogu zadati: ni jedno, jedno ili vie ogranienja. To je neophodno u situacijama kada ogranienja vae za skup od dvije ili vie kolona. Osnovne klauzule OgranienjeKolone za vie tabela su UNIQUE (ListaKolona) u koloni nije dozvoljeno ponavljanje istih kombinacija vrijednosti kolona ija su imena navedena u Listi Kolona. PRIMARY KEY (ListaKolona) kolone navedene u (ListaKolona) su primarni klju i u njoj nije dozvoljena NULL vrijednost niti ponavljanje kombinacija njihovih vrijednosti. Slijedee dvije klauzule slue za dinamiku specifikaciju referencijalnog integriteta u sluaju brisanja reda u cijeloj tabeli ImeTabele ili izmjene vrijednosti PK u cijeloj tabeli: DELETE OF ImeTabele {RESTRICTED/CASCADE/NULLS} specifikacija ta se deava u sluaju pokuaja uklanjanja jednog reda u cijeloj tabeli. UPDATE OF ImeTabele {RESTRICTED/CASCADE/NULLS} specifikacija ta se deava u sluaju pokuaja promjene vrijednosti PK u jednom redu u cijeloj tabeli.

U predhodnim definicijama sa ListaKolona se oznaava konstrukcija oblika ImeKolone {,ImeKolone} ... odnosno navoenje jedne kolone ili vie kolona odvojenih zarezom. Sva ogranienja navedena u CREATE TABLE definiciji neke tabele aktivna su u svakom trenutku postojanja te tabele. Primjer: CREATE TABLE Oblast (SifO CHAR(2) PRIMARY KEY, Naziv CHAR(20) NOT NULL UNIQUE ); CREATE TABLE Naslov (SifN CHAR(4) PRIMARY KEY, Naziv CHAR(20) NOT NULL, SifO CHAR(2) NOT NULL REFERENCES Oblast UPDATE OF Oblast CASCADES, DELETE OF Oblast RESTRICTED ); CREATE TABLE Knjiga (SifK CHAR(3) PRIMARY KEY, SifN CHAR(4) NOT NULL REFERENCES Naslov, UPDATE OF Naslov CASCADES, DELETE OF Naslov RESTRICTED ); CREATE TABLE JeAutor (SifA CHAR(3) REFERENCES Autor, SifN CHAR(4) REFERENCES Naslov, Koji INT NOT NULL CHECK (Koji > 0) PRIMARY KEY (SifA, SifN), UPDATE OF Autor CASCADES, DELETE OF Autor RESTRICTED, UPDATE OF Naslov CASCADES, DELETE OF Naslov RESTRICTED );

Izbor dinamikih specifikacija integriteta za sluaj ulanjanja predstavlja delikatnu odluku. Ako uvijek nepromiljeno koristimo klauzulu RESTRICTED, nameemo vrlo krut reim rada sa bazom podataka koji moe dovesti i do toga da ne moemo da uklonimo pogreno unijete podatke iz tabele. Naredba uklanjanja definicije tabele iz baze podataka je jednostavna. Njena sintaksa je: DROP TABLE ImeTabele; Tabela koja se uklanja mora biti prazna. U suprotnom, sistem za upravljanje bazom podataka nee izvriti tu naredbu. 6.2.3 Indeksi (iz Gordana L) Indeks je pomona datoteka koja treba da ubrza pristup podacima u nekoj osnovnoj datoteci.

Indeks se moe posmatrati kao ureeni skup pokazivaa na vrste bazne tabele, fiziki odvojen od podataka u tabeli. Svaki indeks baziran je na vrednostima podataka jedne ili vie kolona tabele. Indeks je veoma koristan mehanizam koji ubrzava pristup vrstama tabele. Kao to je u pronalaenju nekog pojma u knjizi koristan indeks, koji eliminie potrebu za prelistavanjem knjige stranu po stranu, tako je i u pretraivanju vrsta tabele po nekom uslovu mnogo efikasnije koristiti indeks po koloni koja uestvuje u uslovu, nego pretraivati tabelu sekvencijalno, vrstu po vrstu. Tako, na primer, ako nad tabelom K postoji indeks po koloni OBLAST, pristup knjigama po uslovu da je knjiga roman, mnogo je bri nego ako takav indeks ne postoji. Izvravanjem iskaza za kreiranje indeksa, RSUBP gradi odgovarajuu strukturu podataka i odrava je automatski. O nainu organizovanja, izgradnje i korienja indeksa kao metode pristupa vrstama tabele, bie opirno rei u glavi 12. U ovoj taki bie naveden samo nain na koji SQL podrava rad sa indeksima. Iskaz kreiranja. Nad indeksima se mogu izvravati samo SQL iskazi za definisanje, tj. iskazi za kreiranje i uklanjanje indeksa. Iskaz kreiranja indeksa je oblika CREATE [UNIQUE] INDEX ime-indeksa ON ( ime-kolone [redosled] {, ime-kolone [redosled]}) [ drugi-parametri] Imetabele

Opcija UNIQUE precizira da dve razne vrste u baznoj tabeli nad kojom se kreira indeks ne mogu uzeti istovremeno istu vrednost na indeksnoj koloni ili njihovoj kombinaciji. Redosled uz svaku kolonu komponentu indeksa je ili ASC (rastui) ili DESC (opadajui); ASC se podrazumeva ako se redosled ne navede. Nizanje kolona sleva na desno odgovara glavnom-ka-sporednom redosledu kolona, pri emu su vrste indeksa ureene po zadatom redosledu (ASC, DESC) vrednosti navedenih kolona. Uz izvesna ogranienja, nad svakom kolonom se moe izgraditi indeks (npr. DB2 sistem ne podrava indekse nad kolonama dugakih LONG tipova kao

to su dugaki niskovni ili grafiki tip promenljive duine, veliki binarni objekti itd). Drugi-parametri odnose se na fizike karakteristike indeksa, npr. prostor tabela u koji se smeta indeks, ili da li je indeks grupiui ili negrupiui (v. odeljak 12). Jedna od komponenti RSUBP-a, upravlja podacima (engl. data manager), automatski odrava jednom kreirani indeks, tako da on odslikava auriranja bazne tabele, sve dok se indeks ne ukloni. U iskazu CREATE INDEX XKIC ON KI (CENA) opcija UNIQUE se ne navodi jer vei broj izdanja moe imati istu cenu. Iskaz uklanjanja. Iskaz za uklanjanje indeksa ima oblik

DROP INDEX ime-indeksa Izvravanjem ovog iskaza opis indeksa se uklanja iz kataloga. U sistemu DB2, svaki pristupni paket (v. refsec:klijserv) koji koristi takav indeks oznaava se nevaeim i izgrauje se ponovo pre sledeeg izvrenja.

3.2.4 Pogledi Pogledi su virtuelne tabele koje nisu predstavljene fizikim podacima, ve je njihova definicija (u terminima drugih tabela) zapamena u katalogu. Iskaz za kreiranje pogleda u SQL-u je oblika: CREATE VIEW ime-pogleda [( kolona f, kolonag)] [WITH CHECK OPTION] AS puni upitni blok

Puni upitni blok pripada manipulativnom delu SQL-a (v. taku 3.3.9), i zato e pogledi biti prikazani detaljnije u posebnoj glavi o pogledima. CHECK opcija se odnosi na primenu ogranienja navedenih u logikom izrazu WHERE linije upitnog bloka, pri unoenju i izmeni podataka u pogledu. Na primer, CREATE VIEW JUGIZD AS SELECT I SIF, NAZIV FROM I WHERE DRZAVA='Jugoslavija' Kada se izvri ovaj CREATE iskaz, podupit SELECT-FROM-WHERE se ne izvrava, ve se samo definicija upita sauva u katalogu. Pogled JUGIZD je prozor, i to dinamiki, na tabelu I. Izmene nad pogledom JUGIZD automatski se izvravaju nad tabelom I, a izmene nad tabelom I

automatski se odraavaju (vide) na pogled JUGIZD (ako zadovoljavaju uslove koji definiu taj pogled). Korisnik moe ali i ne mora biti svestan da pogled nije bazna tabela, jer se nad pogledom mogu postavljati upiti (gotovo svi) kao i nad baznom tabelom. Iskaz za uklanjanje pogleda ima oblik DROP VIEW ime-pogleda Na primer DROP VIEW JUGIZD Uklanjanje pogleda nema nikakvog efekta na osnovne tabele iz upita. Definiciju pogleda nije mogue menjati. 3.3 Manipulisanje podacima

SQL podrava etiri manipulativna iskaza: SELECT pretraivanje INSERT umetanje UPDATE auriranje DELETE brisanje U ovom odeljku bie, navedenim redosledom, postupno izloena sintaksa i se- mantika ovih iskaza. 3.3.1 Pretraivanje Osnovni oblik iskaza pretraivanja u SQL-u sastoji se od tzv. upitnog bloka oblika 4 SELECT lista-kolona FROM ime-tabele WHERE logiki-izraz Lista-kolona je spisak kolona iz tabele ime-tabele . Logiki-izraz ukljuuje poreenja atributa, konstanti i izraza (odgovarajueg tipa) u kojima atributi i konstante uestvuju, kao i ispitivanje pripadnosti vrednosti takvih izraza zadatom skupu. Pripadne relacijske operacije su =, <>, <, <=, >, >=, IN, BETWEEN, LIKE, IS jednostavnog

3 SQL sistema DB2 ima iskaz ALTER VIEW ali se on odnosi samo na jednu specifinu karak- teristiku postojeih kolona pogleda. 4 Upitni blok ovog oblika osnovna je komponenta i ostalih manipulativnih iskaza; isto vai i za tzv. puni upitni blok (v. 3.3.9.

64 3 Upitni jezik SQL NULL (NOT IN, NOT BETWEEN, NOT LIKE, IS NOT NULL); od kvantifikatora doputen je egzistencijalni kvantifikator. Mogua struktura logikog izraza bie prikazana primerima koji slede. Svi primeri odnose se na tabele izdavake baze podataka opisane u odeljku 1.2 (o strukturnom delu relacionog modela). Rezultat operacije koju definie SELECT upitni blok je tabela koja je izvedena iz tabele navedene u FROM liniji, pri emu su njene kolone odreene listom kolona a vrste tanou logikog izraza: samo one vrste tabele iz FROM linije za koje logiki izraz ima vrednost tano pojavljuju se u rezultujuoj tabeli. Primer 3.2 Nai ifre i statuse izdavaa iz Amerike. SELECT I SIF, STATUS FROM I WHERE DRZAVA='Amerika' Rezultat: I SIF STATUS i2 20

Imena kolona mogu se (a nekad i moraju, kao to e biti pokazano) kvalifikovati imenima tabela iz kojih potiu, pa se prethodni primer ekvivalentno zapisuje kao SELECT I.I SIF, I.STATUS FROM I WHERE I.DRZAVA='Amerika' SELECT iskaz ima mnogo optiju strukturu i izraajne mogunosti. One e u sledeim takama biti uvoene redom, od svojstava jednostavnog upitnog bloka (take 3.3.2 do 3.3.8), preko punog upitnog bloka (taka 3.3.9) do opte strukture SELECT iskaza (3.3.10).

Anda mungkin juga menyukai