2009-10-27 10 views

Respuesta

6

Respuesta corta: no hay diferencia.

El ancho de la pantalla se transfiere en los "metadatos". Depende de la aplicación hacer uso de ella. Normalmente solo se ignora. No creo que pueda obtenerlo usando las funciones de mysql, pero puede hacerlo con mysqli usando mysqli_fetch_field_direct.

+0

Entonces, ¿qué debo poner cuando agregue BIGINT(), nada no es una opción, ¿verdad? Elija un número al azar? 42? – Citizen

+0

Ni siquiera necesita el paréntesis; usted puede decir 'BIGINT'. –

+2

¡Una Internet gratis para usted, señor! – Citizen

4

No debería tener que cambiar nada, ya que no tiene ningún impacto en los datos devueltos. La información puede ser utilizada por las aplicaciones que desean usarla.

Ver http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

Otra extensión está soportado por MySQL para especificar opcionalmente la anchura pantalla de tipos de datos enteros en paréntesis a continuación de la palabra clave de base para el tipo (por ejemplo, INT (4)). Las aplicaciones pueden usar este ancho de visualización opcional para mostrar los valores enteros que tienen un ancho menor que el ancho especificado para la columna al rellenarlos con espacios. (Es decir, esta anchura está presente en los metadatos devueltos con conjuntos de resultados. Tanto si se utiliza o no, depende de la aplicación.)

El ancho de la pantalla no limita el rango de valores que pueden ser almacenado en la columna, ni la cantidad de dígitos que se muestran para valores que tienen un ancho que excede el especificado para la columna. Por ejemplo, una columna especificada como SMALLINT (3) tiene el rango SMALLINT habitual de -32768 a 32767, y los valores fuera del rango permitido por tres caracteres se muestran con más de tres caracteres.

(énfasis mío)

16

El argumento a entero tipos en MySQL no tiene efecto sobre el almacenamiento de datos o la gama de valores admitidos por cada tipo de datos.

El argumento sólo se aplica para mostrar el ancho, el cual puede ser utilizado por aplicaciones como menciona Jonathan Fingland. También aparece cuando se utiliza en combinación con la opción ZEROFILL:

CREATE TABLE foo (
    i INT(3) ZEROFILL, 
    j INT(6) ZEROFILL, 
    k INT(11) ZEROFILL 
); 
INSERT INTO foo (i, j, k) VALUES (123, 456, 789); 
SELECT * FROM foo; 

+------+--------+-------------+ 
| i | j  | k   | 
+------+--------+-------------+ 
| 123 | 000456 | 00000000789 | 
+------+--------+-------------+ 

Vea cómo ZEROFILL se asegura de que los datos son con relleno de ceros a por lo menos el número de dígitos igual al argumento de tipo entero.

Sin ZEROFILL, los datos son espaciados, pero como los espacios a menudo se recortan de todos modos, es más difícil ver la diferencia.

¿Qué efecto tiene en su código PHP? Ninguna. Si necesita generar datos en columna, o valores de espacio libre o almohadilla cero, es más flexible usar sprintf(),

Cuestiones relacionadas