I tipi di dato

Molti tipi di dato… compresi i multimediali.

Numeri interi

ByteValore minimoValore massimoUNSIGNED
BIT1 bit
BOOL
BOOLEAN
TINYINT(1)
10
FALSE
!= 0
TRUE
TINYINT1-128+1270…+255
SMALLINT2-32768+327670…+65535
MEDIUMINT3-838860883886070…+16777215
INT
INTEGER
4-2147483648+21474836470…+4294967295
BIGINT8-9223372036854775808+92233720368547758070…+18446744073709551615

Osserva

  1. Si può dichiarare BIT(n) con n=1..64
  2. Con SERIAL si dichiara un tipo BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
  3. Si può dichiarare un dato di tipo intero fissando le cifre che saranno visualizzate: INT(5).

Numeri decimali

ByteValore minimoValore massimo
FLOAT4IEEE?
DOUBLE
DOUBLE PRECISION
8
DEC(M, D)
DECIMAL(M,D)
NUMERIC(M,D)
FIXED(M,D)
M+2M=8, D=3
-99999.999
M=8, D=3
99999.999

Osserva

  1. DOUBLE(M,D), Si può dichiarare un dato di tipo decimale fissando il numero di cifre totali e decimali che saranno visualizzate.
  2. DECIMAL(M,D) è trattato come una sequenza di caratteri che rappresentano un numero decimale: M caratteri totali con Dcaratteri decimali…
  3. UNSIGNED, i tipi numerici, tranne BIT, possono essere senza segno.
  4. ZEROFILL, si altera la visualizzazione del numero (no BIT)
    • i valori interi saranno allineati a destra, aggiungendo gli zeri mancanti a sinistra
    • i valori decimali saranno allineati a destra, aggiungendo gli zeri mancanti a destra.

Testo

Per sequenze di caratteri che non superano i 255 caratteri

Versione BINARYByte
CHAR(n)BINARY(n)n
VARCHAR(n)VARBINARY(n)<= n+1

Per sequenze di caratteri di dimensione grande a piacere

Versione BINARYByte (max)
TINYTEXTTINYBLOB255
TEXTBLOB65535
MEDIUMTEXTMEDIUMBLOB16777215
LONGTEXTLONGBLOB4294967295

Osserva

  1. BINARY, i tipi di dato carattere con l’attributo BINARY saranno trattati con distinzione tra maiuscolo e minuscolo nelle operazioni di confronto, ordinamento, …
  2. BLOB, nei campi ...BLOB (… Binary Large OBject) si memorizzano file di qualsiasi tipo.
  3. CHARACTER SET / CHARSET / COLLATE, i tipi di dato carattere CHAR, VARCHAR e TEXT ammettono gli attributiCHARACTER SET/ CHARSET e COLLATE.

Gruppi di stringhe

Con le dichiarazioni

giorno ENUM("lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato", "domenica"),
giorni SET("lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato", "domenica")

i campi potranno assumere un numero diverso di valori

  • giorno, uno tra …
  • giorni, un sottoinsieme di …

Data e ora

ByteFormatoValore minimoValore massimo
TIMESTAMP4AAAAMMGGHHMMSS19700101000000
(1970-01-01 00:00:00)
?
DATETIME8AAAA-MM-GG HH:MM:SS1000-01-01 00:00:009999-12-31 23:59:59
DATE3AAAA-MM-GG1000-01-019999-12-31
TIME3HH:MM:SS-838:59:59838:59:59
YEAR1AAAA19012155

Osserva

  1. Si può dichiarare un dato di tipo TIMESTAMP(N) fissando il numero di cifre che saranno visualizzate
    • 4, AAMM
    • 6, AAMMGG
    • 8, AAAAMMGG
    • 10, AAMMGGHHMM
    • 12, AAMMGGHHMMSS
    • 14, AAAAMMGGHHMMSS
  2. Per l’immissione di una data MySQL permette diversi formati
    • 20080130
    • 2008/01/30
    • 2008-01-30
  3. Il tipo di dato TIME, per i valori in eccesso che può assumere, può essere utilizzato per i gradi di un angolo!

Approfondimenti

  1. NULL, NOT NULL, …
  2. DEFAULT, il valore che verrà assegnato da una INSERT in assenza di un valore esplicito è un valore costante tranne che perTIMESTAMP
    1. 0 per campi numerici
    2. stringa vuota per le stringhe
    3. CURRENT_TIMESTAMP per TIMESTAMP
    4. 0 per i tipi su date e tempo diversi da TIMESTAMP
    5. il primo valore nella lista per ENUM
    6. nessun valore ammesso per BLOB e TEXT
  3. COMMENT, …