MySQL tutorial: Adattípusok

MySQL tutorial: Adattípusok

Az előző részben már láthattuk, hogyan hozhatunk létre, illetve törölhetünk adatbázisokat a CREATE DATABASE és a DROP DATABASE parancsokkal. De ez még nem elég ahhoz, hogy adatokat tároljunk adatbázisunkban, ugyanis az adatbázisokon belül több táblát is készíthetünk, amelyek majd adatainkat fogják tartalmazni.

Egy táblát úgy képzelhetünk el, mint egy oszlopokból és sorokból álló egyszerű táblázatot, ahol az egyes oszlopokban szereplő adatok különböző típusúak lehetnek. A táblák egyes sorait rekordoknak nevezzük.
Mielőtt elkészítenénk első táblánkat, vessünk egy pillantást az MySQL adattípusokra. Három fő csoportba sorolhatjuk őket: numerikus, dátum és idő, valamint szöveg típusokat különböztetünk meg. Ezen típusok mindenikének altípusai vannak, amelyek méretben különböznek egymástól, dátum és idő típusoknál pedig formátumban.

Numerikus típusok:

A numerikus adattípusoknál az nagyon fontos, hogy megértsük, bármelyik INTEGER (egész) két féle lehet: SIGNED vagy UNSIGNED (előjeles vagy előjel nélküli) A különbség a kettő között az, hogy ha egy adattípusunk előjeles, akkor negatív számokat is tárolhatunk benne, ha pedig előjel nélküli, akkor kétszer akkora számokat tárolhatunk benne, mint előjeles változatában. Ha a táblák készítésekor nem mondjuk meg, hogy milyen legyen, előjeles lesz.

A leggyakrabban használt numerikus adattípusok és az extrém értékek, amiket bennük tárolhatunk:

TINYINT – 1 byte
SIGNED – minimum: -128 maximum: 127
UNSIGNED – minimum: 0 maximum: 255

SMALLINT – 2 byte
SIGNED – minimum: -32768 maximum: 32767
UNSIGNED – minimum: 0 maximum: 65535

MEDIUMINT – 3 byte
SIGNED – minimum: -8388608 maximum: 8388607
UNSIGNED – minimum: 0 maximum: 16777215

INT – 4 byte
SIGNED – minimum: -2147483648 maximum: 2147483647
UNSIGNED – minimum: 0 maximum: 4294967295

BIGINT – 8 byte
SIGNED – minimum: -9223372036854775808 maximum: 9223372036854775807
UNSIGNED – minimum: 0 maximum: 18446744073709551615

Ha tizedes számokat szeretnénk tárolni, akkor használjuk a FLOAT adattípust vagy ha ennél nagyobb tárolóra van szükségünk, akkor a DOUBLE() lesz a tuti választás.

A szövegtípusok:

Talán a leggyakrabban használt típus a VARCHAR(), amelynek maximális hossza 255 karakter lehet. Előnye más szövegtípussal szemben abban rejlik, hogy a táblák készítésekor megadhatjuk hosszúságát. Egy másik, gyakran felbukkanó szövegtípus a TEXT, amelyben 65,535 karakternyi szöveget tárolhatunk. Hosszát nem állíthatjuk. Abban az esetben, ha a VARCHAR() típus hosszának nagyobb értéket adunk, mint 255, akkor az automatikusan TEXT típussá konvertálódik. Ha ennél többre van szükségünk, akkor használjuk a LONGTEXT típust, amely maximális hossza 4,294,967,295. Ezeken kívül talán még a MEDIUMTEXT típust érdemes megemlíteni, amely maximális hossza 16,777,215 lehet.

Dátum és idő típusok

DATE: YYYY-MM-DD
DATETIME: YYYY-MM-DD HH:MM:SS
TIMESTAMP: YYYY-MM-DD HH:MM:SS
TIME: HH:MM:SS
YEAR: YYYY

A MySQL egy rakás adattípust tesz elérhetővé a felhasználók számára, nekünk csak annyi a dolgunk, hogy a számunkra megfelelőt válasszuk ki. Ezen a ponton kell elgondolkodni, hogy projektünkben miért használunk adatbázist, milyen adatokat fogunk benne tárolni, hiszen a projekt sikere nagy részben a helyes adattípus kiválasztásán áll vagy bukik. Viszonylag gyakran történik meg, hogy elkészül egy projekt, működik is, ahogyan kell, azonban borzalmasan lassú. Ilyenkor általában vissza kell térni ahhoz a fázishoz, amikor az adattípusokat vagy a táblák struktúráját választottuk ki…



0 Comments

  • Sziasztok!
    Akkor ha én max. 5000 karaktert akarok tárolni a ‘leiras’ mezobe, akkor mit érdemes hazsnálni:
    VARCHAR(5000),

    vagy

    TEXT

    ?
    Válaszotokat előre is köszönöm!

  • Én 255 fölött már TEXT típust választanék. A VARCHARt úgyis konvertálja TEXTnek, ha a string hosszabb, mint 255 karakter.

  • Nagyon kössz!!

  • A BIGINT az hány számot képes tárolni? mert nekem nem méret szerint kéne, hanem hogy hány db számot tud tárolni.

  • Hogy érted, hogy hány számot? Számjegyekre gondolsz vagy külön számokra, mint 123, 455, 6442?
    Ha külön számokra, akkor csak egyet, ugyanúgy, mint az INT esetében, csupán egyet tárolhatsz egy cellában. Ha többet akarsz, akkor egy “many to one” relationre lesz szükséged a meglévő és még egy tábla között.
    Ha a számjegyek számára gondoltál, akkor 20 számjegyet tárolhatsz, ha előjel nélkül használod.

  • Igen úgy gondoltam hogy egy szám hány karakterből állhat úgy.
    Csak azért mert az id Primary Key-el csinálom, és oda mit érdemes használni ha csak max 25000-ig megyek, tovább nem.


Leave a Reply

A kötelező mezőket * jelöli.