Tipuri de date
MySQL utilizează patru tipuri de date:
- tipul numeric – numerele pot fi întregi sau în virgulă mobilă. De asemenea, se poate utiliza notația științifică, de exemplu:
4.1256E+5 = 412560
- tipul șir de caractere – un șir de caractere este o secvență de caractere cuprinsă între ghilimele (
"
) sau apostrofuri ('
). Șirurile de caractere pot conține secvențe escape:\n
– linie nouă\r
– început de linie\b
– backspace\t
– tab\z
– end of file\\
– backslash\"
– ghilimele\'
– apostrof\0
– caracterul NULL, cu codul ASCII 0\%
– caracterul%
, utilizat pentru căutarea caracterului%
într-un șir de caractere\_
– caracterul_
, utilizat pentru căutarea caracterului_
într-un șir de caractere
- tipul dată și oră – în MySQL data calendaristică se reprezintă în forma
an-lună-zi
, de exemplu:'2008-11-16'
, iar ora se reprezintă în formahh:mm:ss
–'22:47:25'
. Data și ora se pot reprezenta împreună, de forma'2008-11-16 22:47:25'
. - valoarea
NULL
– este o valoare fără tip, și are semnificația de “fără valoare”, “cu valoarea neprecizată”.
Tipuri de coloane MySQL
O bază de date MySQL este alcătuită din tabele, fiecare tabel având una sau mai multe coloane. La crearea unui tabel, trebuie precizat tipul fiecărei coloane. Diferența dintre tipurile de date MySQL și tip de coloane MySQL constă în faptul că tipurile de coloane sunt mai precise decât tipurile de date, ele precizând clar și domeniul de valori.
Tipurile numerice de coloane:
TINYINT(M) [UNSIGNED] [ZEROFILL]
– întreg cu valori între-128
și127
, (respectiv între0
și255
, dacă se precizează atributulUNSIGNED
), memorat pe1
octetSMALLINT(M) [UNSIGNED] [ZEROFILL]
– întreg cu valori între-2
15
și2
15
-1
, (respectiv între0
și2
16
-1
, dacă se precizează atributulUNSIGNED
), memorat pe2
octețiMEDIUMINT(M) [UNSIGNED] [ZEROFILL]
– întreg cu valori între-2
23
și2
23
-1
, (respectiv între0
și2
24
-1
, dacă se precizează atributulUNSIGNED
), memorat pe3
octețiINT(M) [UNSIGNED] [ZEROFILL]
– întreg cu valori între-2
31
și2
31
-1
, (respectiv între0
și2
32
-1
, dacă se precizează atributulUNSIGNED
), memorat pe4
octețiINTEGER(M) [UNSIGNED] [ZEROFILL]
– La fel caINT
BIGINT(M) [UNSIGNED] [ZEROFILL]
– întreg cu valori între-2
63
și2
63
-1
, (respectiv între0
și2
64
-1
, dacă se precizează atributulUNSIGNED
), memorat pe8
octețiFLOAT(M,D) [ZEROFILL]
– număr real în virgulă mobilă cu simplă precizie, memorat pe4
octețiDOUBLE(M,D) [ZEROFILL]
– număr real în virgulă mobilă cu dublă precizie, memorat pe8
octeți@DOUBLE PRECISION[(M,D)] [ZEROFILL]
,REAL[(M,D)] [ZEROFILL]
– similar cuDOUBLE
DECIMAL(M,D) [ZEROFILL]
– număr real în stocat sub formă de șir, valorile fiind în funcție de parametriiM
șiD
. Domeniul maxim de valori este același ca șiDOUBLE
.
ParametriiM
șiD
reprezintă lungimea maximă de afișare (maxim255
), respectiv numărul de cifre situate după punctul zecimal (maxim30
, valoarea efectiv precizată neputând depăși M-2).
Atributul UNSIGNED
nu permite existența valorilor negative.
Atributul ZEROFILL
determină completarea implicită cu zerouri a valorilor din coloanele tabelului.
Atributul AUTO_INCREMENT
poate fi utilizat când se dorește a unor serii consecutive de valori întregi, începând cu 1
.
De asemenea, se poate preciza o valoare predefinită pentru coloanele numerice, folosind atributul DEFAULT
la definirea coloanelor. Valoare implicită este 0
.
Un alt atribut care poate să însoțească tipurile de coloane numerice este NULL
sau NOT NULL
. Acest atribut specifică dacă un câmp numeric cu o valoare neprecizată explicit va conține valoarea NULL
sau valoarea precizată prin atributul DEFAULT
.
Tipurile dată/oră pentru coloane
DATE
– semnifică o dată calendaristică, în format'AAAA-LL-ZZ'
.TIME
– semnifică ora, în format'HH:MM:SS'
.DATETIME
– semnifică data și ora, în format'AAAA-LL-ZZ HH:MM:SS'
.TIMESTAMP
– - reprezintă timpul UNIX, respectiv numărul de secunde care au trecut de la1970-01-01 00:00:00
. Valorile unei coloane de acest tip se actualizează automat în urma operațiilor de inserare (INSERT
) și actualizare (UPDATE
) a înregistrărilor dintr-un tabel, coloanele de tipTIMESTAMP
putând fi utilizate pentru monitorizarea modificărilor asupra unui tabel.YEAR
– semnifică un an.
Atributele care pot fi utilizate pentru coloanele de tip dată sunt: NULL
, NOT NULL
și DEFAULT
.
Tipurile șir de caractere pentru coloane:
CHAR(N)
– semnifică un șir de caractere de lungime fixă, care poate conține maximN
caractere (N
cuprins între1
și255
).VARCHAR(N)
– semnifică un șir de caractere de lungime variabilă, maximN
(N
cuprins între1
și255
). Lungimea efectiv ocupată esteL+1
(L
– lungimea șirului, plus un octet pentru memorarea lungimii).BLOB
– definește un obiect binar mare (Binary Large OBject). Poate stoca “obiecte” (imagini, documente, etc) de până la2
32
-1
octeți. TipulBLOB
desemnează o familie de tipuri, care diferă prin dimensiunea maximă a datelor pe care le pot stoca.TEXT
– familia de tipuriTEXT
este identică cuBLOB
, cu excepția faptului că în operațiile de comparare, valorile de tipBLOB
sunt case sensitive, iar cele de tipTEXT
sunt case insensitive.
TIP | DIMENSIUNE |
TINYTEXT, TINYBLOB | 2 8 -1 = 255 O (octeți) |
TEXT, BLOB | 2 16 -1 = 64K-1 |
MEDIUMTEXT, MEDIUMBLOB | 2 24 -1 = 16M-1 |
BIGTEXT, BIGBLOB | 2 32 -1 = 4G-1 |
ENUM
– reprezintă un șir de caractere a cărui valoare este aleasă dintr-o listă de valori precizate la crearea tabelului (maxim2
16
-1
valori). Dacă se încearcă înlocuirea valorii unei coloane de tipENUM
cu o valoare inexistentă în lista de valori, ea va fi automat înlocuită cu șirul vid,""
.SET
– semnifică un șir asemănător cuENUM
, cu deosebirea că valoarea unei coloane de tipENUM
poate conține mai mulți membri ai listei – lista poate avea cel mult64
membri.