miffmedia.com

Tipovi podataka u MySQL - Tipovi kolona ENUM i SET

MySQLOva dva tipa se mogu koristiti za skladistanje vrednosti koje pripadaju datom skupu. Moguce vrednosti se deklarisu u vreme kreiranja tabele, nakon toga se u tu kolonu mogu ubaciti samo te vrednosti.

ENUM - ovaj tip kolone ima primenu ako zelimo recimo da se u koloni nadje samo jedna od dozvoljenih vrednosti, koje se zadaju u vreme kreiranja tabele.

Primer:

CREATE TABLE test_enu (
number ENUM("jedan", "dva", "tri") NULL)


Dakle ovim smo deklerisali kolonu ENUM da moze da sadrzi vrednosti iz sledeceg niza: NULL," ", "jedan", "dva" i "tri".
Ajde da vidimo sta se dogadja kada kada se ubace podaci, neke ispravne, a neke ne:

INSERT INTO test_enu VALUES (NULL), (" "), ("jedan"), ("tri"), ("pet")


Posto vrednosti " " i "pet" nisu iz skupa dozvoljenih clanova, u prikazu ce ispisati nulu. Tj. 0 kao pokusaj da se unese ilegalna vrednost.

SET - je tip kolone koji je veoma slican kao i ENUM. Razlika je u tome sto ENUM moze da sadrzi samo jednog od svojih clanova, SET moze vise njih pa cak i sve.

Primer:

CREATE TABLE hobi (
izbor SET ("muzika", "film", "sport", "internet", "pozoriste") NULL)



Da bi ste podatke ubacili u vrste, mozete da definisete kolonu SET, koja nema vrednost, koja ima jednu od mogucih vrednosti, ili koja ima vise vrednosti.

INSERT INTO hobi VALUES (" "), ("internet"), ("film", "muzika")



Prva stavka (prvi par zagrada) dovodi da u prvu vrstu nema nicega, u drugu samo jedna stavka i u trecu vrstu dve stavke.
+-------------------------+
| hobi |
+-------------------------+
| |
| internet |
| film, muzika |
+-------------------------+

Sledi Tipovi podataka u MySQL - Datum i vreme

Tipovi podataka u MySQL - Tipovi kolona BLOB i TEXT

MySQL Ovo su tipovi kolona koji su namenjeni skladistenju velikih kolicina binarnih i tekstualnih podataka. Koriste se za skladistenje binarnih podataka, slika, kompresovanih datoteka... Ovi tipovi se koriste kada je potreban veliki prostor za skladistenje.

BLOB - je skracenica za binary large object i ova familija (TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB ) tipova je namenjena skladistenju binarnih podataka (bilo koji podatak koji se predstavi u binarnom obliku).

TEXT - se koristi za velike kolicine teksta. U sustini BLOB i TEXT su isti tipovi i jedina razlika je kod poredjenja i sortiranja. BLOB pravi razliku kod malih i velikih slova, posto su binarne, dok se kod vrednosti tipa TEXT ta razlika ne pravi.

*Sledi Tipovi podataka u MySQL - Tipovi kolona ENUM i SET

Tipovi podataka u MySQL - Atributi numerickih kolona

Prilikom dekleracije numerickih kolona, zadaju se imena kolona i definisu atributi tih kolona.
Sintaksa:

ime_kolone tip_kolone [atribut_kolone] [generalni_atribut]



Specifikacija za atribut_kolone

UNSIGNED - kolona tipa integer; ne dozvoljava negativnu vrednost
ZEROFILL - Svi numericki tipovi kolona; vrednosti kojih nema prikazuju se kao 0
AUTO_INCREMENT - Celobrojne kolone; svaki put se NULL vrednost povecava za 1

UNSIGNED sam vec objasnio ovde, dakle u ovakve kolone moze da se ubacuju samo pozitivne vrednosti. Koristi se za povecanje opsega pozitivne vrednosti.

ZEROFILL ovaj atribut se moze koristiti kod bilo kog numerickog tipa kolona. Kada se prikazuju vrednosti kolona koje imaju zadat ovaj atribut, izlaz se popunjava nevazecim nulama do sirine kolone.
Primer, ako kreirate ovu tabelu:

CREATE TABLE mali_test (
ceo INT(5) ZEROFILL,
raz FLOAT(8,6) ZEROFILL
)


i podatke ubacite na ovaj nacin:

INSERT INTO mali_test
VALUES
(20, 3.1234),
(1000, 2345.123),
(100000, 2.7)


Prikaz sadrzaja u tabeli bi bio nalik ovome:
Slika

Obratite paznju da su celobrojne vrednosti popunjene vodecim nulama, osim u poslednje dve vrste, gde je vrednost sira od 5. Kod kolona sa pokretnim zarezom, fiksiran je broj decimala, pa se nule dodaju sa desne strane.

AUTO_INCREMENT ovaj atribut se koristi za generisanje jedinstvenih identifikatora, koji se sam podesava.
Recimo da hocete tabelu ugovora sa jedinstveno numerisani (isti broj za ugovor se vise ne moze koristiti)

CREATE TABLE ugovori (
ugovor_br INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
kol DECIMAL(9,2))
AUTO_INCREMENT = 1000000


Da bi se oslikalo kako funkcionise, upit:

INSERT INTO ugovori
VALUES
(NULL, 0.99),
(NULL, 6.50),
(NULL, 1.50)


U polje ugovor_br, koje je definisano kao AUTO_INCREMENT, ubacena vrednost NULL, tako da se njegova vrednost automatski podesava.

*Sledi Tipovi podataka u MySQL - Tipovi kolona sa stringove

Tipovi podataka u MySQL - Numericki tipovi kolona

MySQL moze da sadrzi i celobrojne vrednosti (koji nemaju decimalni deo) i brojeve sa pokretnim zarezom (sa decimalnim delom).

Ovo je tabela koja najbolje oslikava numericke tipove.
(PS najbolji program za pravljenje tabela je neki Office Word alat,shit+Print Screen, pa crop u nekom image alatu[wink])

Numericki tipovi

INT familija tipova bi mogla da ima upotrebu recimo, za predstavljanje broja artikla u korpi, broj ljudi u listi sa komentarima itd.
FLOAT, DOUBLE i DECIMAL su i familije tipova sa pokretnim zarezom, moglo bi da se koristi sa predstavljanje cena artikla, precizno rastojanje izmedju dve tacke...

Kreiramo tabelu koja ce da pojasni(nadam se[wink]):

CREATE TABLE korpa
(
kupac_br INT UNSIGNED,
artikl_br INT UNSIGNED,
reg_artikl SMALLINT,
cena_artikl DECIMAL(6,2)
)



Idemo red po red...
kupac_br INT UNSIGNED, ova kolona deklarise da je u pitanju kolona kupac_br, tipa INT i da je duzina tog broja 4 bajtova. Ovde postoji dodatak (atribut) UNSIGNED, i odnosi se da nije moguce ubacivati negativne brojeve(u tabeli iznad poz:/neg:).

reg_artikl SMALLINT, kolona je tipa SMALL_INT, ona ima atribut SIGNED (nije deklarisano UNSIGNED), i prema tabeli gore moze da sadrzi i negativne i pozitivne borjeve u datom opsegu.

cena_artikl DECIMAL(6,2), je deklerisana kao DECIMAL, i ovakve kolone mogu da sadrze do M+2 karaktera, ukljucujuci same cifre, decimalnu tacku i znak minus. Nakon decimalne tacke bice zadato D decimalnih mesta.

*Sledi Tipovi podataka u MySQL - Atributi numerickih kolona

Tipovi podataka u MySQL - uvod

Termin tip podataka ukazuje na to kako MySQL pretstavlja i rukuje podacima. Postoji i termin tip kolone koji ukazuje na dekleraciju kolone u tabeli. Ako ce mo striktno, tipovi podataka se razlikuju od tipova kolona.

MySQL rukuje sledecim tipovima podataka:
* Numericke vrednosti
* Vrednosti tipa string
* Vrednosti za datum i vreme
* Vrednosti tipa null

Za svaki tip podataka, postoji nekoliko tipova kolona koje se mogu koristiti.

CREATE TABLE ime_tabele (
ime_kolone tip_kolone [atributi],
..........
)


Daklem, deklerisali smo ime tabele u bazi, slede zagrade koje sadrze listu dekleracija kolona, koje su medjusobno razdvojene zarezima(ako ih ima vise, naravno). Svaka dekleracija kolone ima ime kolone, tip kolone i opcionalno neke dodatne atribute.

Atributi obicno sadrze specifikaciju NULL i NOT NULL, ovo moze d se primeni na bilo koji tip kolone, i koja kazuje da li moze da se u toj koloni nadje vrednost NULL. Jako je bitno, da NULL nije 0 (nula), vise je "bez vrednosti". Ako pokusate aritmeticke operacija sa vrednostima NULL rezultat ce uvek biti NULL.

Jos jedan atribut koji se moze koristiti je i DEFAULT, kojim se definise podrazumevana vrednost za tu kolonu.

Izgled jedne kolone u skladu sa ovim bi bila:
(Nije dozvoljena vrednost NULL, ali se kod umetanja vrste kao podrazumevana vrednost zadaje 1)

moja_kolona INT NOT NULL DEFAULT 1



Postoje i atributi koji su vezani za odredjeni tip kolone, AUTO_INCREMENT za kolone sa celobrojnim vrednostima, ili BINARY kod kolone tipa VARCHAR.

*Sledi Tipovi podataka u MySQL - Numericki tipovi kolona