Risorse per webmaster

L A   C O M U N I T À   V I R T U A L E   I T A L I A N A   P E R   W E B   M A S T E R S

 
 
      Tecnologie
      HTML
      CSS
      DHTML
      FLASH
      ASP
      PHP
      JSP
      PERL
      XML
      SMIL
      WIRELESS
      PALMARI
      APACHE
      MYSQL
      PICOSQL
 
      Grafica
 
      Servizi
 
      Raccolte
 
      Recensioni
 
      Analisi
 
      Disclaimer

   Per tutti
 
  .: Magazine
  .: Editor
  .: Appunti
  .: Gratis
  .: Scripts
  .: Components
 
   Home page


versione stampabile Mostra una versione adatta per la stampa  

Livello di difficoltà:Livello di difficoltà: medio  
MySQL è il database open source per eccellenza. Cresciuto molto in questi anni, è diventato il DBMS più utilizzato dalla comunità open source e apprezzato anche da chi scrive pagine con tecnologie diverse da PHP e su server diversi da Linux.
 

I tipi di campi numerici in MySQL

MySQL
Quando si va ad assegnare un campo di tipo numerico, è importante sapere quale scegliere, così da non trovarsi con una tabella che va sistemata o ritoccata per contenere i dati.

Ci sono casi in cui, quando si è certi che il database dovrà contenere una piccola quantità di dati, si va erroneamente a identificare comunque un campo di tipo INT, quando magari un TINYINT farebbe comunque lo stesso lavoro in maniera egregia.

Ma perché scervellarsi per trovare il tipo di dato numerico adatto? Per risparmiare spazio e migliorare le prestazioni del database. Se avessimo una tabella di nome "admin" con username e password dell'amministratore unico del sito, è bene evitare di scegliere un campo eccessivamente grande (come può essere BIGINT) perché occuperemo spazio inutile e peggioreremo le prestazioni di MySQL.

Nome del tipo Memoria occupata Intervallo di valori consentito Se solo positivi (UNSIGNED)
TINYINT 1 byte da -128 a +127 da 0 a +255
SMALLINT 2 byte da -32768 a +32767 da 0 a +65535
MEDIUMINT 3 byte da -8388608 a +8388607 da 0 a +16777215
INT 4 byte da -2147483648 a +2147483647 da 0 a +4294967295
BIGINT 8 byte da -9223372036854775808 a +9223372036854775807 da 0 a +18446744073709550615
FLOAT(I,D) 4 byte A seconda dei valori
DOUBLE(I,D) 8 byte A seconda dei valori
DECIMAL(I,D) Il peso di I + 2 Byte A seconda dei valori
I e D rappresentano i numeri Interi e Decimali ammessi.

Un approfondimento lo meritano i tipo FLOAT, DOUBLE e DECIMAL.
Ad esempio FLOAT(2,3) indica a MySQL di salvare fino a due cifre per la parte intera di un numero e 3 per quella decimale. I numeri quindi saranno salvati fino a 99.999. Numeri con valori diversi, verranno arrotondati. Un numero come 45,7869 diventerà 45,787. DOUBLE e DECIMAL funzionano nella stessa maniera ma possono contenere valori maggiori (e quindi occupano più spazio).

Eccezioni dei valori nei dati di tipo numerico
Se all'interno di un campo di tipo numerico si specifica un valore maggiore di quanto ammesso, MySQL salverà nel database il massimo numero ammesso per quel campo. Per spiegare meglio il concetto, ammettiamo di avere un campo TINYINT (UNSIGNED ovvero privo di segno, quindi positivo: da 0 a 255): se provassimo ad inserire un valore pari a 4587, MySQL salverà 255 come valore.
E' importante quindi porre molta attenzione nella scelta dei campi di tipo numerico. Anche perché sono i dati a cui MySQL accede più rapidamente.

I modificatori dei tipi numerici: AUTO_INCREMENT, UNIQUE e ZEROFILL
Il primo modificatore, AUTO_INCREMENT, permette di creare un campo numerico che aumenta ogni nuova riga. Quindi, aggiungendo un record a uno già presente, il valore del campo auto incrementale sarà 2. Se si cancellasse questo ultimo record e se ne aggiungesse un altro, il valore del nuovo campo AUTO_INCREMENT sarà 3. Questo perché, anche se una riga è stata cancellata, MySQL si ricorda il valore massimo e a questo aggiunge ogni volta una unità. Non è possibile modificare il valore che viene sommato alla nuova riga (è e resta +1).
E' consigliabile utilizzare sempre un campo auto incrementale a cui fare riferimento per selezionare, modificare o cancellare i record. Tenetevi quindi sempre da parte un campo (magari di nome "id") di tipo auto incrementale. Sarà comodissimo in molti casi.

Il secondo modificatore per i dati numerici, UNIQUE, identifica un campo i cui valori sono uno diverso dall'altro. Se si tenta di aggiungere un record con lo stesso valore, MySQL genera un errore tipo:

1062 - Duplicate entry 'N' for key N

L'ultimo modificatore ammesso da MySQL per i campi numerici è ZEROFILL, che consente di inserire tanti 0 quanti sono ammessi dal tipo di campo, prima della cifra che realmente viene salvata. Ad esempio, con un campo di tipo INT(5) e ZEROFILL, per salvare un numero come 78, questo verrà immagazzinato nella forma 00078. Può essere utile per salvare dati bancari che prevedono una lunghezza fissa, come ABI, CAB o numero di conto corrente.
 

 
 
Home > mysql > ...   © 1999-2014 Risorse.net, tutti i diritti riservati