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

duda con phpmyadmin:

Estas en el tema de duda con phpmyadmin: en el foro de Mysql en Foros del Web. cuando boy a crear una tabla y me pide la longitud de un campo de tipo int: 1) debo poner el numero que ba a ...
  #1 (permalink)  
Antiguo 13/11/2010, 17:22
 
Fecha de Ingreso: septiembre-2010
Mensajes: 137
Antigüedad: 13 años, 7 meses
Puntos: 0
duda con phpmyadmin:

cuando boy a crear una tabla y me pide la longitud de un campo de tipo int:
1) debo poner el numero que ba a alcanzar?
2) debo poner la cantidad maxima de cifras que el numero puede tener?
3) debo poner la cantidad maxima de cifras que el numero en binario puede tener?
4) tiene que ver con los bytes que la variable ba a ocupar?

en cuanto a los strings, la longitud sería la cantidad maxima de caracteres, verdad?
  #2 (permalink)  
Antiguo 13/11/2010, 18:02
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, 5 meses
Puntos: 2658
Respuesta: duda con phpmyadmin:

1) Hay sólo cinco tipos de números enteros en MySQL: TINYINT, SMALLINT, MEDIUMINT, INT y BIGINT.

2) Todo número, entero o decimal, se almacena en las bases de datos (no sólo en MySQL) como binario, pero eso es algo que no te debe importar. No es algo que tu puedas controlar o modificar.

3) Cada uno de los cinco tipos de columna de enteros tiene una longitud fija de Bytes dedicada, y por ende una cantidad de binarios que lo representa:
TINYINT: 1 Byte
SMALLINT: 2 Bytes
MEDIUMINT: 3 Bytes
INT: 4 Bytes
BIGINT: 8 Bytes.

4) El valor numérico que puedes asignarle no afecta en nada la cantidad de valores posibles del número. Sólo está dedicado a el espacio de representación para efectos visuales en ciertas conversiones.

5) Si no le asignas la cláusula UNSIGNED, todo número será con signo. Para ciertos casos te conviene en UNSIGNED, para otros no.

Todos estos detalles y muchos más se pueden encontrar en el manual de referencia de MySQL, que es el mejor sitio para consultar dudas básicas: MySQL:: 11. Tipos de columna
__________________
¿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 14/11/2010, 10:17
 
Fecha de Ingreso: septiembre-2010
Mensajes: 137
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: duda con phpmyadmin:

entendi todo menos el punto 4.

por ejemplo, si quiero que un campo pueda tener números enteros entre 0 y 634, ¿que longitud debo espesificar en el PHPmyAdmin?
a) 634
b) 3 (la cantidad maxima de cifras que el numero puede tener)
c) 10 (la cantidad maxima de cifras que el numero en binario puede tener?)
d) 2 (son los bytes nesesarios para almacenar el numero, si cada byte tiene 8 bits, para almacenar 10 cibras binarias hace falta como minimo 2 bytes, supongo...)

Última edición por Alfonso1; 14/11/2010 a las 10:23
  #4 (permalink)  
Antiguo 14/11/2010, 10:53
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, 5 meses
Puntos: 2658
Respuesta: duda con phpmyadmin:

Esa pregunta ya te la respondí al decir que puedes asignarle un valor a ese campo, pero es absolutamente irrelevante para el valor del dato que almacenarás.
Conforme dice el manual (por eso te pasé el link: para que leas directamente lo que dice):
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, ni 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 reemplaza por ceros. Por ejemplo, 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.
Lo que debe quedarte en claro es:
1) Ese valor que te pide phpMyAdmin sólo sirve para indicar al constructor de la tabla que ponga eso como valor entre paréntesis:
Código MySQL:
Ver original
  1. CREATE TABLE tabla(
  2. campo1 INT(10),
  3. campo2 INT(3),
  4. campo3 INT(8));
Pero en este ejemplo, sin importar qué le hayas puesto, como es un INT vale sólo lo que el tipo de campo especifica: pueden ingresarse valores entre -2147483648 y 2147483647, porque ese es el rango del tipo de campo.
Cita:
TINYINT
Con signo: -128 al 27
Sin signo: 0 al 255

SMALLINT
Con signo: -32768 al 32767
Sin signo: 0 al 65535

MEDIUMINT
COn signo: -8388608 al 8388607
Sin signo: 0 al 16777215

INT
Con signo: -2147483648 al 2147483647
Sin signo: 0 al 4294967295

BIGINT
Con signo: -9223372036854775808 al 9223372036854775807
sin signo: 0 al 18446744073709551615
__________________
¿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; 14/11/2010 a las 12:12
  #5 (permalink)  
Antiguo 14/11/2010, 17:51
 
Fecha de Ingreso: septiembre-2010
Mensajes: 137
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: duda con phpmyadmin:

si no determina el maximo de la columna, no logro entender para que sirve el parametro "longitud" que me pide el PHPmyadmin.

que diferencia hay entre: INT(10) y INT(3)?
  #6 (permalink)  
Antiguo 15/11/2010, 03:49
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, 5 meses
Puntos: 2658
Respuesta: duda con phpmyadmin:

Eso lo explica el primer y tercer párrafo de lo que te estoy posteando: visualización de los datos. En el segundo caso es más visible cuando se usa junto con ZEROFILL.
Pero eso es todo.

Si no se te ocurre cuándo lo vas a usar es porque en tu caso el problema es intrascendente o no existe condición necesaria. Cuando tengas la situación en que necesites ponerlo, lo verás perfectamente.
Ahora simplemente deja que el sistema ponga el valor por defecto y olvídate del asunto.

Nota Bene: Con el uso de DECIMAL, FLOAT o DOUBLE, la cosa cambia porque el significado de esos valores es diferente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 16/11/2010, 12:53
 
Fecha de Ingreso: septiembre-2010
Mensajes: 137
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: duda con phpmyadmin:

segun lo que dices este tipo esta equibocado:
http://www.youtube.com/watch?v=Zy1jjpVA0uc&feature=related
minuto 2:20
  #8 (permalink)  
Antiguo 16/11/2010, 13:14
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, 5 meses
Puntos: 2658
Respuesta: duda con phpmyadmin:

Mirá, el tipo dice que en ese TextBox va la longitud de cifras del campo. Está hablando tonterías y te lo muestro en un solo post:
Código MySQL:
Ver original
  1. mysql> DROP TABLE IF EXISTS TABLA;
  2. Query OK, 0 rows affected (0.00 sec)
  3.  
  4. mysql> CREATE TABLE TABLA(TABLA_ID INT(3) UNSIGNED NOT NULL);
  5. Query OK, 0 rows affected (0.01 sec)
  6.  
  7. mysql> INSERT INTO TABLA VALUES(123456789);
  8. Query OK, 1 row affected (0.00 sec)
  9.  
  10. mysql> SELECT * FROM TABLA;
  11. +-----------+
  12. | TABLA_ID  |
  13. +-----------+
  14. | 123456789 |
  15. +-----------+
  16. 1 row in set (0.00 sec)

¿Quedó claro?

Consejo 1: Atenete a lo que dice el manual de referencia. Después, a los reportes de Bugs y notas del proyecto. Recién después a los tutoriales.

Consejo 2: Para diseñar una base de datos, no lo hagas con phpMyAdmin. Mejor usa MySQL Workbech, Navicat, Eterprise Architect o cualquier CASE tool mas o menos respetable.
__________________
¿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: phpmyadmin
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 17:08.