MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Tipurile de date MySQL

La definirea coloanelor unei tabele, este necesar să li se atribuie un tip de date. Fiecare coloană trebuie să aibă un tip de date. Tipul de date determină ce valori pot fi stocate în coloană și cât spațiu vor ocupa în memorie.

MySQL oferă următoarele tipuri de date, care pot fi împărțite în diverse grupuri.

Tipurile de date pentru caractere

  • CHAR: reprezintă un șir de caractere de lungime fixă

Lungimea șirului stocat este specificată între paranteze, de exemplu, CHAR(10) - un șir de zece caractere. Dacă într-o coloană a unei tabele este salvat un șir de 6 caractere (adică mai mic decât lungimea specificată de 10 caractere), atunci șirul este completat cu 4 spații și, în final, va ocupa totuși 10 caractere.

Tipul CHAR poate stoca până la 255 de octeți.

  • VARCHAR: reprezintă un șir de caractere de lungime variabilă

Lungimea șirului stocat este, de asemenea, specificată între paranteze, de exemplu, VARCHAR(10). Cu toate acestea, spre deosebire de CHAR, șirul stocat va ocupa doar atât spațiu cât este necesar. De exemplu, dacă lungimea specificată este de 10 caractere, dar în coloană este salvat un șir de 6 caractere, atunci șirul stocat va ocupa efectiv 6 caractere plus un byte suplimentar care stochează lungimea șirului.

În total, tipul VARCHAR poate stoca până la 65535 de octeți.

Începând cu MySQL 5.6, tipurile CHAR și VARCHAR utilizează implicit codificarea UTF-8, care permite utilizarea până la 3 octeți pentru a stoca un caracter, în funcție de limbă (1 octet pentru multe limbi europene, 2 octeți pentru unele limbi din Europa de Est și Orientul Mijlociu, și 3 octeți pentru chineză, japoneză, coreeană).

Există și câteva tipuri suplimentare de date care reprezintă text de lungime nedefinită:

  • TINYTEXT: reprezintă text de până la 255 de octeți
  • TEXT: reprezintă text de până la 65 de kiloocteți
  • MEDIUMTEXT: reprezintă text de până la 16 megaocteți
  • LONGTEXT: reprezintă text de până la 4 gigaocteți

Tipurile de date numerice

  • TINYINT: reprezintă numere întregi între -128 și 127, ocupă 1 byte
  • BOOL: practic, nu reprezintă un tip separat, ci este doar un pseudonim pentru tipul TINYINT(1) și poate stoca două valori, 0 și 1. Cu toate acestea, acest tip poate lua, de asemenea, ca valori constante încorporate TRUE (reprezintă numărul 1) și FALSE (reprezintă numărul 0)

Are, de asemenea, pseudonimul BOOLEAN.

  • TINYINT UNSIGNED: reprezintă numere întregi între 0 și 255, ocupă 1 byte
  • SMALLINT: reprezintă numere întregi între -32768 și 32767, ocupă 2 bytes
  • SMALLINT UNSIGNED: reprezintă numere întregi între 0 și 65535, ocupă 2 bytes
  • MEDIUMINT: reprezintă numere întregi între -8388608 și 8388607, ocupă 3 bytes
  • MEDIUMINT UNSIGNED: reprezintă numere întregi între 0 și 16777215, ocupă 3 bytes
  • INT: reprezintă numere întregi între -2147483648 și 2147483647, ocupă 4 bytes
  • INT UNSIGNED: reprezintă numere întregi între 0 și 4294967295, ocupă 4 bytes
  • BIGINT: reprezintă numere întregi între -9 223 372 036 854 775 808 și 9 223 372 036 854 775 807, ocupă 8 bytes
  • BIGINT UNSIGNED: reprezintă numere întregi între 0 și 18 446 744 073 709 551 615, ocupă 8 bytes
  • DECIMAL: stochează numere cu precizie fixă. Acest tip poate lua doi parametri, precision și scale: DECIMAL(precision, scale)

Parametrul precision reprezintă numărul maxim de cifre pe care le poate stoca numărul. Această valoare trebuie să fie în intervalul 1 până la 65.

Parametrul scale reprezintă numărul maxim de cifre pe care le poate avea numărul după virgulă. Această valoare trebuie să fie în intervalul 0 până la valoarea parametrului precision. În mod implicit, este egal cu 0.

De exemplu, în definiția următoarei coloane:

salary DECIMAL(5,2)

Numărul 5 reprezintă precizia, iar numărul 2 reprezintă scala, astfel încât această coloană poate stoca valori în intervalul de la -999.99 la 999.99.

Dimensiunea datelor în octeți pentru tipul DECIMAL depinde de valoarea stocată.

Acest tip are, de asemenea, pseudonimele NUMERIC, DEC și FIXED.

  • FLOAT: stochează numere fracționare cu virgulă mobilă de precizie simplă între -3.4028 * 10^38 și 3.4028 * 10^38, ocupă 4 octeți

Poate lua forma FLOAT(M,D), unde M - numărul total de cifre, iar D - numărul de cifre după virgulă.

  • DOUBLE: stochează numere fracționare cu virgulă mobilă de precizie dublă între -1.7976 * 10^308 și 1.7976 * 10^308, ocupă 8 octeți. De asemenea, poate lua forma DOUBLE(M,D), unde M - numărul total de cifre, iar D - numărul de cifre după virgulă

Acest tip are, de asemenea, pseudonimele REAL și DOUBLE PRECISION, care pot fi folosite în loc de DOUBLE.

Tipuri de date pentru lucrul cu dată și timp

  • DATE: stochează datele începând cu 1 ianuarie 1000 până la 31 decembrie 9999 (de la "1000-01-01" la "9999-12-31"). În mod implicit, folosește formatul yyyy-mm-dd. Ocupă 3 octeți
  • TIME: stochează timpul de la -838:59:59 până la 838:59:59. În mod implicit, pentru stocarea timpului se folosește formatul "hh:mm:ss". Ocupă 3 octeți
  • DATETIME: combină timpul și data, cu intervalul de la 1 ianuarie 1000 până la 31 decembrie 9999 (de la "1000-01-01 00:00:00" la "9999-12-31 23:59:59"). În mod implicit, pentru stocare se folosește formatul "yyyy-mm-dd hh:mm:ss". Ocupă 8 octeți
  • TIMESTAMP: stochează și data și timpul, dar în alt interval: de la "1970-01-01 00:00:01" UTC la "2038-01-19 03:14:07" UTC. Ocupă 4 octeți
  • YEAR: stochează anul ca 4 cifre, cu valori posibile între 1901 și 2155. Ocupă 1 octet

Tipul DATE poate accepta date în diferite formate, dar pentru stocare directă în baza de date, datele sunt convertite la formatul "yyyy-mm-dd". Unele dintre formatele acceptate sunt:

  • yyyy-mm-dd - 2018-05-25
  • yyyy-m-dd - 2018-5-25
  • yy-m-dd - 18-05-25

În acest format, numerele cu două cifre între 00 și 69 sunt interpretate ca date în intervalul 2000-2069, iar cele între 70 și 99 ca date în intervalul 1970-1999.

  • yyyymmdd - 20180525
  • yyyy.mm.dd - 2018.05.25

Pentru timp, tipul TIME utilizează formatul de 24 de ore. Poate accepta timpul în diferite formate:

  • hh:mi - 3:21 (valoarea stocată este 03:21:00)
  • hh:mi:ss - 19:21:34
  • hhmiss - 192134

Exemple de valori pentru tipurile DATETIME și TIMESTAMP:

  • 2018-05-25 19:21:34
  • 2018-05-25 (valoarea stocată este 2018-05-25 00:00:00)

Tipuri compuse

  • ENUM: stochează o singură valoare dintr-o listă de valori permise. Ocupă 1-2 octeți
  • SET: poate stoca mai multe valori (până la 64 de valori) dintr-o listă de valori permise. Ocupă 1-8 octeți

Tipuri binare

  • TINYBLOB: stochează date binare sub formă de șiruri cu lungimea de până la 255 de octeți
  • BLOB: stochează date binare sub formă de șiruri cu lungimea de până la 65 KB
  • MEDIUMBLOB: stochează date binare sub formă de șiruri cu lungimea de până la 16 MB
  • LONGBLOB: stochează date binare sub formă de șiruri cu lungimea de până la 4 GB
← Lecția anterioară Lecția următoare →