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
Tipuri întregi
TINYINT(M) [UNSIGNED] [ZEROFILL]– întreg memorat pe1octet- dacă nu se precizează atributul
UNSIGNED, valorile sunt între-128și127; - dacă se precizează atributul
UNSIGNED, valorile sunt între0și255; - dacă se precizează atributul
ZEROFILL, valorile vor fi afișate cuMcifre, primele fiind evantual0;- de exemplu, dacă
M=3și stochezi5, va fi afișat ca005când se foloseșteZEROFILL.
- de exemplu, dacă
- dacă nu se precizează atributul
SMALLINT(M) [UNSIGNED] [ZEROFILL]– întreg cu valori între-215și215-1, (respectiv între0și216-1, dacă se precizează atributulUNSIGNED), memorat pe2octeți. Obeservațiile legate deZEROFILLsunt la fel cu cele pentru tipulTINYINT.
MEDIUMINT(M) [UNSIGNED] [ZEROFILL]– întreg cu valori între-223și223-1, (respectiv între0și224-1, dacă se precizează atributulUNSIGNED), memorat pe3octeți
INT(M) [UNSIGNED] [ZEROFILL]– întreg cu valori între-231și231-1, (respectiv între0și232-1, dacă se precizează atributulUNSIGNED), memorat pe4octețiINTEGER(M) [UNSIGNED] [ZEROFILL]– La fel caINT
BIGINT(M) [UNSIGNED] [ZEROFILL]– întreg cu valori între-263și263-1, (respectiv între0și264-1, dacă se precizează atributulUNSIGNED), memorat pe8octeți
Tipuri în virgulă mobilă
FLOAT(M,D) [ZEROFILL]– număr real în virgulă mobilă cu simplă precizie, memorat pe4octețiDOUBLE(M,D) [ZEROFILL]– număr real în virgulă mobilă cu dublă precizie, memorat pe8octeți@DOUBLE PRECISION[(M,D)] [ZEROFILL],REAL[(M,D)] [ZEROFILL]– similar cuDOUBLEDECIMAL(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șiDreprezintă 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 tipTIMESTAMPputâ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 maximNcaractere (Ncuprins între1și255).VARCHAR(N)– semnifică un șir de caractere de lungime variabilă, maximN(Ncuprins î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ă la232-1octeți. TipulBLOBdesemnează o familie de tipuri, care diferă prin dimensiunea maximă a datelor pe care le pot stoca.TEXT– familia de tipuriTEXTeste identică cuBLOB, cu excepția faptului că în operațiile de comparare, valorile de tipBLOBsunt case sensitive, iar cele de tipTEXTsunt case insensitive.
| TIP | DIMENSIUNE |
| TINYTEXT, TINYBLOB | 28-1 = 255 O (octeți) |
| TEXT, BLOB | 216-1 = 64K-1 |
| MEDIUMTEXT, MEDIUMBLOB | 224-1 = 16M-1 |
| BIGTEXT, BIGBLOB | 232-1 = 4G-1 |
Alte tipuri de coloane
ENUM– reprezintă un șir de caractere a cărui valoare este aleasă dintr-o listă de valori precizate la crearea tabelului (maxim216-1valori). Dacă se încearcă înlocuirea valorii unei coloane de tipENUMcu 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 tipENUMpoate conține mai mulți membri ai listei – lista poate avea cel mult64membri.