MYSQL tipovi podataka - značenje od TINYINT(1)

Pozdrav!

Dali mi neko može objasniti na koji način ovo radi?

Npr. tip podataka tinyint kad stavim u tinyint(1) kako onda u bazu pod taj tip podataka kad spremim broj 15 upiše ga a ne izbaci mi grešku?

Dali je tinyint([color=“Red”]1[/color]) 1 jel to označava dužinu stringa?

ili npr varchar() najveca dužina stringa 255 znakova a ja stavim varchar(400) i ono u bazu upiše text dužine od 400 znakova.

Moželi mi neko objasniti na koji način ovo radi?

Hvala!

TINYINT ti je spremnik od jednog otketa (bajta) i u njega možeš upisati cijeli broj između -128 i 127 (ili 0 i 255, ako ga navedeš kao UNSIGNED).

Za razliku od znakovnih tipova, kod deklaracije nekog atributa kao TINYINT se u zagradama navodi metapodatak o preferiranoj širini polja za prikaz sadržaja. To znači da će vraćeni SELECT sadržavati, osim samog broja, i podatak o tome da bi se broj trebao prikazivati u polju zadane širine uz popunjavanje prazninama s lijeva ukoliko za prikaz broja treba manje od tako predloženog broja znakova.

Hoće li aplikacija koja prikazuje podatke to tako i napraviti, ovisi o aplikaciji.

Stvar nema nikakve veze s tipom podatka – radi se samo o naputku o formatiranju prilikom prikaza.

opet ne kontam za sto sluzi ovaj broj [color=“Red”]1[/color] u tinyint([color=“Red”]1[/color]).

Kad oću da napravim npr. status korisnika u tablicu korisnici stavljam stupac

status tinyint(1) not null default 0,

i sad ako je status 1 korisnik je admin, ako je 0 član je, ako je 2 moderator je.

I sad sta mi znaci ovo u zagradama 1, kad bi stavio i 4 u zagradu polja tinyint opet sve bude isto.

Ne koristim MySQL ali pretpostavljam da je podatak o duljini za tip tinyint nebitan i ne koristi se.
Duljina je predefinirana i vjerojatno ga (skoro sigurno) možeš i izostaviti.

npr.

status tinyint not null default 0

[quote=“trnac”]Ne koristim MySQL ali pretpostavljam da je podatak o duljini za tip tinyint nebitan i ne koristi se.
Duljina je predefinirana i vjerojatno ga (skoro sigurno) možeš i izostaviti.

npr.

status tinyint not null default 0[/quote]

ako ne uneses duljinu baza avtomatski stavi na tinyint(3)

Prva rečenica tseregovog posta objašnjava što je taj 1.

Ako želiš ograničiti mogućnost unosa samo na 0, 1 i 2 onda napravi tip podataka enum:

status ENUM(  "0",  "1",  "2" ) NOT NULL

[quote=“eke777”]Prva rečenica tseregovog posta objašnjava što je taj 1.

Ako želiš ograničiti mogućnost unosa samo na 0, 1 i 2 onda napravi tip podataka enum:

status ENUM(  "0",  "1",  "2" ) NOT NULL

[/quote]

Pa zar nije bolje u tinyint() radi brzine, a možda cu nekad stavljati status i 3,4,5,6,7

sve zavisi ocul dodavati vise korisnicki grupa npr ako je u korisnika u status spremljena 0 on je obični član, ako je 1 on je admin, ako je 2 on je opci moderator, ako je 3 moderator, ako je 4 viši član, ako je 5 premium korisnik, itd

Tseregove postove treba čitati malo laganije… :slight_smile:

Ono što on kaže (ni ja nisam na prvu shvatio) je da broj u zagradi znači samo format prikaza.

Npr, ako postoje zapisi u tablici, brojevi 2, 22 i 222
Ako je tinyint(1), prikaz kod selecta je:
2
22
222

Ako je tinyint(3), prikaz je (_ označava prazno mjesto):
__2
_22
222

Ako je tinyint(2), prikaz bi trebao biti:
_2
22
222

Tsereg će reći jel’ dobro. :slight_smile:

Radi brzine mislim da je ista stvar iako ako već koristiš “enum” onda je bolje napraviti opisna polja (admin, user, moderator, …). Predložio sam enum jer sam mislio da pitaš kako ograničiti unos na bazi.

Onaj “1” je sada još bolje objasnio trnac, a u praksi ćeš to najlakše vidjeti ako na polje tinyint postaviš “zerofill”.

Ja za ovu foru nisam niti znao dok nisam pročitao pitanje. Onda sam otišao naprosto na dokumentaciju:

http://dev.mysql.com/doc/refman/5.6/en/numeric-types.html
,

i pročitao poglavlje “Numeric Type Attributes” nešto niže na linkanoj stranici.

To vam je najlakši način da ispadnete pametni. :smiley:


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja