Questa larghezza di visualizzazione aggiuntiva della "funzione" è piuttosto confusa, perché in altri tipi di colonna come CHAR
è specifica la lunghezza.
Ecco una breve ripartizione:
- Più importante:non specificando lo "spazio di archiviazione" o il "numero di cifre". Sta solo dicendo come sono formattati i dati in questa colonna prima che venga restituito. INT(5) può memorizzare lo stesso valori come INT(16) o INT(255):tutti e tre possono memorizzare tutti (e solo) valori validi per INT. INT(255) non può memorizzare un numero con 255 cifre. Lo spazio di archiviazione per tutti è lo spazio occupato da un INT.
- Se usi
ZEROFILL
su una colonna con larghezza di visualizzazione e la rappresentazione della stringa del numero memorizzato è più corta della larghezza di visualizzazione, verrà riempita a sinistra con zeri. Se è più lungo, non succede nulla. Se scegli INT(5) e il valore è 13, verrà restituito come 00013. Se il valore è 123456 verrà restituito come 123456. - Se non usi
ZEROFILL
, non ci sarà alcun riempimento (senza spazi e simili) - Se usi
ZEROFILL
, devi essere consapevole che anche la colonna saràUNSIGNED
- In ogni caso, la larghezza di visualizzazione viene restituita quando vengono interrogati i metadati della tabella. Quindi un'applicazione potrebbe sapere come formattare i dati.
Non mi piace la larghezza di visualizzazione, perché il livello di archiviazione "conosce" la presentazione visiva dei dati archiviati. Oltre a questo, non c'è nessun uso di cui sono a conoscenza.