Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 15

JU TŠC ZVORNIK

Maturski rad iz baza podataka


Tipovi podataka u MYSQL

Mentor: Učenik:
Dejan Popović dipl. Ing. Đorđe Ristić, IVe-2

Zvornik, jun 2020. god.


SADRŽAJ
Strana
1. Uvod........................................................................................................................................3
2. Istorija baza podataka i SQL jezika........................................................................................4
2.1. Istorija baza podataka......................................................................................................4
2.2. Istorija SQL jezika...........................................................................................................4
3. Uopšteno o SQL-u i MySQL sistemu.....................................................................................5
3.1. SQL..................................................................................................................................5
3.2. MySQL............................................................................................................................5
4 Glavne karakteristika MySQL.................................................................................................6
5. Način funkcionisanja MySQL-a.............................................................................................8
1. Uvod........................................................................................................................................3
2. Istorija baza podataka i SQL jezika........................................................................................4
2.1. Istorija baza podataka......................................................................................................4
2.2. Istorija SQL jezika...........................................................................................................4
3. Uopšteno o SQL-u i MySQL sistemu.....................................................................................5
3.1. SQL..................................................................................................................................5
3.2. MySQL............................................................................................................................5
4. Način funkcionisanja MySQL-a.............................................................................................6
5. Tipovi podataka.......................................................................................................................7
6. Numerički tipvi.......................................................................................................................8
5. Tipovi za datum i vreme.......................................................................................................10
6. Znakovni ili tekstualni tipovi - stringovi...............................................................................11
5. Zaključak...............................................................................................................................13
6. Literatura...............................................................................................................................14

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

2.1. Istorija baza podataka

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.

2.2. Istorija SQL jezika

Tvorac SQL-a je Donald Chamberlin, a nastao je u IBM-ovoj istraživačkoj laboratoriji (IBM


Research Laboratory) u San Jose-u, Kalifornija 1974. godine. Jezik se u početku zvao
SEQUEL (engl. Structured English Query Language) i predstavljao je programski interfejs
(API) za System R, prototipski sistem za upravljanje bazom podataka (SUBP) koji se razvijao
kao deo istraživačkog projekta pod istim nazivom.

Pojava komercijalnih relacionih sistema uvećala je značaj i ubrzala proces standardizacije


relacionog upitnog jezika. Prva etapa tog procesa završila se 1986. godine usvajanjem SQL-a
kao standardnog relacionog upitnog jezika. Ta prva verzija SQL standarda je poznata pod
nazivom SQL-86. Njom su standardizovane osnovne karakteristike SQL-a kao deklarativnog
relacionog upitnog jezika. Međutim, mnoge bitne karakteristike jezika ostale su
nestandardizovane. To je dovelo do revizija standarda, koji je usvojen 1989. godine i kojom
su standardizovane karakteristike koje se odnose na očuvanje integriteta baze podataka i
povezivanje sa klasičnim programskim jezicima. Ta verzija SQL standarda poznata je pod
nazivom SQL-89. 1992. godine usvojena je sledeća bitna revizija standarda, poznata pod
nazivom SQL-92 ili SQL-2, kojom je SQL zaokružen kao programski jezik, a obim standarda
uvećan šest puta u odnosu na polaznu verziju. Naredna verzija SQL standarda usvojena je
1999. godine.

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

Za dodavanje, pristupanje i obrađivanje podataka u bazama podataka potreban je sistem za


upravljanje kao što je MySQL. Budući da se računari odlično snalaze pri obradi velikih
količina podataka, sistemi za upravljanje bazama podataka imaju jednu od centralnih uloga u
računarstvu, kao samostalni alati ili kao deo drugih aplikacija. MySQL se dobro snalazi i sa
relacijskim bazama podataka. Relacijska baza podataka je baza podataka koja podatke
pohranjuje u odvojene tabele umesto u jednu tabelu. Ovo omogućuje brži i fleksibilniji rad sa
bazama podataka. Tabele su povezane definisanim relacijama što omogućuje kombinovanje
podataka iz nekoliko tabela u slučaju da postoji zahtev za to. Reč SQL u MySQL znači
"Structured Query Language" (strukturni jezik za pretraživanje) – najčešći standardizovan
jezik za pristupanje bazama podataka.
MySQL je open-source proizvod, što znači da je dozvoljeno svakome da ga koristi i
prilagođava za svoje potrebe. Svakome je omogućen download MySQL sa Interneta i
korišćenje bez obveze plaćanja. MySQL spada pod GLP (GNU General Public License).
Takođe postoji MySQL Enterprise verzija programa koja nije besplatna i koja nudi dodatne
opcije naprednim korisnicima.

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

 Tekstualni ili znakovni tipovi

 Tipovi za datum I vreme

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.

Ostale varijacije tipa int:

 tinyint – 1 bajt : od -128 do 128 (neoznačeno do 256)


 smallint – 2 bajta : od -32768 do 32767 (neoznačeno do 65535)
 mediumint – 3 bajta : od -8388608 do 8388607 (neoznačeno do 16777215)
 bigint – 8 bajtova : od -9223372036854775808 do -9223372036854775807
(neoznačeno do 18446744073709551615)

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

Ovo je osnovna verzija broja sa pokretnim zarezom, koja podrazumeva jednostruku


preciznost. Ova preciznost obezbeđuje četiri bajta za vrednost.

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)

blob (binary large object)/text

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.

Blob i text takođe imaju podtipove:

  tinytext / tinyblob – 255 karaktera/bajtova


  text / blob – 65535 karaktera/bajtova
  mediumtext / mediumblob – 16,777,215 karaktera/bajtova
  longtext / longblob – 4,294,967,295 karaktera/bajtova

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:

enum(‘januar’, ‘februar’, ‘mart’, ‘april’, ‘maj’, ‘jun’)

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.

Jedan enum tip može prihvatiti do 65,535 vrednosti.

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

You might also like