Pri ustvarjanju tabel moramo za vsak stolpec določiti podatkovni tip. Podatkovni tip pove, kakšne podatke lahko stolpec vsebuje, na primer števila, besedilo, datum ali čas.
Do sedaj smo že uporabili tipa INT in VARCHAR(x). Zdaj si poglejmo še najpogostejše podatkovne tipe, ki jih uporabljamo v MySQL oziroma MariaDB.
Številski podatkovni tipi
Številske tipe uporabljamo za shranjevanje celih in decimalnih števil. Nekateri tipi lahko uporabljajo tudi dodatne lastnosti:
UNSIGNED– stolpec ne vsebuje negativnih vrednosti,AUTO_INCREMENT– vrednost se samodejno povečuje,ZEROFILL– številu doda vodilne ničle pri prikazu.
Lastnost AUTO_INCREMENT pogosto uporabljamo pri stolpcu z identifikatorjem, na primer pri primarnem ključu. Lastnost ZEROFILL je uporabna predvsem pri prikazu števil, kjer želimo enako dolžino zapisa.
Najpogostejši številski tipi so:
| Podatkovni tip | Opis |
|---|---|
BIT[(M)] |
Bitno polje. Uporabimo ga za zelo kratke binarne vrednosti. |
TINYINT[(M)] [UNSIGNED] [ZEROFILL] |
Majhen celoštevilski tip. Pogosto ga uporabljamo tudi za logične vrednosti. |
SMALLINT[(M)] [UNSIGNED] [ZEROFILL] |
Celoštevilski tip za manjša števila. |
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] |
Celoštevilski tip srednje velikosti. |
INT[(M)] [UNSIGNED] [ZEROFILL] |
Najpogosteje uporabljen celoštevilski tip. INTEGER je sinonim za INT. |
BIGINT[(M)] [UNSIGNED] [ZEROFILL] |
Tip za zelo velika cela števila. |
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] |
Decimalno število s plavajočo vejico, enojna natančnost. |
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] |
Decimalno število s plavajočo vejico, dvojna natančnost. |
DECIMAL[(M,D)] [UNSIGNED] [ZEROFILL] |
Decimalno število z natančno določenim številom mest. Zelo uporabno pri denarnih vrednostih. |
Za denarne zneske je praviloma primernejši tip DECIMAL kot FLOAT ali DOUBLE, ker omogoča natančnejši zapis decimalnih vrednosti.
Časovni podatkovni tipi
Časovne tipe uporabljamo za shranjevanje datuma, časa ali kombinacije obojega.
| Podatkovni tip | Opis |
|---|---|
DATE |
Datum v obliki YYYY-MM-DD, na primer 2026-03-20. |
TIME |
Čas v obliki HH:MM:SS, na primer 14:30:00. |
DATETIME |
Kombinacija datuma in časa v obliki YYYY-MM-DD HH:MM:SS. |
TIMESTAMP |
Časovni žig. Pogosto ga uporabljamo za samodejno beleženje časa vnosa ali spremembe zapisa. |
YEAR |
Podatkovni tip za shranjevanje leta. |
Primeri funkcij za trenutni datum in čas:
SELECT CURDATE(), CURRENT_DATE;
SELECT CURTIME(), CURRENT_TIME;
SELECT CURRENT_TIMESTAMP, SYSDATE(), NOW();
Zgornje funkcije vrnejo trenutni datum, trenutni čas ali trenutni datum in čas.
Besedilni podatkovni tipi
Podatkovni tipi za shranjevanje nizov znakov
CHAR(x)VARCHAR(x)
CHAR in VARCHAR uporabljamo za shranjevanje besedila. Razlika je v tem, da ima CHAR vedno fiksno dolžino, VARCHAR pa hrani toliko znakov, kolikor jih dejansko potrebujemo.
Če imamo na primer CHAR(4) in vnesemo niz ab, se zapis dopolni s presledki do dolžine štirih znakov. Pri VARCHAR(4) pa se shrani samo dejansko vneseno besedilo.
Primer:
| Vrednost | CHAR(4) | Poraba pomnilnika | VARCHAR(4) | Poraba pomnilnika |
|---|---|---|---|---|
'' |
' ' | 4 bajte | '' | 1 bajt |
'ab' |
'ab ' | 4 bajte | 'ab' | 3 bajte |
'abcd' |
'abcd' | 4 bajte | 'abcd' | 5 bajtov |
Podatkovni tipi za shranjevanje binarnih nizov
BINARY(x)VARBINARY(x)
Tipa BINARY in VARBINARY sta podobna tipoma CHAR in VARCHAR, le da shranjujeta binarne podatke namesto navadnega besedila.
Podatkovni tipi za daljše besedilo in binarne podatke
TEXTBLOB
TEXT uporabljamo za daljše besedilo, BLOB pa za binarne podatke, na primer datoteke ali druge binarne vsebine.
Poznamo več velikosti tipov TEXT in BLOB:
TINYTEXTinTINYBLOBTEXTinBLOBMEDIUMTEXTinMEDIUMBLOBLONGTEXTinLONGBLOB
Oštevilčenje – ENUM
ENUM
ENUM uporabljamo, kadar želimo stolpcu dovoliti eno izmed vnaprej določenih vrednosti.
CREATE TABLE enum_test (
velikost ENUM('majhno', 'srednje', 'veliko')
);
INSERT INTO enum_test (velikost)
VALUES ('majhno'), ('veliko');
Tip ENUM je uporaben, kadar ima stolpec le nekaj dovoljenih vrednosti, na primer velikost, status ali vrsto uporabnika.
Množica – SET
SET
SET je podatkovni tip, ki lahko vsebuje nič, eno ali več vrednosti iz vnaprej določene množice.
CREATE TABLE set_test (
korak SET('ena', 'dva')
);
INSERT INTO set_test (korak) VALUES ('');
INSERT INTO set_test (korak) VALUES ('ena');
INSERT INTO set_test (korak) VALUES ('dva');
INSERT INTO set_test (korak) VALUES ('ena,dva');
Za razliko od tipa ENUM lahko tip SET vsebuje več izbranih vrednosti hkrati.
Pri izbiri podatkovnega tipa moramo vedno razmisliti, kaj bomo v stolpec shranjevali. Pravilna izbira podatkovnega tipa vpliva na preglednost, hitrost in zanesljivost podatkovne baze.