




























































































Studirajte zahvaljujući brojnim resursima koji su dostupni na Docsity-u
Zaradite bodove pomažući drugim studentima ili ih kupite uz Premium plan
Pripremite ispite
Studirajte zahvaljujući brojnim resursima koji su dostupni na Docsity-u
Nabavite poene za preuzimanje
Zaradite bodove pomažući drugim studentima ili ih kupite uz Premium plan
Knjiga za baze podataka sa radom u sql
Tipologija: Rezime
1 / 235
Ova stranica nije vidljiva u pregledu
Ne propustite važne delove!





























































































Slobodan Obradović, Siniša Ilić SQL – Strukturirani upitni jezik u sistemima za upravljanje relacionim bazama podataka
Recenzenti: dr. Zoran Ćirović dr. Branimir Trenkić
Izdavač: Visoka škola elektrotehnike i računarstva strukovnih studija, Beograd
Za izdavača: dr Vera Petrović, direktor
Korice: Gabrijela Dimić
CIP - Каталогизација у публикацији - Народна библиотека Србије, Београд
004.652.4:004.42(075.8) 004.655.3(075.8)
ОБРАДОВИЋ, Слободан, 1955 - SQL : strukturirani upitni jezik u savremenim sistemima za upravljanje relacionim bazama podataka / Slobodan Obradović, Siniša Ilić. - Beograd : Visoka škola elektrotehnike i računarstva strukovnih studija, 2016 (Niš : Sven). - 229 str. : ilustr. ; 24 cm
Tiraž 15. - Bibliografija: str. 227.
ISBN 978-86-7982-246-
Jedan od najvažnijih razloga velike upotrebe računara jeste potreba za obradom sve većeg broja podataka. Da bi obrada podataka bila što efikasnija podaci se organizuju i logički povezuju u baze podataka. Sistemi za upravljanje bazama podataka (SUBP) predstavljaju sredstvo za čuvanje i obradu podataka. Danas su još uvek dominantni u upotrebi relacioni sistemi, čiji osnovni element su relacije, odnosno tabele. Za obradu podataka u relacionim bazama podataka koristi se SQL, strukturirani upitni jezik (Structured Query Language). SQL (izgovara se "es-ku-el") je implementiran u praktično sve komercijalne SUBP, i mada svaki proizvođač ima svoj dijalekt SQL-a rad sa svim verzijama je gotovo identičan. Udžbenik je podeljen u šest poglavlja. SQL je uvodno poglavlje u kojem su date opšte definicije i podele naredbi prema nameni. Naredbe za definisanje podataka predstavljaju poglavlje u kojem su date osnovne karakteristike i način primene naredbi kojima se kreiraju, menjaju i uklanjaju objekti i ograničenja baze podataka (tabele, atributi, veze, itd.). Ove naredbe po pravilu koriste projektanti i administratori baze podataka. Naredbe za rukovanje podacima upotrebljavaju programeri, i ono što je najbitnije vrlo često i krajnji korisnici baze podataka. Ove naredbe su vrlo jednostavne, i korisnik u njima određuje šta želi da uradi a ne i kako se to ostvaruje. Ovaj rad najčešće je interaktivan, minimalno je proceduralan. U osnovi obrade, manipulacije podacima nalazi se upitni blok koji čine SELECT, FROM i WHERE naredbe. Ove naredbe omogućavaju izdvajanje skupa željenih podataka, koji se čuvaju i jednoj ili više tabela baze podataka. Rezultati upita mogu biti i izračunate veličine, a mogu se i grupisati po nekim osobinama ili urediti po nekom pravilu. Ažuriranje baze podataka je neophodno jer podaci nastaju, menjaju se u vremenu i prestaju da budu od interesa. Dakle podaci se dodaju (INSERT), menjaju (UPDATE) i brišu (DELETE). Kreiranje i korišćenje okidača pokazuje kako se neki poslovni procesi mogu automatski izvršavati bez intervencije korisnika, a aktiviraju ih događaji ažuriranja tabela. Dodavanjem, menjanjem ili brisanjem podataka menja se sadržaj tabela čime se aktiviraju posebni programi sastavljeni od SQL naredbi. Zapamćene, uskladištene procedure predstavljaju imenovane blokove naredbi sa opcionim nizom ulaznih i izlaznih parametara. One se izvršavaju na serveru. Vrlo su korisne jer njima ne prethodi sintaksna i semantička analiza (kao što je to u slučaju prosleđivanja skupa SQL naredbi od strane klijenta), procedura je već kompajlirana na serveru zajedno sa planom izvršenja iste. Funkcije definisane od strane korisnika su potprogrami koji na osnovu liste ulaznih parametara izračunavaju izlazne parametre (procedura za razliku od funkcije ne vraća ni jednu vrednost). Kursori omogućavaju rad sa pojedinačnim redovima za razliku od tipičnih SQL naredbi koje rade sa skupovima slogova, redova. Kursor je u suštini pokazivač koji redom pokazuje na svaki slog (red) i na taj način omogućava pojedinačnu obradu svakog sloga. Kreiranje i korišćenje pogleda je od posebnog interesa, jer pogledi olakšavaju rad krajnjih korisnika i programera, a ujedno su i moćno sredstvo za zaštitu podataka. Upravljačke naredbe obezbeđuju sigurnost i integritet podataka. Baze podataka omogućavaju jednovremeni pristup podacima od strane većeg broja korisnika. Samim tim bezbednost podataka je ugrožena i moguće je narušavanje integriteta i konzistentnosti podataka. Ove naredbe uglavnom koriste administratori baze podataka.
Sastavni deo svakog sistema za upravljanje bazama podataka čine i specijalni jezici za opis i korišćenje baza podataka koji sadrže sledeće sastavne delove: jezik za opis podataka ( DDL – Data Description Language ), jezik za opis fizičke strukture podataka ( DMCL – Device Media Control Language ), jezik za rad sa podacima ( DML – Data Manipulation Language ) i jezik upita ( QL – Query Languages ). ”Jedna od najvažnijih osobina baza podataka jeste da je opis podataka potpuno odvojen od programa za obradu podataka” 1. Jezik za opis podataka može biti poseban neproceduralni jezik ili proširenje postojećeg programskog jezika (Cobol, C, Pascala ili C++). Njegova osnovna funkcija je specifikacija logičke strukture podataka time što se definišu: objekti i/ili tabele, logičke veze između objekata, atributi i dozvoljeni interval vrednosti za svaki atribut. Jezik za opis fizičke strukture podataka definiše: način memorisanja i dodele memorijskog prostora na disku, redosled i fizičku organizaciju podataka, dodelu privremene memorije i načine adresiranja i pretraživanja podataka. Jezik za rad sa podacima obezbeđuje vezu između podataka i aplikacije (programa za rad sa podacima: unos, obradu, prikaz i sl.), a njegove osnovne funkcije su: otvaranje i zatvaranje datoteka (naredbe OPEN i CLOSE ), pronalaženje željenog sloga ( FIND ), izmena sadržaja nekog polja ( MODIFY ), dodavanje sloga ( INSERT ), brisanje sloga ( DELETE , REMOVE ) itd. Jezici upita omogućavaju realizaciju proizvoljnih funkcija – upita nad relacijama. U zavisnosti od toga da li se zasnivaju na relacionoj algebri ili na predikatskom (relacionom) računu, postoje dve klase ovih jezika. U relacionoj algebri definisane su operacije pomoću kojih je moguće dobiti željenu relaciju (tabelu) iz skupa datih relacija (tabela). Relacionim računom definišu se osobine relacija koje se žele dobiti. U relacionoj algebri definisane su sledeće operacije: unija, diferencija, presek, Kartezijev (Dekartov) proizvod, projekcija, selekcija (restrikcija), spajanje (join), deljenje. Postoje još neke izvedene operacije uslovljene NULL vrednostima. Relacioni račun je neproceduralni jezik, te programer umesto da definiše proceduru pomoću koje će se dobiti željeni rezultat, samo specificira željeni rezultat. Postoje dva oblika relacionog računa: relacioni račun n-torki i relacioni račun domena. ” Primer relacionog računa n-torki:
x RADNIK x.SIFRA, x.IME GDE_JE x.PLATA > 2 000 AND x.KVALIF = 'VKV' Primer relacionog računa domena:
x,y GDE_JE z > 2 000 AND RADNIK (SIFRA: x, IME: y, PLATA: z, KVALIF = 'VKV' ) ”.^2
Zajednička karakteristika ovim računima jeste ta da su njihove konstrukcije mnogo sličnije prirodnim jezicima nego što je to slučaj sa jezicima treće generacije. Najpoznatiji primeri ovih jezika su SQL, Quel i QBE [25], [27]. ” Oni se zasnivaju na različitim principima: QBE se zasniva na relacionom računu domena, Quel se zasniva na relacionom računu (ne
(^1) [16] Дончев, A., Обрадович, C.: ”База от данни”, Технически университет – Габрово, ISBN – 954-683-
223-5, Габрово, 2004. (^2) [27] Slobodan Obradović ''Poslovno informatička obuka'', Nacionalna služba za zapošljavanje, ISBN 86-
902585-8-2, Beograd, 2004.
SQL
podržava relacionu algebru), a SQL se zasniva na relacionom računu n-torki tj. na kombinaciji relacione algebre i relacionog računa” 3. Navedena tri jezika nisu značajna samo u oblasti istraživanja baza podataka, već imaju značajne komercijalne implementacije. Iako smo ih označili kao jezike upita, to je u stvari netačno, jer ovi jezici imaju ugrađene i sve druge mogućnosti: definisanje strukture podataka, modifikacija podataka u bazi i mogućnosti za definisanje bezbednosnih ograničenja. Iako postoje komercijalni proizvodi zasnovani na sva tri jezika (Ingres je zasnivan na Quel-u), detaljnije ćemo obraditi SQL jer je on našao najširu primenu, a u narednom poglavlju biće opisane mogućnosti QBE jer je njegova primena vrlo prosta, a on je implementiran u sve moderne RDBMS i alate za rad sa bazama podataka. SQL je programski paket koji se zasniva na relacionoj algebri i relacionom računu. Skraćenica SQL dolazi iz engleskog Structured Query Language, što bi u slobodnom prevodu značilo strukturni jezik za postavljanje upita [13], [16], [25], [27], [30]. Teorijske osnove, kao i koncept prvog SQL programskog paketa, dao je E.F. Codd utvrdivši u svom radu: “... da koncept relacionog modela dozvoljava razvoj univerzalnog jezika za manipulisanje podacima baziranog na primeni relacione algebre ”. Razvoj SQL programskog paketa tekao je u skladu sa tempom kojim se danas prihvataju nove ideje u tehnici, a posebno u računarskoj tehnici. Godine 1974, dakle četiri godine posle definisanja teorijskih principa relacionih baza podataka, nastaje programski paket nazvan SEQUEL, da bi ubrzo došlo do njegove modifikacije i pojave paketa SQUARE , a potom, kako to onda obično biva, dolazi SEQUEL2. IBM razvija sopstveni paket pod imenom SISTEM-R. Neka vrsta sinteze iskustava navedenih programskih paketa ostvarena je u verziji koja se danas nalazi pod imenom MySQL. Osnovna ili standardna verzija SQL programskog paketa je verzija predviđena za manipulisanje podacima u relacionim bazama koja je implementirana danas praktično u svim programskim paketima za obradu podataka kao njihov sastavni deo, a u svojoj sintaksi ima za sve osnovne relacione operatore (spajanje, razliku, množenje, restrikciju i projekciju) ekvivalentne SQL naredbe. Tri preostala relaciona operatora (deljenje, presek i unija) ne smatraju se osnovnim, jer se te operacije mogu izvesti kombinovanjem pomenutih, osnovnih i, za razliku od većine verzija SQL-a, upitni jezik Quel ih ne podržava. SQL je standardizovan od strane kompetentnih međunarodnih institucija, kao što su ISO ( International Standardization Organization ) i ANSI ( American National Standards Institute ). U ovoj knjizi poštovana je sintaksa propisana po ANSI standardu. Jezik SQL je skup naredbi pomoću kojih korisnik određuje šta želi da uradi i ne razmišlja o tome kako će to biti ostvareno. Pri izvršavanju naredbi najbitnija je uloga optimizatora naredbi. Pre izvršenja svake naredbe on određuje optimalan način izvršavanja sa stanovišta brzine i potrebnih resursa. Jednom naredbom moguće je obraditi grupu slogova, a optimalan pristup grupi bolji je od grupe optimalnih pristupa pojedinačnim slogovima. Relacioni jezik koji komunicira sa bazom i podacima zasnovan je na relacionoj algebri i na predikatskom računu prvog reda. Zahvaljujući tome, korisnik postavlja logičke uslove na osnovu kojih se izdvajaju podaci. Sistem za upravljanje bazom podataka izdvaja sve slogove koji zadovoljavaju postavljene uslove, a da mu pri tome korisnik nije saopštio kako da ih izdvoji i gde se ti podaci fizički nalaze. Osnovni nedostatak SQL paketa ogleda se u činjenici da sve njegove mogućnosti i opcije ne mogu savladati korisnici - laici u smislu projektovanja, eksploatacije, obrade i neposrednog korišćenja informacionih sistema. SQL , naime, zahteva od korisnika poznavanje
(^3) [25] Obradović, S., Pandurov, T., Vučinić, B.: ”SQL Strukturirani upitni jezik“, Visoka škola elektrotehnike i
računarstva, ISBN – 978-86-85081-17-3, Beograd, 2008.
SQL
tabelama i pogledima moraju biti različiti, ali se mogu ponavljati u različitim tabelama i pogledima. Programski paket SQL omogućava jednostavno : x kreiranje relacija, x unos podataka, x brisanje, x ažuriranje, x pretraživanje podataka, te x prikazivanje novih informacija. Osnovne naredbe SQL-a koje se koriste u manipulisanju podacima u relacionoj bazi podataka omogućavaju definisanje, obradu i zaštitu podataka. Sve SQL naredbe, po pravilu, se završavaju interpunkcijskim znakom ( ; ) i mogu se podeliti u tri grupe. a) Naredbe za definisanje podataka (Data Definition Statements, DDL) omogućavaju definisanje resursa i logičkog modela relacione baze podataka [25], [27]: x CREATE TABLE – kreiranje fizičke tabele baze podataka, x CREATE VIEW – kreiranje virtuelne imenovane tabele, “pogled”, x CREATE INDEX – kreiranje indeksa nad jednom ili više kolona tabele ili pogleda, x ALTER TABLE – izmena definicije tabele, izmena, dodavanje ili uklanjanje kolone (atributa), x DROP TABLE – uklanjanje tabele iz baze podataka, x DROP VIEW – uklanjanje pogleda iz baze podataka. b) Naredbe za rukovanje podacima (Data Manipulation Statements) omogućavaju ažuriranje podataka u širem smislu (izmenu, dodavanje i brisanje) i izveštavanje (pribavljanje postojećih i izračunavanje novih informacija) iz baze podataka [25], [27]: x SELECT – pristup podacima i prikaz sadržaja baze podataka, x INSERT – unošenje podataka, dodavanje redova u tabelu, x DELETE – brisanje podataka, izbacivanje redova iz tabele , x UPDATE – ažuriranje, izmena vrednosti podataka u koloni. c) Naredbe za upravljanje bezbednošću podataka (Data Control Functions) omogućavaju oporavak, konkurentnost, sigurnost i integritet relacione baze podataka [25], [27]: x GRANT – dodela prava korišćenja tabele drugim korisnicima od strane vlasnika tabele, x REVOKE – oduzimanje prava korišćenja tabele drugim korisnicima, x BEGIN TRANSACTION – početak transakcije koji se može završiti jednom od dveju sledećih naredbi, x COMMIT WORK – prenos dejstva transakcije na bazu podataka, x ROLLBACK WORK – poništavanje dejstva transakcije na bazu podataka. Bez poznavanja navedenih komandi za projektovanje, definisanje podataka i rukovanje podacima ne može se ozbiljno računati na održavanje i izradu elementarnih aplikacija za obradu podataka uz korišćenje moderne relacione tehnologije. Štaviše, za najveći broj standardnih zahteva dovoljno je poznavanje samo ovih nekoliko naredbi, pa da se postigne željeni cilj. Sa druge strane, ove osnovne naredbe predstavljaju uvod u šira znanja za one koji nameravaju da se profesionalno bave projektovanjem i održavanjem informacionih sistema, a kompletan spisak SQL naredbi može se naći u svakom priručniku SQL-a.
Naredbe za definisanje podataka služe za definisanje strukture objekata, izmenu i brisanje definicije [13], [25], [27], [30]. Pomoću ovih naredbi opisuje se šema podataka. Kod nekih SUBP u ovu grupu naredbi se svrstavaju i naredbe kojima se definišu korisnici i njihova prava. Svako izvršenje DDL naredbe implicitno potvrđuje tekuću transakciju, kao i samu komandu nakon njenog izvršenja. Osnovna karakteristika tih naredbi jeste da se njihovo izvršenje ne može otkazati komandom ROLLBACK. One, dakle, implicitno potvrđuju tekuću transakciju, kao i samu komandu posle njenog izvršenja. U ovu grupu naredbi spadaju i naredbe definisanja prava pristupa, uloga i korisnika, ali mi ćemo ove naredbe posmatrati sa stanovišta njihove funkcije koja se odnosi na zaštiti i bezbednost podataka. Ove naredbe omogućavaju:
uz definisanje eventualnih ograničenja njihovih vrednosti.
Ime relacije (ili ime_tabele ) ne sme biti nijedna od ključnih reči programskog paketa SQL i mora počinjati slovom engleskog alfabeta. Od specijalnih znakova može sadržati samo znak _. Dužina imena nije precizirana.
Ime atributa bira se na isti način kao i ime relacije. Broj atributa jedne relacije ograničen je mogućnostima računara, a zavisi i od implementacije. U praksi su relacije sa više od 30 atributa retkost. Obično je taj broj, u dobro projektovanim sistemima, od 10 do 30.
U jednoj bazi podataka, kao što smo videli, može postojati više atributa sa istim imenom, ali oni ne smeju pri tom biti u istoj relaciji (tabeli). Preporučljivo je ovu opciju (ista imena atributa u različitim tabelama, a da pri tom označavaju različite stvari) radi preglednosti i eliminacije grešaka, izbegavati kad god je to moguće.
Tip atributa služi da se pobliže opiše podatak i na taj način odredi optimalan način njegovog memorisanja - sa jedne strane, a definicijom ograničenja vrednosti s druge strane, sprečavaju se moguće greške prilikom unošenja podatka.
Programski paketi za rad sa bazama podataka omogućavaju definisanje različitih tipova podataka [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [15], ali svi koriste nekoliko osnovnih tipova. x Slovni ili znakovni tip podatka koristi se kada podatak predstavlja niz alfanumeričkih znakova. Takav podatak je, na primer, ime i prezime, adresa ili zanimanje radnika, broj telefona itd. Slovni ili string podatak može biti svaki niz alfanumeričkih i nekih od speci-
Naredbe za definisanje podataka
smallint Integer od -2^15 do 2^15 - 1 tinyint Integer od 0 do 255 bit Integer sa vrednošću 0 ili 1 decimal Numerički podataka sa fiksnom preciznošću od 10^38 +1 do 10^38^ - numeric Numerički podataka sa fiksnom preciznošću od 10^38 +1 do 10^38 - money Novčane vrednosti od -2^63 do 2^63 - 1 smallmoney Novčane vrednosti od -214,748.3648 do +214,748. float Broj sa pokretnom preciznošću od -1.79E + 308 do 1.79E + 308 real Broj sa pokretnom preciznošću od -3.40E + 38 do 3.40E + 38 datetime Datum i vreme od 1. januara 1753. do 31. decembra 9999. sa korakom od3.33 ms smalldatetime Datum i vreme od 1. januara 1900. do 6. juna 2079. sa korakom od 1 min char Karakteri fiksne dužine sa maksimumom od 8 000 karaktera varchar Karakteri promenljive dužine sa maksimumom od 8 000 karaktera text Karakteri promenljive dužine sa maksimumom od 2^31 - 1 karaktera nchar Unikod podaci fiksne dužine sa maksimalnom dužinom od 4 000 karaktera nvarchar Unikod podaci promenljive dužine sa maksimalnom dužinom od karaktera^ 4 000
ntext
Unikod podaci promenljive dužine sa maksimalnom dužinom od 2^30 – 1 karaktera binary Binarni podaci fiksne dužine sa maksimalnom dužinom od 8 000 bajta varbinary Binarni podaci promenljive dužine sa maksimalnom dužinom od 8000 bajta image
Binarni podaci promenljive dužine sa maksimalnom dužinom od 2^31 – 1 bajta cursor Referenca na kursor sql_variant Tip podatka koji čuva vrednosti raznih tipova podataka, osim text, ntext, timestamp i sql_variant table Specijalan tip podatka koji čuva result set za kasnije procesiranje timestamp Unikatni broj koji se menja svaki put kada se radi promena nad vrstom. uniqueidentifier Globalni identifikator koji nikada ne može da se ponovi
SQL server takođe podržava korisnički definisane tipove podataka. Oni obezbeđuju mehanizam za definisanje imena tipa podataka koji je restriktivniji od ugrađenih tipova podataka. Baziraju se na ugrađenim tipovima podataka.
Tekstualni tipovi podataka
TIP PODATKA OPIS CHAR( ) Sekcija fiksne dužine od 0 do 255 karaktera VARCHAR( ) Sekcija promenljive dužine od 0 do 255 karaktera TINYTEXT String maksimalne dužine do 255 karaktera TEXT String maksimalne dužine do 65 535 karaktera BLOB String maksimalne dužine do 65 535 karaktera MEDIUMTEXT String maksimalne dužine do 16 777 215 karaktera MEDIUMBLOB String maksimalne dužine do 16 777 215 karaktera LONGTEXT String maksimalne dužine do 4 294 967 295 karaktera LONGBLOB String maksimalne dužine do 4 294 967 295 karaktera
Naredbe za definisanje podataka
Zagrade omogućavaju da se unese maksimalan broj karaktera koji će biti upotrebljen u koloni, na primer VARCHAR (20)
CHAR i VARCHAR su tipovi podataka koji se najčešće upotrebljavaju. CHAR je string fiksne dužine i najčešće se koristi kod podataka koji ne variraju u dužini, dok se VARCHAR koristi kod podataka koji mogu varirati u dužini. CHAR tip podatka je brži za procesiranje zato što su svi podaci u koloni iste dužine. VARCHAR je malo sporiji zbog proračunavanja dužine karaktera u koloni, ali čuva memorijski prostor. Koji ćemo tip izabrati, zavisi od konkretne situacije.
BLOB predstavlja Binary Large Object (veliki binarni objekat). I TEXT i BLOB su varijabilne dužine i služe da čuvaju velike količine podataka. Slični su većoj verziji VARCHAR tipa. Ovi tipovi podataka služe da sačuvaju velike količine informacija, ali se procesiraju mnogo sporije.
Numerički tipovi podataka
TIP PODATKA OPIS
TINYINT( )
-128 do 127 označeni 0 to 255 neoznačeni
SMALLINT( ) -32 768 do 32 767 0 do 65 535 neoznačeni^ označeni
MEDIUMINT( )
INT( ) - 0 do 4 294 967 295 neoznačeni2 147 483 648 do 2 147 483 647 označeni
BIGINT( ) -9 223 372 036 854 0 do 18 446 744 073 709 551 615 neoznačeni^ 775 808 do 9 223 372 036 854 775 807 označeni
FLOAT Mali broj u pokretnom zarezu DOUBLE( , ) Veliki broj u pokretnom zarezu DECIMAL( , ) Broj tipa DOUBLE sačuvan kao string, koji dozvoljava fiksan decimalni zarez
Normalno, integer ide od negativne do pozitivne vrednosti. Upotreba komande UNSIGNED pomera rang integer broja, tako da počinje od nule umesto od negativnog broja.
Datumski tipovi podataka - Date types
TIP PODATKA OPIS DATE Datum u formatu YYYY-MM-DD. DATETIME Datum i vreme u formatu YYYY-MM-DD HH:MM:SS. TIMESTAMP Datum i vreme u formatu YYYYMMDDHHMMSS TIME Vreme u formatu HH:MM:SS.
Ostali tipovi podataka
TIP PODATKA OPIS
ENUM ( ) Skraćenica za “ENUMERACIJU”, što znači da svaka kolona može da ima jednuod navedenih mogućih vrednosti.
SET
Slično tipu “ENUM”, osim što svaka kolona može više od jedne vrednosti sa liste mogućih vrednosti.
Naredbe za definisanje podataka
Numerički tipovi podataka
TIP PODATKA OPIS PLS_INTEGER Označena celobrojna vrednost u^ opsegu -2147483647 do 2147483647
NUMBER (precision, scale)
Od 1 x 10 -130^ to 9.99...9 x 10 125 pozitivni , od -1 x 10-130^ to 9.99...99 x 10 125 negativni i nula BINARY_FLOAT Mali broj u pokretnom zarezu^ (single-precision floating-point ) BINARY_DOUBLE Veliki broj u pokretnom zarezu (double-precision floating-point)
Za kolone u kojima treba sačuvati brojčanu vrednost dovoljno je navesti tip podataka NUMBER bez preciznosti i skale. Međutim, ako želimo da „formatiramo“ brojčanu vrednost onda to možemo uraditi tako što ćemo definisati preciznost (ukupan broj numeričkih vrednosti) i skalu (broj numeričkih vrednosti iza decimalne tačke). Maksimalni broj numeričkih mesta je 38. Umesto tačne preciznosti može se koristiti specijalni karakter „“ pa tako možemo pisati i NUMBER(, 6) gde se podrazumeva da je preciznost 38. PLS_INTEGER zauzima manje prostora za smeštaj vrednosti u bazi podataka, tako da se ovaj tip promenljive više preporučuje nego upotreba tipa NUMBER.
Datumski tipovi podataka - Date types
TIP PODATKA OPIS DATE Datum i vreme do nivoa sekunde TIMESTAMP Datum i vreme do nivoa delića sekunde INTERVAL YEAR (year_precision) TO MONTH
Vreme izraženo u godinama i mesecima gde year_precision je broj numeričkih vrednosti u granicama 0-9 (podrazumevana vrednost je
INTERVAL DAY (day_precision) TO SECOND (fractional_seconds_precision
Vreme izraženo u danima, satima, minutama i sekundama, day_precision je maksimalni broj numeričkih mesta u delu DAY (od 0 – 9 podrazumevana vrednost je 2) i fractiona_seconds_precision je maksimalni broj numeričkih mesta u delu SECOND (od 0 – 9, podrazumevana vrednost je 6)
Prilikom unosa datumske promenljive u neku tabelu koristi se funkcija za unos datuma TO_DATE koja ima format kao na sledećem primeru: TO_DATE(‘15/10/2012 15:45:33’, 'DD/MM/YYYY HH24:MI:SS'). Znakovi za odvajanje delova datuma (/:-) se mogu uzeti po želji, ali se mogu i izostaviti – važno je da se u stringu u kome je smeštena datumska vrednost znakovi za odvajanje delova datuma unesu na isti način kao i u stringu u kome je definisan format. Tako se datumska vrednost iz prethodnog primera može zapisati i u obliku: TO_DATE(‘20121015 154533’, 'YYYYMMDD HH24MISS').
Ostali tipovi podataka
TIP PODATKA OPIS BLOB Binary Large Object (do 8 Terabajta za Oracle verzije 9-10, a do 128 TB za 11g) BFILE Pokazivač na binarni fajl na disku ROWID Tip podataka koji koristi Oracle baza kako bi sačuvala adresu za svaki red XMLType XML podaci veličine do 4 gigabajta
BLOB tip podataka služi da sačuva ne-strukturirane binarne podatke u bazi. BFILE tip podataka čuva ne-strukturirane binarne fajlove van baze podataka u fajlovima operativnog
Naredbe za definisanje podataka
sistema, tako što se u koloni ovog tipa smešta pokazivač na binarni fajl u operativnom sistemu.
Oracle baza podataka koristi vrednosti tipa podataka ROWID interno za kreiranje indeksa. Svaki ključ u indeksu je povezan sa rowid koji pokazuje na početak traženog reda u tabeli radi bržeg pristupa podacima.
XMLType se može upotrebiti kao bilo koji drugi tip promenljive i upotrebljava se u kolonama tabela i u pogledima. Isto tako, korisniku se nudi i određeni broj funkcija koje rade sa XML podacima. Tako npr, funkcija extract može da izdvoji određeni čvor iz instance tipa XMLType. U upitima se koriste standardne SQL komande za ovaj tip podataka kao i za ostale tipove podataka
Navođenjem tipa podatka automatski se ograničava skup dozvoljenih vrednosti, odnosno određuje se domen [13], [16], [25], [27], [30]. Domen (engl. domain ) nekog svojstva predstavlja skup mogućih (dozvoljenih) vrednosti koje to svojstvo (atribut) može da ima. Domen ima sopstveno ime i pri tome više atributa mogu biti definisani nad istim domenom.
Napomena : Domen svojstva nije isto što i domen u matematici, gde predstavlja skup originala funkcije. Formalno gledano, atribut predstavlja funkciju koja preslikava skup entiteta u neki domen. Dakle, svaki atribut je opisan skupom parova (atribut, vrednost). Svaki radnik pojedinačno opisan je skupom {(idbr, 5932 ), (ime, Mitar ), (prezime, Vuković ), … (brod, 20 )}.
Definisanje domena je osnovni oblik definisanja integriteta podataka, ali se dodatno mogu definisati uslovi koje vrednosti moraju da zadovolje.
Domeni se često mešaju s tipovima podataka. To su dva različita pojma. Domen je uži pojam od tipa podataka jer definicija domena zahteva precizniji opis ispravnih, prihvatljivih vrednosti podataka. Na primer, domen kvalifikacija predstavlja stručnu spremu radnika. Ako se definiše kao podatak tipa Text, onda to može biti bilo koji tekst. Ali, ispravne su samo vrednosti iz skupa (NKV, KV, VKV, VS, VSS, MR, DR) ili (niža, srednja, viša, visoka, magistar, doktorat). Domen se ne može uvek svesti na nabrojiv skup vrednosti, ali se mogu definisati pravila kojima se određuje skup prihvatljivih vrednosti. Ali, domen nije ni prosta kombinacija tipa podataka i pravila za ispravnost podataka.
Tipovi podataka predstavljaju fizički pojam, dok je domen logički pojam. Ima smisla upoređivati atribute koji su definisani nad istim domenima, i nad njima se mogu obavljati i sve druge relacione operacije (unija, presek, diferencija, spajanje). Plata radnika i njegova šifra mogu biti tipa Number (broj). Nema nikakvog smisla upoređivati te dve vrednosti. Šifra radnika i šifra njegovog šefa ili rukovodioca odeljenja su atributi sa istim domenom i ima smisla obavljati relacione operacije nad njima.
Jedna od najvećih novina koje su donele relacione baze podataka jeste mogućnost prikazivanja nepostojećeg podatka čija vrednost je nedefinisana. To su NULL vrednosti i one ponekad moraju postojati [13], [16], [25], [27], [30].
Naredbe za definisanje podataka
problemom koji se rešava i koji su od značaja za rešenje problema. Ti kvaliteti nazivaju se osobine , svojstva ili atributi ).
Na primer, ako je reč o IS nekog preduzeća, za objekat čovek od značaja su nam osobine kao što su stručna sprema i radni staž, a kad bi se radio IS nekog sportskog društva, onda bi od značaja za čoveka bile osobine sport kojim se bavi, visina, težina i sl.
Osobine objekta koje nisu od značaja za rešenje problema se zanemaruju (apstrahuju, apstrahovanje podataka 6 ). Pošto za jedan problem može biti od značaja više raznih atributa istog ili raznih objekata, svaki atribut mora imati ime , a takođe i vrednost tj. kvantitativni odraz kvaliteta i predstavlja elementarni podatak. Atributsko ime je naziv određenog kvaliteta (svojstva objekta), a atributska vrednost je kvantitativna, brojna vrednost koja pripada izvesnom skupu vrednosti (domen). Svakom elementarnom objektu pripisuje se elementarni podatak koji ima samo jednu vrednost (skalar).
Jedan objekat može da karakteriše više atributa od važnosti za rešenje datog problema i oni se nazivaju elementarna obeležja. Elementarno obeležje je obeležje koje se dalje ne može dekomponovati, ili koje se u datom slučaju dalje ne dekomponuje na delove. To je odluka projektanta i zavisi od problema koji se rešava i načina korišćenja. Na primer:
Objekat: RADNIK Atributi: Br.Rad. Ime Pol Odeljenje Radni_staž Zapis: 53125 Ana Ž Prodaja 3G. 2M. 17D. Skup zapisa koji odgovaraju jednom prostoru objekata čini datoteku, i pri tome mora važiti sledeće:
(^6) Apstrakcija, zanemarivanje nebitnog, isticanje bitnog. Misaono izdvajanje nekih osobina i svojstava predmeta
od samog predmeta
Naredbe za definisanje podataka
Kolekcija podataka organizovanih za brzo pretraživanje i pristup, koja zajedno sa sistemom za administraciju, organizovanje i memorisanje tih podataka, čini sistem baze podataka. Iz ugla korisnika, podaci su na neki logički način povezani.
Baza podataka je logički integrisani skup podataka sa centralizovanim upravljanjem. Danas su dominantne relacione baze podataka koje predstavljaju skup vremenski promenljivih tabela [1], [2], [3], [4], [13], [14], [16], [25], [27], [30].
Relacija definisana na n skupova je podskup Dekartovog proizvoda tih skupova:
R D1u D2u ... u Dn
podskup sadrži one n-torke Dekartovog proizvoda koje zadovoljavaju zadatu relaciju. Redosled elemenata u jednoj n-torki je bitan, a redosled n-torki je proizvoljan.
Neka su dati skupovi A={1,2,3,4} i B={4,6,8} tako da za(aA) i (bB), i n neka je nad skupovima A i B zadata relacija:
R: A x B = {(a,b) | a = b/2} R = {(2,4),(3,6),(4,8)}.
Skupovi D1, D2,...,Dn nazivaju se domenima relacije R , dok broj domena određuje stepen relacije (unarna, binarna, n-arna relacija). Broj n-torki u relaciji naziva se kardinalnost.
Atribut relacije predstavlja imenovani domen relacije. Definisani su domeni - atributi: SIFRA = {123 ,234, 345} NAZIV = {stolica, sto} CIJENA = {100,200,300} i relacija:
PROIZVOD SIFRA u NAZIV u CIJENA.
Koncept atributa omogućava predstavljanje relacije kao tabele, pa se relacija PROIZVOD može predstaviti sledećom tabelom:
123 stolica 100 234 sto 200 345 sto 300
Relacija je osnovni element relacionog modela. U bazama podataka pojam relacija je u stvari sinonim, uz neka ograničenja za tabelu. E. F. Codd je u svom radu, kojim je po prvi put “promovisao” relacioni model, pod relacijom definisao pravougaono područje - tabelu koje se sastoji od kolona (atributa i vrednosti atributa - podataka) i redova (n-torki, odnosno slogova). Pošto je relacija skup, a svaka tabela nije, definišu se određeni uslovi koje tabela mora da zadovolji da bi bila relacija.
Tabela se definiše kao niz naziva kolona sa nula ili više redova (vrsta, n-torki, torki, slogova, zapisa) kojima su zadate vrednosti kolona. U jednoj bazi ime tabele je jedinstveno (ne mogu postojati dve tabele sa istim imenom). Svaka relacija se može prikazati kao tabela, ali svaka tabela nije relacija. Kada u relacionim bazama koristimo pojam tabele onda ustvari govorimo o relacijama, odnosno o tabelama koje zadovoljavaju sledeće uslove:
Kolone predstavljaju osobine objekata, i pri tome: