2012-01-17 19 views
27

Ho sempre pensato che INT (5) significhi un numero che ha una dimensione massima di 5 cifre. Ho provato a inserire un numero enorme al suo interno e in qualche modo è stato ridotto a 2147483647Cosa significa INT (5) in mysql?

Questo ovviamente non è 5 cifre. Quindi cosa ha INT (5) in una limitazione?

risposta

22

INT è sempre largo quattro byte. Il 5 è la "larghezza del display".

+0

Il collegamento è interrotto. – Xethron

+0

puoi dare un esempio? – mikewasmike

+0

Ma come lo usa il server? Anche se la larghezza è 5, il server consente numeri interi con più di 5 cifre. È per l'uso di sole applicazioni create usando interfacce di accesso al database come driver ODBC e JDBC? – mvsagar

6

In MySQL, INT (5) non significa che i valori sono limitati a valori di 5 caratteri. Significa solo che MySQL proverà a riempire questi valori con spazi/zeri quando li restituisce.

L'intervallo numerico di qualsiasi INT con segno compreso INT (10), INT (5) o qualsiasi altro INT (n) è: -2,147,483,648 ... 2,147,483,647, che è al massimo 10 cifre.

+0

Sorpreso questa è stata la prima volta che ho capito il concetto di lunghezza INT, grazie mille! – Tompina

19

Da MySQL Docs, Numeric Type Attributes

MySQL supporta un'estensione per specificare facoltativamente la larghezza di visualizzazione di tipi di dati interi in parentesi che segue la parola chiave base per il tipo. Ad esempio, INT (4) specifica un INT con una larghezza di visualizzazione di di quattro cifre. Questa larghezza di visualizzazione opzionale può essere utilizzata dalle applicazioni per visualizzare valori interi aventi una larghezza inferiore alla larghezza specificata per la colonna inserendoli a sinistra con spazi. (Cioè, questa larghezza è presente nei metadati restituiti con i set di risultati. Se è usato o non è fino l'applicazione.)

+0

Ben risposto! Alcuni come mi mancava leggere i documenti! Questa risposta dovrebbe essere la risposta più corretta alla domanda. – mvsagar

0

Un int può essere compreso tra -2147483648 e 2147483647 firmato, o 0 e 4294967295 senza segno.

Ecco perché è stato tagliato fino a che se hai inserito un numero più grande di come un valore con segno