Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

duda con lenght de un campo int

Estas en el tema de duda con lenght de un campo int en el foro de Mysql en Foros del Web. Hola a todos, Estoy usando phpMyAdmin para crear tablas y creando un campo del tipo Int, le especifiqué que la longitud del campo sea "1" ...
  #1 (permalink)  
Antiguo 22/02/2011, 09:10
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 9 meses
Puntos: 35
duda con lenght de un campo int

Hola a todos,
Estoy usando phpMyAdmin para crear tablas y creando un campo del tipo Int, le especifiqué que la longitud del campo sea "1"
Query generada
Código Javascript:
Ver original
  1. CREATE TABLE `test`.`tabla1` (
  2. `campo` INT( 1 ) NOT NULL
  3. ) ENGINE = MYISAM
Pero para que, phpMyAdmin me permite especificarle la longitud?
Si esto lo determina el tipo de campo, como es Int la longitud de almacenamiento es de 4 bytes (de -2147483648 a 2147483647 con signo).
Porque puedo ingresar una longitud si luego no lo respeta, ya que ingresé un registro que supera la longitud que le especifiqué.
Código Javascript:
Ver original
  1. SQL query:
  2. INSERT INTO `test`.`tabla1` (`campo`)
  3. VALUES ('10000');
__________________
I am Doyle please insert code.
  #2 (permalink)  
Antiguo 22/02/2011, 09:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: duda con lenght de un campo int

El uso de ese valor en los enteros no tiene nada que ver con la longitud de la cifra que se almacenará (esta es una pregunta recurrente). Su uso es otro, y tiene que ver con la visualización del número:
Cita:
MySQL soporta otra extensión para especificar de forma óptima el ancho a mostrar de un tipo entero en paréntesis después de la palabra clave para el tipo (por ejemplo, INT(4)). Esta especificación opcional del ancho de muestra se usa para alinear a la izquierda la muestra de los valores con ancho menor que el ancho especificado para la columna.

El ancho de muestra no restringe el rango de valores que pueden almacenarse en la columna, sino el número de dígitos que se muestran para valores con ancho que exceda el especificado para la columna.

Cuando se usa en conjunción con el atributo de extensión opcional ZEROFILL, el relleno por defecto de espacios se replaza por ceros. Por ejmplo, para una columna declarada como INT(5) ZEROFILL, un valor de 4 se muestra como 00004. Tenga en cuenta que si almacena valores mayores que el ancho de muestra en una columna entera, puede tener problemas cuando MySQL genera tablas temporales para algunos joins complicados, ya que en estos casos MySQL cree que los datos encajan en el ancho original de la columna.
El rango de datos es algo que está determinado por el tipo de columna y no por ese valor. La confusión es muy común porque phpMyAdmin no lo explica bien, y en todo caso lo debes administrar en la aplicación, ya que MySQL no soporta las constraint CHECK sobre columnas, como sí lo hace Oracle.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 22/02/2011, 14:00
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 9 meses
Puntos: 35
Respuesta: duda con lenght de un campo int

uffff
gracias por la paciencia gnzsoloyo!
y por la explicación lo suficientemente clara como para que no quede dudas.
__________________
I am Doyle please insert code.
  #4 (permalink)  
Antiguo 22/02/2011, 16:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: duda con lenght de un campo int

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: int, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:55.