Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/05/2009, 08:51
jurena
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