Campos Memos en MySQL

4,177 views
Skip to first unread message

Arnaldo Toledano

unread,
May 9, 2011, 3:13:22 PM5/9/11
to publice...@googlegroups.com
Tengo una duda con campos extenso para un sistema donde se lleva un historial de un elemento.
Se trata de una especie de historia clínica de  moto vehículos.
Según mis conocimientos si defino un campo como Varchar(1024), por ejemplo, MySql me grabara solamente los caracteres que he tipeado.
Es decir que si ingrese 100 caracteres, el campo tendrá 100 caracteres y no me grabara 100 caracteres en un  campo de 1024 caracteres como esta definido.
Existen casos donde se pueden ingresar hasta mil caracteres para informar de las reparaciones realizadas y en otros casos, la mayoría, no supera los 150.

Alguna sugerencia ?


 
Arnaldo Toledano
Tesys Informática
Córdoba
Argentina

Yvan GMAIL

unread,
May 9, 2011, 3:30:27 PM5/9/11
to publice...@googlegroups.com

Campo memo.. no se como se llamará en Mysql.

Richard Gaviria

unread,
May 9, 2011, 3:48:48 PM5/9/11
to Grupo VFP
Lo más óptimo es que definas el campo como Text, y cuando hagas la consulta desde vfp te retornará un campo del tipo Memo.

Saludos.

Rick.



Date: Mon, 9 May 2011 16:13:22 -0300
From: arnaldo....@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Campos Memos en MySQL

Arnaldo Toledano

unread,
May 9, 2011, 4:00:30 PM5/9/11
to publice...@googlegroups.com
Es decir que el campo Text, me devuelve los chr(13)  para que quede formateado en el ventana que lo muestre ?

Arnaldo
--

Richard Gaviria

unread,
May 9, 2011, 4:36:01 PM5/9/11
to Grupo VFP
El campo Text te devuelve un campo Memo en una consulta vfp, si quieres usar un campo que solo te consuma el largo del texto que has ingresado usa la definición de varchar().

Date: Mon, 9 May 2011 17:00:30 -0300
From: arnaldo....@gmail.com
To: publice...@googlegroups.com
Subject: Re: [vfp] Campos Memos en MySQL

Carlos Miguel FARIAS

unread,
May 9, 2011, 4:46:17 PM5/9/11
to publice...@googlegroups.com
El mysql tiene varios tipos de campos memo, los mas comunes text (hasta 65000 caracteres), mediumtext (hasta 16 millones de caracteres) y longtext (4gb), todos son vistos en vfp como campos memos.
Tambien tiene equivalentes en modo binario (blob).
Estos campos utilizan de 2, 3 y 4 bytes respectivamente en una fila mas el contenido que introduzcas en el campo.
El varchar maneja hasta 255 caracteres, pero si tiene 4 o menos caracteres mysql lo maneja como un char.

extremo

unread,
May 9, 2011, 5:47:06 PM5/9/11
to Comunidad de Visual Foxpro en Español
el campo varchar(1024) el fox lo interpreta como memo.

si en tu tabla mySql tienes el campo definido como varchar(1024) y tu
solo digitas 100 caracteres entonces el mysql ocupara solamente el
espacio de 100 caracteres, osea, el espacio que dejastes sin ocupar el
mysql lo libera para no desperdiciar espacio de memoria, si despues
ingresas un dato con 1000 caracteres entonces ocupa 1000 caracteres
liberando los 24 sobrantes, todos los campos de tipo varchar funcionan
igual. Si no vas a ocupar mas de 1024 caracteres no tendras problema,
pero como sujerencia podrias ampliarlo a 2000. En sqlServer el maximo
es 8000 para ese tipo de dato.

Bendiciones



On 9 mayo, 16:46, Carlos Miguel FARIAS <carlosmiguelfar...@gmail.com>
wrote:
> El mysql tiene varios tipos de campos memo, los mas comunes text (hasta
> 65000 caracteres), mediumtext (hasta 16 millones de caracteres) y longtext
> (4gb), todos son vistos en vfp como campos memos.
> Tambien tiene equivalentes en modo binario (blob).
> Estos campos utilizan de 2, 3 y 4 bytes respectivamente en una fila mas el
> contenido que introduzcas en el campo.
> El varchar maneja hasta 255 caracteres, pero si tiene 4 o menos caracteres
> mysql lo maneja como un char.
>
> El 9 de mayo de 2011 17:36, Richard Gaviria <rgavi...@msn.com> escribió:
>
>
>
> >  El campo Text te devuelve un campo Memo en una consulta vfp, si quieres
> > usar un campo que solo te consuma el largo del texto que has ingresado usa
> > la definición de varchar().
>
> > Saludos.
>
> > Rick.
> >http://www.engineersoftasociados.com
>
> > ------------------------------
> > Date: Mon, 9 May 2011 17:00:30 -0300
>
> > From: arnaldo.toled...@gmail.com
> > To: publice...@googlegroups.com
> > Subject: Re: [vfp] Campos Memos en MySQL
>
> > Es decir que el campo Text, me devuelve los chr(13)  para que quede
> > formateado en el ventana que lo muestre ?
>
> > Arnaldo
>
> > El 09/05/2011 04:48 p.m., Richard Gaviria escribió:
>
> > Lo más óptimo es que definas el campo como Text, y cuando hagas la consulta
> > desde vfp te retornará un campo del tipo Memo.
>
> >  Saludos.
>
> >  Rick.
> >http://www.engineersoftasociados.com
>
> > ------------------------------
> > Date: Mon, 9 May 2011 16:13:22 -0300
> > From: arnaldo.toled...@gmail.com
> > To: publice...@googlegroups.com
> > Subject: [vfp] Campos Memos en MySQL
>
> > Tengo una duda con campos extenso para un sistema donde se lleva un
> > historial de un elemento.
> > Se trata de una especie de historia clínica de  moto vehículos.
> > Según mis conocimientos si defino un campo como Varchar(1024), por ejemplo,
> > MySql me grabara solamente los caracteres que he tipeado.
> > Es decir que si ingrese 100 caracteres, el campo tendrá 100 caracteres y no
> > me grabara 100 caracteres en un  campo de 1024 caracteres como esta
> > definido.
> > Existen casos donde se pueden ingresar hasta mil caracteres para informar
> > de las reparaciones realizadas y en otros casos, la mayoría, no supera los
> > 150.
>
> > Alguna sugerencia ?
>
> > *Arnaldo Toledano
> > Tesys Informática
> > Córdoba
> > Argentina *
>
> > --
> > *Arnaldo Toledano Tesys Informática Córdoba Argentina *- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Richard Gaviria

unread,
May 9, 2011, 7:06:16 PM5/9/11
to Grupo VFP
Aquí hay un artículo interesante al respecto :

Tipos de campos en MySQL

¿Creías que íbamos a empezar a crear la base de datos? Pues lo siento, aún no toca, jeje, nos queda algo muy importante, que es los tipos de campos en los que vamos a almacenar los datos. Os dejo puestos todos los tipos, divididos en tres clases: numéricos, fechas y texto. Todos no son importantes, nosotros utilizaremos sobre todo Datetime, text, int y varchar, por lo que si quereis mirar esos cuatro y pasad al siguiente capítulo os dejo, jeje, o miradlos todos a modo informativo.

Campos numéricos

Vamos a ir mencionando los nombres de los distintos campos numéricos y a explicar cómo son:
  1. Bit y Bool: un número de 1 bit, es decir, o un 0 o un 1, sólo puede tomar ambos valores.
  2. Tinyint: número entero que si le ponemos signo estará entre -128 y 127, y sin signo entre 0 y 255 (para los más entendidos, un número de 8 bites, o de un byte). No podemos poner un número fuera de ese rango o dará error.
  3. SmallInt: número comprendido entre -32768 y 32767, o sin signo entre 0 y 65535 (número de 16 bits/2 bytes).
  4. MediumInt: comprendido entre -8388608 y 8388607, o sin signo entre 0 y 16777215 (24 bites/3 bytes).
  5. Int (o integer): número entre -2147483648 y 2147483647, o sin signo entre 0 y 4294967295 (32 bites/4 bytes).
  6. BigInt: número entre -9.223.372.036.854.775.808 y 9.223.372.036.854.775.807, o sin signo entre 0 y 18.446.744.073.709.551.615 (64 bites/8 bytes).
  7. Float: número decimal en punto flotante de precisión simple. Los valores válidos van desde -3.402823466x10^38 a -1.175494351x10^-38, o desde 1.175494351x10^-38 a 3.402823466x10^38 (decimales en punto flotante de 4 bytes).
  8. Double: número decimal en punto flotante de precisión doble. Los valores permitidos van desde -1.7976931348623157x10^308 a -2.2250738585072014x10^-308, o desde 2.2250738585072014x10^-308 a 1.7976931348623157x10^308 (decimales en punto flotante de 8 bytes).
  9. Decimal: yo os aconsejo este para almacenar número decimales. hay que indicarle dos valores separados por una coma llamémosles "M,D". Este tipo de campo es el más preciso, M sería la presición o el número de dígitos totales, y D el número de dígitos decimales que tendrá.

Fechas

Pasamos a los tipos de campo que más trabajo me dieron en su momento, jeje:
  1. Date: el formato en que lo guarda es año-mes-día, y guarda desde el año 1001 al 9999.
  2. DateTime: el formato es año-mes-día hora:minuto:segundo, y guarda desde el año 1001 al 9999.
  3. TimeStamp: en este caso el formato lo elijes tu en función del tamaño de caracteres que le pongas al campo. Sólo llega entre 1970 y 2037. Según el tamaño de caracteres quedará de la siguiente forma:
  4. TamañoFormato
    14aaaammddhhmmss
    12aammddhhmmss
    8aaaammdd
    6aammdd
    4aamm
    2aa
  5. Time: el formato es hora:minuto:segundo, con un rango desde -838 horas a 838 horas.
  6. Year: guarda solo un año de entre 1901 y 2155, que puede tener sólo dos cifras o las cuatro, dependiendo del tamaño de caracteres que le pongamos.

Campos de texto

  1. Char: es una cantidad fija de caracteres (los que le digamos, si le decimos 5 siempre tendrás que guardar 5 caracteres). El máximo que le podemos indicar es 255.
  2. VarChar: cantidad finita de caracteres con un máximo de 255, aunque podemos indicarle que este máximo sea menor.
  3. TinyText y TinyBlob: Texto con una longitud máximo de 255 caracteres.
  4. Blob y Text: texto con un máximo de 65535 caracteres. Text es también muy usado, aunque no tanto como varchar.
  5. MediumBlob y MediumText: texto con un máximo de 16.777.215 caracteres.
  6. LongBlob y LongText: un texto con un máximo de caracteres 4.294.967.295. Hay que tener en cuenta que debido a los protocolos de comunicación os paquetes puleden tener un máximoo puede ocupar más de 16 Mb.
  7. Enum: campo que puede tener un único valor de una lista que se especifica.
  8. Set: un campo que puede contener ninguno, uno ó varios valores de una lista.
La diferencia entre char y varchar es que char ocupa siempre el mismo espacio llenemos la cantidad fija de caracteres o no, y varchar ocupa lo que llenemos, por lo que es preferible usar varchar que char. A Enum y Set se le indican los valores entrecomillados con comilla simple y separador por comas, de la siguiente forma: 'value1','value2',...
Y ya que estareis ansiosos, en el siguiente capítulo comenzaremos a hacer nuestra base de datos con lo aprendido y lo que nos queda por aprender.


Saludos.


Rick
http://www.engineersoftasociados.com


Carlos Miguel FARIAS

unread,
May 10, 2011, 5:25:39 PM5/10/11
to publice...@googlegroups.com
O sea, varchar(1024) es incorrecto (o lo convierte a text)

Oscar Díaz

unread,
May 11, 2011, 10:59:20 AM5/11/11
to publice...@googlegroups.com
Estimado Carlos Miguel:

Para campos memo y blob en mysql, yo utilizo el campo Text.

Saludos desde Bogotá.co

Carlos Miguel FARIAS

unread,
May 11, 2011, 3:41:07 PM5/11/11
to publice...@googlegroups.com
Oscar: En general, el text con 65000 caracteres de capacidad anda barbaro, pero tengo un sistema donde almacenan legislación y el texto tiene varios megas y para eso uso mediumtext, que tira hasta 16 megas

Oscar Díaz

unread,
May 12, 2011, 10:50:40 AM5/12/11
to publice...@googlegroups.com
Gracias por el dato Estimado, Carlos Miguel.

Normandia

unread,
May 12, 2011, 11:00:35 PM5/12/11
to Comunidad de Visual Foxpro en Español
Utiliza mejor mediumtext (hasta 16 millones de caracteres)
ya que el longtext en mi caso me daba error y no me traia la
informacion completa.
>> Saludos desde Vzla.
Reply all
Reply to author
Forward
0 new messages