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

Definiendo INT(M)...

Estas en el tema de Definiendo INT(M)... en el foro de Mysql en Foros del Web. Hola, en una tabla puedes definir por ejemplo un campo como INT(5). Qué significa el 5? He leido que es el número de caracteres que ...
  #1 (permalink)  
Antiguo 09/05/2013, 14:38
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Definiendo INT(M)...

Hola, en una tabla puedes definir por ejemplo un campo como INT(5). Qué significa el 5? He leido que es el número de caracteres que se muestra, pero... dónde?
  #2 (permalink)  
Antiguo 09/05/2013, 14:55
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Definiendo INT(M)...

Hola humanista:

Si hubiera investigado un poquito en la documentación oficial o le hubieras preguntado a San GOOGLE seguramente habrías encontrado la respuesta... ojo con eso para la próxima:

http://dev.mysql.com/doc/refman/5.0/...ric-types.html

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, no 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.
Saludos
Leo.
  #3 (permalink)  
Antiguo 09/05/2013, 16:44
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: Definiendo INT(M)...

Pues ese es exactamente el link que había consultado pero no me aclaro. No sé a qué se refiere lo de mostrar. Mostrar en pantalla?

Si tengo INT(3) y el valor en la tabla es 1.500.000, qué muestra al hacer echo? obviamente 150 no. Estoy hecho un lío.
  #4 (permalink)  
Antiguo 09/05/2013, 17:31
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: Definiendo INT(M)...

En esencia, ese numero es irrelevante, porque no afecta el almacenamiento.
Pero puede tener efectos nefastos en ciertos casos. Para ser más preciso, si pones una longitud menor a la máxima representable, pueden generarse truncamientos de datos al momento de usar las tablas para crear vistas, ya que los algoritmos generadores de la smismas usan esa información para crear los JOIN, con resultados imprevisibles..
Personalmente no le he encontrado jamás una utilidad a eso, que me parece un resabio de versiones obsoletas de MySQL, que se mantiene por compatibilidad.

Consejo: No uses jamás ningún valor que no sea el de default. Nunca.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 09/05/2013 a las 19:47
  #5 (permalink)  
Antiguo 10/05/2013, 07:56
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años
Puntos: 15
Respuesta: Definiendo INT(M)...

Gracias, aunque me queda la duda de en que se podría utilizar... (sólo por pura casualidad) ;)
Pero lo más importante es que lo deje en default.
  #6 (permalink)  
Antiguo 10/05/2013, 08:00
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: Definiendo INT(M)...

Cita:
aunque me queda la duda de en que se podría utilizar
Fuera de formatear la salida por consola de comandos, no le he visto otra aplicación. Y hoy nadie usa la consola de comandos para operaciones diarias...
__________________
¿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: campo, tabla
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 16:52.