AMMINISTRAZIONE

ANALYZE

CHECK

FLUSH

OPTIMIZE

REPAIR

I tipi di dato

Molti tipi di dato… compresi i multimediali.

Numeri interi

Nome Byte Valore
minimo
Valore
massimo
UNSIGNED
BIT 1 bit
BOOL
BOOLEAN
TINYINT(1)
1 0
FALSE
!= 0
TRUE
TINYINT 1 -128 +127 0…+255
SMALLINT 2 -32768 +32767 0…+65535
MEDIUMINT 3 -8388608 8388607 0…+16777215
INT
INTEGER
4 -2147483648 +2147483647 0…+4294967295
BIGINT 8 -9223372036854775808 +9223372036854775807 0…+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
  1. Si può dichiarare un dato di tipo intero fissando le cifre che saranno visualizzate: INT(5).

Numeri decimali

Nome Byte Valore
minimo
Valore
massimo
FLOAT 4 IEEE?
DOUBLE
DOUBLE PRECISION
8
DEC(M, D)
DECIMAL(M,D)
NUMERIC(M,D)
FIXED(M,D)
M+2 M=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

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

Per sequenze di caratteri di dimensione grande a piacere

Nome Versione
BINARY
Byte
(max)
TINYTEXT TINYBLOB 255
TEXT BLOB 65535
MEDIUMTEXT MEDIUMBLOB 16777215
LONGTEXT LONGBLOB 4294967295

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

i campi potranno assumere un numero diverso di valori

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

Data e ora

Nome Byte Formato
di visualizzazione
Valore
minimo
Valore
massimo
TIMESTAMP 4 AAAAMMGGHHMMSS 19700101000000
(1970-01-01 00:00:00)
?
DATETIME 8 AAAA-MM-GG HH:MM:SS 1000-01-01 00:00:00 9999-12-31 23:59:59
DATE 3 AAAA-MM-GG 1000-01-01 9999-12-31
TIME 3 HH:MM:SS -838:59:59 838:59:59
YEAR 1 AAAA 1901 2155

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, …

REPLACE

Si tratta di un’estensione di MySQL.

Equivale a fare

  • INSERT ...

e se fallisce, perché la chiave primaria è già esistente, fare

  • DELETE ...
  • INSERT ...

INSERT

Inserire record in una tabella già esistente.

VALUES

I valori da inserire nel (nei) record sono indicati esplicitamente o sono parametrici

Più record con una sola operazione

Si inseriscono i valori per un certo elenco di campi

SELECT

I valori da inserire nei record sono il risultato di una query

Note

  1. Sintassi
    • INTO, facoltativo
    • VALUES oppure VALUE
  2. Elenco campi
    • quando non è specificato si intende la sequenza originale
    • altrimenti devono corrispondere elenco_campi - elenco_valori
    • per i campi non compresi nell’elenco si utilizzeranno i valori di default
  3. Campo AUTOINCREMENT
    • viene inserito automaticamente il numero successivo al più grande utilizzato finora
    • si può specificare un valore ma che non sia già presente
  4. PRIMARY KEY, UNIQUE, FOREIGN KEY
    • l’inserimento fallisce se viola le regole di integrità stabilite.

UPDATE

Aggiornare i contenuti dei record di una tabella.

Tutti

Aggiornare i dati di una certa colonna

… più colonne

WHERE

Stabilire una restrizione sull’aggiornamento

LIMIT

Limitare a un certo numero gli aggiornamenti.
Utile per non tenere occupato il DB: sarà necessario ripetere il comando finché il numero di righe eliminate non sarà minore del numero specificato.

ORDER BY

Seguire un certo ordine durante l’aggiornamento di più record.
Utile se esistono dei vincoli di integrità tra i record: sarà necessario ripetere il comando finché il numero di righe aggiornato non sarà minore del numero specificato.



Si possono aggiornare i dati di una tabella utilizzando i dati di un’altra…