Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: BlaineMonkey en 30 Marzo 2010, 17:10 pm



Título: ¿Dudas tipo numéricos en MYSQL?
Publicado por: BlaineMonkey en 30 Marzo 2010, 17:10 pm
Tengo una duda:
¿Cual es el tipo numérico idóneo para valores que pueden ser 0 ó 1?

Creo que el Decimal de 1 de longitud. ¿Es así?

Para registros que pueden ir desde el 0 al 999 sería mejor utilizar el tipo DECIMAL de longitud 3 que un INTEGER. No?  Si no es así, ¿cual sería el más apropiado?


Título: Re: ¿Dudas tipo numéricos en MYSQL?
Publicado por: ^Tifa^ en 30 Marzo 2010, 17:40 pm
Citar
¿Cual es el tipo numérico idóneo para valores que pueden ser 0 ó 1?

Tipo de datos  Bit  (toma 0 o 1)

Citar
Creo que el Decimal de 1 de longitud. ¿Es así?

Decimal accepta numeros con punto o flotantes, no valores enteros.... O sea los valores en Decimal van mas o menos asi (10.000, 234.000, etc) No enteros.

Citar
Para registros que pueden ir desde el 0 al 999 sería mejor utilizar el tipo DECIMAL de longitud 3 que un INTEGER. No?  Si no es así, ¿cual sería el más apropiado?

Smallint ... va de 0 a 65535 (cuando son numeros positivos).  No te digo Tinyint porque el maximo de este es de 0 a 255 cuando son numeros positivos.


Título: Re: ¿Dudas tipo numéricos en MYSQL?
Publicado por: Skeletron en 30 Marzo 2010, 18:02 pm
Pero para los booleanos, la base de datos ocupa lo mismo poner un BOLEAN que un TINYINT.. o me equivoco?


Título: Re: ¿Dudas tipo numéricos en MYSQL?
Publicado por: ^Tifa^ en 30 Marzo 2010, 18:10 pm
Pero para los booleanos, la base de datos ocupa lo mismo poner un BOLEAN que un TINYINT.. o me equivoco?

Si, en espacio si ocupan 1 byte en memoria ambos tipos de datos....

La diferencia en este caso es, que Tinyint puede guardar cualquier numero que este en el rango 0 a 255 positivos, y si el chico solo quiere 0 y 1 pues.. tendra que controlar que valores llegan a insertarse en este campo a traves de su lenguaje de programacion (No es un proceso complicado ni dificil lo sabes.. pero hay que hacerlo).

En cambio con el tipo de datos BIT solo ocupa 0 o 1  no otra cosa...

PD: Me corrigo a mi misma (Soy mediocre con los numeros disculpen).

No Skeletron, el tipo Bit en MySQL ocupa menos que Tinyint  ;)

Tinyint ocupa 1 bytes en memoria.
Bit ocupa 1 bit en memoria

1 bytes tiene un numero limitado de bits... pueden ser 4 bit, 5 bit, 6 bit..etc pero son varios no 1 solo.


Fuente:  http://es.wikipedia.org/wiki/Bit

Dios... debo estudiar mas electronica y matematica Binaria  :xD   :xD 


Título: Re: ¿Dudas tipo numéricos en MYSQL?
Publicado por: Skeletron en 30 Marzo 2010, 21:34 pm
Tiffa, yo ya se que el bit es 1 posicion, y el bait son 8.. Pero, por ahí leí que MySQL ocupaba mas...

A ver, cual es el tipo de dato BOLEAN de MySQL?
Haré unas pruebas


Título: Re: ¿Dudas tipo numéricos en MYSQL?
Publicado por: ^Tifa^ en 30 Marzo 2010, 21:47 pm
Ciertamente BIT solia ser tambien interpretado por el motor como un Tinyint segun la web de MySQL:

Citar
En MySQL 5.0.3, un tipo de datos BIT está disponible para almacenar valores de un bit. (Antes de 5.0.3, MySQL interpreta BIT como TINYINT(1).)

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

Pero hace referencia a MySQL 5.0.3 (bastante antiguo) pero claramente dice que en versiones de MySQL 5.0.3 he inferiores BIT los interpretaba el motor como un TINYINT pero es a partir de esa vieja version de MySQL he inferiores, ya en las superiores aparentemente no es tratado de la misma manera.

Que conste que nunca me he visto en la necesidad de dar uso de este tipo de datos en un motor.


Título: Re: ¿Dudas tipo numéricos en MYSQL?
Publicado por: Skeletron en 30 Marzo 2010, 22:05 pm
Yo lo utilizo para:
En una tabla de e-mails, cual ya ha sido enviado o no
En una tabla de usuarios, cual tiene una foto registrada a su poder o no
En una tabla de usuarios, si la persona es MUJER o HOMBRE (0=mujer, 1=hombre)

Por lo que veo, al leer "La Biblia de MySQL" muchos conceptos estan demaciados viejos ahí...
Tendre que leer algo que me ponga mas al tanto..


Título: Re: ¿Dudas tipo numéricos en MYSQL?
Publicado por: ^Tifa^ en 30 Marzo 2010, 22:32 pm
Si esos libros estan un poco viejitos ya... pero sirven de base para entender algo  ;)

Le convendria usar BIT para los true y false pero... para sacar el valor tendra que usar un convertidor en su consulta (ya que el dato se guarda binario y leerlo a pura consulta SQL saldra simbolito raro) entonces el tendria que consultar asi:

SELECT BIN(campo) FROM TABLA WHERE ...

Para que al imprimir el valor salga en numero entero y no un caracter rarisimo ahi en Ascii.

Si usase Tinyint, tendria que controlar los valores que llegan al motor ya que tinyint soporta mas valores ademas de 0 y 1

Besis