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

Tipo de datos

Estas en el tema de Tipo de datos en el foro de Mysql en Foros del Web. Hola !! Tengo la siguiente consulta: Que diferencia hay entre un declarar un campo "id" como: SMALLINT(2) SMALLINT(5) INT INT(3) Sabiendo que nunca superará los ...
  #1 (permalink)  
Antiguo 29/05/2009, 22:03
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 2 meses
Puntos: 3
Tipo de datos

Hola !!

Tengo la siguiente consulta:

Que diferencia hay entre un declarar un campo "id" como:

SMALLINT(2)
SMALLINT(5)
INT
INT(3)

Sabiendo que nunca superará los 65.000 registros.

me cuesta entender lo que significa el numero entre los parentesis. Si bien yo sé que un SMALLINT no supera los casi 65.000, cual es la diferencia si le pongo SMALLINT(2) o SMALLINT (5) ??

Y por ultimo, que pasa si pongo un TYNINT y quiero insertar un registro en el cual supera los 255 supuestamente el valo que debería tener ??
  #2 (permalink)  
Antiguo 30/05/2009, 08:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Tipo de datos

Sobre el tema del tamaño de los campos INT, mira este enlace donde lo explican bien:
http://matthom.com/archive/2006/11/2...-display-width

SMALLINT(2) tiene que ser unsigned para poder alcanzar más de 32767, es decir, para poder llegar a 65535 (vigila esto).
SMALLINT(5) tiene que ser unsigned para poder alcanzar más de 32767 , es decir, para poder llegar a 65535 (vigila esto).
INT si no pones nada, el programa te pondrá (11), que es el size por defecto para INT, porque el mayor número de dígitos posibles para un INT con 32bit es 10, y hay que sumar otro para indicar que se trata de un número negativo: eso da 11, que es el size por defecto. Puedes verlo aquí:
http://forums.mysql.com/read.php?22,...142#msg-249142

INT(3) el espacio requerido de almacenaje será superior, 4 bytes, el doble que para un smallint, que en ambos casos requerirá solo 2 bytes.

SMALLINT(2) Y SMALLINT(5) se almacenan igual; el dos tiene más que ver con el modo de presentarlos, sobre todo cuando se usa ZEROFILL.
Yo usaría SMALLINT unsigned (5) si no voy a llegar hasta el 65535 y deseo aplicarle ZEROFILL (relleno de ceros por la izquierda), útil, por ejemplo, para numerar facturas.

El TYNINT sólo te permitirá hasta 127, y si es unsigned hasta 255. Cualquier otro número superior lo dejará en el máximo permitido. Es decir, si escribes 256 en un unsigned int grabará 255.

Pero ojo: debes estar muy seguro de que ese campo numérico no pasará de 65535; en caso de duda, pasa al mediumint, 3 bytes, y llega como unsigned hasta los 16777215, la mitad si no lo haces unsigned.

Última edición por jurena; 30/05/2009 a las 08:58
  #3 (permalink)  
Antiguo 30/05/2009, 11:46
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: Tipo de datos

Muchas gracias jurena !!!
Muy buena explicación.

Me queda una solda duda por el momento:

que diferencia hay entre INT(3) y INT(5) ??
o sino entre SMALLINT(2) o SMALLINT(5) ??

Y por ultimo, si yo tengo un SMALLINT y el valor que sigue es 65536, el cual ya no entra en este tipo de datos, lo graba como 65535 o aparece un error ?? pregunto porque este campo sería el id y encima la clave primaria con autoincrement
  #4 (permalink)  
Antiguo 30/05/2009, 12:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Tipo de datos

No he hecho todas las pruebas, pero creo que te graba sin error 65535.
En cuanto a lo otro, no hay diferencias realmente ni sobre el rango ni sobre el almacenamiento; sólo sobre el modo en que se muestran.
Si por ejemplo tienes un smallint unsigned(2) con zerofill y escribes 345 y 1, te mostrará
345
01
Sólo te rellena hasta el espacio de reservado para ello, que es dos. Esa es la única diferencia.
  #5 (permalink)  
Antiguo 30/05/2009, 13:00
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: Tipo de datos

Nuevamente muchisimas gracias jurena.
Me ha sido de gran ayuda, muy claro todo.

Gracias y espero que este post le sirva a otro.

Adioss
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 23:56.