Professional Documents
Culture Documents
Maturski Rad Tipovi Podataka U MYSQL
Maturski Rad Tipovi Podataka U MYSQL
Mentor: Učenik:
Dejan Popović dipl. Ing. Đorđe Ristić, IVe-2
2
1. UVOD
Od samog početka korištenja računara , obrada različitih vrsta podataka bila je jedan od
osnovnih zadataka. Kada želimo da imamo kvalitetne informacije o svim segmentima našeg
poslovnog ili čak privatnog života najbolje je da na određen način organizujemo sve
podatke koje mogu da nam pruže informacije. Najjednostavnije bi bilo da podaci za svaki
pojedini element budu organizovani tako da se mogu smjestiti u tabele sa zaglavljem.
A veoma često može da bude više tabela koje bi obuhvatili sve segmente našeg
interesovanja. Svi ti segmenti se nerijetko zbog svoje prirode moraju organizovati u
posebne tabele , a te tabele se mogu povezivati preko određenih zajedničkih elemenata.
Skup više takvih tabela koje služe jednom zajedničkom cilju zajedno sa njihovim
elementima naziva se baza podataka. Jednostavno rečeno baza podataka je softwerska
konstrukcija namjenjena za pohranjivanje , analizu i pretraživanje grupe srodnih i
povezanih podataka , kao što su podaci o kupcima , pacijentima , telefonskim brojevima i
sl. Tokom razvoja računara razvili su se mnogi sitemi za upravljanje bazama podataka neki od
njih su Microsoft Access, Foxpro, XML a jedan od najpoznatijih je MySQL.
3
2. ISTORIJA BAZA PODATAKA I SQL JEZIKA
Prvi sistemi za upravljanje bazama podataka razvijeni su 1960-ih. Začetnik u tom polju
je Charles Bachman . Njegovi rani radovi pokazuju da mu je bio cilj stvaranje
djelotvornije upotrebe novih uređaja s direktnim pristupom skladištenja koji su postali
dostupni. Do tada se obrada podataka trmeljila na bušenim karticama i magnetnim
trakama, pa je tako serija obrada bila dominantna aktivnost. Dva su se ključna modela
podataka pojavila u to vrijeme : CODASYL je razvio mrežni model baziran na
Bachamanovim idejama , North American Rockwell je razvio hijerarhijski model.
Odosni model je predložio E.F. Codd 1970. godine. On je kritikovao postojeće modele
zbog apstraktnih sa opisima mehanizma fizikalnog pristupa . Oracle i DB2 su se pojavili
tek oko 1980. godine.
Tokom 1980-ih istraživačka aktivnost se usredočila na sustave distributivnih baza
podataka i na strojeve baza podataka , međutim taj je napredak imao mali učinak na
tržište. Druga važna zamisao bio je funkcijonalni model podataka, ali on nije na
zadobio veliku pažnju.
U 1990-im pažnja se prebacila na baze podataka orjentisane prema objektu a u 21. vijeku
Najviše su se razvijale XML baze podataka. One ciljaju ukloniti trdicijonalnu podjelu
između dokumenata i podataka , dopuštajući svim organizacijskim I informacijskim
resursima da se drže na jednom mjestu bez obzira da li su visoko struktuirani ili ne.
4
3. UOPŠTENO O SQL-U I SISTEMU MYSQL
3.1. SQL
SQL (engl. Structured Query Language) je relacioni upitni jezik (ANSI i ISO standard).
Relacije se kreiraju jednom naredbom i odmah su dostupne, što ga čini jednostavnim za
korišćenje. Uniforman je, jer se svi podaci i rezultati operacija prikazuju u vidu tabele i
omogućava interaktivno i klasično programiranje. Sve do verzije SQL:1999 ovaj jezik je bio
neproceduralan, odnosno njime se specificiralo šta, a ne i kako nešto treba uraditi.
3.2. MySQL
5
4. NAČIN FUNKCIONISANJA MYSQL-A
MySQL softver se sastoji od MySQL server-a, nekoliko dodatni utility programa
koji služe za olakšavanje administracije baza podataka, takođe dolaze i dodatni programi koji
su potrebni za rad servera. Srce sistema naravno čini MySQL server, on je ustvari i menadžer ́
sistema baza podataka. Kroz njega prolaze sve instrukcije korisnika koje vrše upravljanje nad
bazom podataka. Na primer ako korisnik želi da napravi novu bazu podataka poslaće MySQL
serveru sledeću poruku “create a new database and call it new data “ MySQL server će tada u
svom folderu napraviti podfolder koji će nositi naziv newdata . Ako tu novu bazu želite još da
proširite, vođeni prethodnim primerom, poslaćete novu poruku odnosno komandu MySQL
serveru sa tačnim odredištima gde želite da se podaci dodaju. Ali pre nego što možemo da
komuniciramo sa serverom moramo da pokrenemo isti i da proverimo da li je podešen da
očekuje zahteve. U većini slučajeva MySQL server se pokreće zajedno sa računarom i radi
neprestano. Ovakav režim rada je tipičan za Web sajtove. Naravno nije obavezno da se server
pokreće sa uključivanjem računara uvek postoji mogućnost manuelnog uključivanja kada
želite da pristupite vašoj bazi podataka. Kada je pokrenut MySQL server konstantno očekuje
poruke koje su upućene njemu.
6
5. TIPOVI PODATKA
Da bismo stavili podatke u bazu, potrebne su nam tabele. One prihvataju podatke na nivou
redova i kolona. Jedna kolona sadrži jedan tip podatka. MySQL podržava veliki broj tipova
podataka koji se mogu razvrstati u tri kategorija:
Numeričko tipovi
7
6. NUMERIČKI TIPOVI
Numerički tipovi su tipovi koji prihvataju isključivo brojne vrednosti, bilo da su u pitanju celi
brojevi ili brojevi sa decimalnim zarezom.
Najpoznatiji numerički tip je int (integer). Ovo je celobrojni tip koji može prihvatiti vrednost
od -2147483648 do 2147483648 ukoliko je označen ili od 0 do 4294967295 ako je
neoznačen. Označeni brojevi su oni koji mogu imati i negativnu vrednost, dok neoznačeni
prihvataju samo pozitivnu. Ovaj tip ima četiri bajta, što znači da njegovu maksimalnu veličinu
dobijamo tako što izbrojimo bajtove i pomnožimo sa brojem bita (jedan bajt sadrži osam bita),
a onda sve to stavimo kao eksponent broju dva.
Na primer:
int prihvata 4 bajta. Dakle, 4 bajta puta 8 bita je 32 bita. Dva na tridesetdrugi je 4294967295.
Prilikom inicijalizacije ovih tipova u tabeli, moguće je dodati im i neke karakteristike vezane
za samo prikazivanje. Možete im ograničiti kolčinu prikazanih cifara:
int(2)
…će prikazivati samo dve cifre od kompletnog broja (iako će u memoriji biti uskladišten ceo
broj).
zerofill – dodaje nule kako bi se dopunio broj, do željenog broja cifara. Na primer,
ako je tip int(5), a uneta vrednost 1, konačni broj će biti 00001.
unsigned – postavljamo ovu opciju, ukoliko želimo da broj bude neoznačen. U tom
slučaju, broj ne može biti negativan.
Osim celih, MySQL poznaje i brojeve sa pokretnim zarezom. Ovde razlikujemo nekoliko
tipova. Float, decimal double i bit.
Float
2.3
100,45
Float takođe prihvata parametre, pri čemu je moguće formatirati format decimalnog zapisa.
8
Na primer:
ako kao tip stavimo float(6,2), vrednost 1525 biće emitovana kao 1525.00 (dakle, prvi broj je
broj cifara, dok je drugi broj, broj decimala).
Na isti način funkcionišu i tipovi double i real, s tim što imaju veličinu od 8 bajtova i duplo
veću preciznost. Decimal rukuje brojevima sa maksimalnom preciznošću i mora prihvatiti
parametre.
Na primer:
decimal(5,2)
Ovaj broj prihvatiće broj do pet cifara, koji može imati do dve decimale. Dakle, ako unesemo
broj 123.45, biće prihvaćen. Broj 123 će biti zapisan u bazu sa dodatnim decimalama
(123.00), dok će broj 123.119 biti zapamćen kao 123.12. Brojevi preko pet cifara neće biti
prihvaćeni i server će prijaviti grešku.
Maksimalan broj cifara u decimal tipu je 65, pri čemu, sa desne strane zareza može biti ne
više od 30 cifara (decimal(65,30)).
Bit
Ovo je tip koji služi za skladištenje jednobitne vrednosti 1 ili 0. Kažemo „služi za”, zato što
ovaj tip nije uistinu jednobitni tip, već samo tako reprezentuje podatak. Ovaj tip isprva je bio
skladišten u bazi kao tinyint(1), da bi od verzije 5.0.3 MySQL-a postao zaseban binarni tip.
Tip bit služi isključivo za skladištenje logičke vrednosti (true ili false, 1 ili 0, isključeno ili
uključeno), pa tako može prihvatiti ili brojnu vrednost (1 / 0) ili Boolean vrednost (true /
false).
9
7. TIPOVI ZA DATUM I VREME
U MySQL-u razlikujemo pet tipova za rukovanje vremenom: date, datetime, time, timestamp
i year.
Date
Podrazumeva sve datume od prvog januara hiljadite godine do 31. decembra 9999. godine.
Kada jednom definišemo kolonu, vrednost možemo uneti kroz dva različita tipa. Datum (na
primer funkcijom curdate()) ili string (2009-10-02).
Datetime
Tip funkcioniše slično kao date, s tim što može da prihvati i vreme za određeni datum.
Takođe može prihvatiti vrednost kroz ekvivalentan tip (na primer funkcijom now()) ili
stringom (‘GGGG-MM-DD SS:MM:ss’).
Timestamp
Ovaj tip predstavlja broj sekundi koje su protekle od prvog januara 1970. godine. Ovaj tip se
često koristi za merenje vremena neke operacije.
Time
Prihvata vreme od -838:59:59 do 838:59:59 po šemi SS:MM:ss. Kao i ostali formati datuma i
ovaj tip može prihvatiti vrednost „zapakovanu” u string.
Year
Konačno, ovaj tip predstavlja godinu (u zavisnosti od parametra pri definiciji) u periodu od
1901 – 2155. Vrednost može biti uneta u vidu stringa ili datuma.
10
8. ZNAKOVNI ILI TEKSTUALNI TIPOVI - STRINGOVI
MySQL poznaje pet tekstualnih tipova: char, binary, blob, enum i set, od kojih se najviše
koriste char i blob.
char/varchar
Ovo je tip koji se veoma često koristi. U pitanju je tip koji prihvata niz karaktera (bajtova). Pri
kreiranju prihvata parametar koji označava koliko će bajtova prihvatati kolona, odnosno polje:
char(5)
Ovaj tip prihvata pet karaktera i zauzima isto toliko bajtova (odnosno, duplo, ukoliko su u
pitanju unicode karakteri).
To znači da, kada napravimo ovakav tip i u njega smestimo vrednost ‘x’, on će tu vrednost u
bazi upamtiti kao x, ali će ipak zauzeti i prostor u memoriji za ostala 4 karaktera:
varchar(5)
Ovako definisan tip takođe prihvata do 5 bajtova/karaktera, ali pri tom, ukoliko karaktera ima
manje od pet, biće zauzeto prostora u memoriji samo za toliko koliko iznose podaci:
‘a’ = 1 bajt
‘abcde’ = 5 bajtova
binary/varbinary
Ovaj tip podatka funkcioniše isto kao i char i varchar, ali, umesto kao nizove karaktera, on
stringove beleži kao binarne vrednosti, zbog čega ne postoji kontrola nad kodnim rasporedima
i sortiranju:
varbinary(5)
Ova dva tipa možete shvatiti kao neku vrstu nadogradnje char i binary tipova. Njih koristimo
ukoliko želimo da rukujemo sa stvarno velikim vrednostima. Osnovna razlika između
blob/text i binary/char je u tome što blob i text ne smeštaju vrednost u tabele u kojima se
nalaze, već u zasebna skladišta (takođe tabele, ali nevidljive). Zbog toga, umesto 65535
bajtova, koliko mogu prihvatiti char i binary tipovi, ovaj tip može prihvatiti mnogo veće
podatke.
11
Ne zaboravite da ove veličine ne važe ukoliko koristite unicode karaktere. U tom slučaju, ove
količine se smanjuju duplo (jer je veličina jednog unicode karaktera dva bajta).
Enum
Enum je tip koji prihvata samo neku od vrednosti unapred definisanu u definiciji samog tipa:
Ako je kolona ovako definisana, vrednost u polju može biti samo jedan od navedenih
meseci. Ovo je zapravo niz vrednosti i svaka od njih je indeksirana određenim brojem, pa se
vrednosti iz liste mogu prezentovati i brojevima. Ali, i pored toga, ponavljanje vrednosti u
listi nije dozvoljeno.
Set
Ovaj tip funkcioniše slično enum-u, ali, za razliku od njega, jedna vrednost može sadržati više
od jedne. Na primer ako je definicija kolone:
set(’a’ , ’b’) onda vrednost te kolone može biti ili ’a’ ili ’b’ ili ’a’,’b’
12
9. ZAKLJUČAK:
Generalna podela tipova podataka u MySQL-u svodi se na: brojeve (numeričke tipove), tekst
(stringove) i datume (datetime). Ali, ovi tipovi imaju mnoštvo podtipova i upravo se na
rukovanju tim podkategorijama bazira dobra tabelarna konstrukcija u MySQL-u i bazama
podataka uopšte. Dobar odabir tipa podatka je veoma bitan zbog uštede resursa zato što bi
bilo nepotrebno da MySQL ima rezervisanu memoriju za kojom nema potrebe i na taj način bi
se samo bespotrebno opterećivao sistem. Isto tako mora se obratiti pažnja da tip podatka ne bi
ograničavao mogućnost prihvatanja podataka koji su nam neophodni.
13
LITERATURA:
https://www.hdonweb.com/programiranje/mysql-tipovi-podataka-data-types
https://www.icentar.ba
https://edukacija.rs/it/baze-podataka/tipovi-podataka
Uvod u MySQL 8 – Charles Bell
14
15