logo

MySQL VARCHAR

Varchar en MySQL es un tipo de datos utilizado para almacenar texto cuya longitud puede tener un máximo de 65535 caracteres . Las columnas varchar en la tabla son de cadena de longitud variable que puede contener números, caracteres o ambos. Este tipo de datos es capaz de almacenar sólo 255 caracteres antes de la versión 5.0.3, pero con esta versión y posteriores, puede contener hasta 65535 caracteres. Se puede almacenar en MySQL como un 1 byte o 2 bytes prefijo de longitud más el tamaño real.

El prefijo de longitud especifica la longitud en bytes de un valor de cadena, no el tamaño máximo que hemos establecido. Si los valores no requieren más de 255 bytes, una columna utiliza un prefijo de longitud más un byte. Si los valores requieren más de 255 bytes, una columna utiliza un prefijo de longitud más dos bytes.

La longitud máxima de un VARCHAR en mysql está sujeto al tamaño de fila máximo de 65.535 bytes, que se comparte entre todas las columnas excepto las columnas TEXTO/BLOB y el juego de caracteres utilizado. Significa que la columna total no debe tener más de 65535 bytes.

Entendámoslo con la ayuda de un ejemplo.

Vamos a crear dos tablas y las llamaremos Prueba1 y Prueba2. Ambas tablas contienen dos columnas denominadas T1 y T2. Ejecute la siguiente declaración para crear una tabla ' Prueba 1 ':

 CREATE TABLE Test1 ( T1 VARCHAR(32765) NOT NULL, T2 VARCHAR(32766) NOT NULL ) CHARACTER SET = 'latin1' COLLATE LATIN1_DANISH_CI; 

La declaración anterior creó una tabla correctamente porque la longitud de la columna T1 = 32765 más 2 bytes y T2 = 32766 más 2 bytes es igual a 65535 (32765+2+32766+2). Entonces, la longitud de la columna satisface el tamaño máximo de fila de varchar, que es 65535.

MySQL VARCHAR

Ahora vamos a ver qué pasa si el tamaño de la columna excede el tamaño máximo de varchar 65535. Ejecute la siguiente declaración donde aumentamos el tamaño de la columna T1 para crear una tabla Prueba2 :

 CREATE TABLE Test2 ( T1 VARCHAR(32770) NOT NULL, T2 VARCHAR(32766) NOT NULL ) CHARACTER SET = 'latin1' COLLATE LATIN1_DANISH_CI; 

Después de ejecutar la declaración anterior, MySQL produce el error. Significa que el tamaño máximo de fila no puede exceder los 65.535 bytes. En cualquier caso, si aumenta, la declaración falló y MySQL generará un error.

MySQL VARCHAR

En otro caso, supongamos que hemos creado una tabla llamada Prueba3 usando la siguiente declaración:

 CREATE TABLE Test3 ( Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(5) NOT NULL ); 

A continuación, inserte valores en la tabla utilizando la siguiente declaración:

 INSERT INTO Test3(Name) VALUES ('Stephen'); 

Ahora, ejecute la declaración anterior. MySQL da el mensaje de error: Los datos son demasiado largos para la columna 'Nombre' en la fila 1 . El resultado lo explica más claramente.

educación shloka mehta
MySQL VARCHAR

MySQL VARCHAR y espacios

MySQL no rellena espacio para los valores varchar cuando se almacenan. MySQL también retuvo los espacios finales cuando almacenó o recuperó valores varchar. Podemos entenderlo a través del siguiente ejemplo donde un insertar declaración agrega valores en el Nombre columna de tabla Prueba3 :

 INSERT INTO Test3(Name) VALUES ('John '); 

A continuación, ejecute la instrucción SELECT para recuperar los valores.

 SELECT Id, Name, length(Name) FROM Test3; 

Dará el siguiente resultado donde MySQL incluyó el espacio final en el recuento de longitud porque no aumenta la longitud de la columna.

MySQL VARCHAR

Sin embargo, cuando intentamos insertar un valor varchar con espacios finales que excedieron la longitud de la columna, MySQL truncar los espacios finales. Además, MySQL emite un advertencia . El siguiente ejemplo lo explica más claramente:

 INSERT INTO Test3(Name) VALUES ('Peter '); 

La declaración anterior inserta un valor cuya longitud es seis en la columna de nombre. El valor aún se inserta en la columna, pero MySQL trunca el espacio final antes de agregar el valor. Podemos verificar usando la siguiente consulta donde podemos ver que la declaración de inserción se agregó correctamente pero con una advertencia que muestra: Datos truncados para la columna 'nombre' en la fila 1 :

MySQL VARCHAR

Diferencia entre el tipo de datos Char y Varchar

Los tipos de datos char y varchar son los siguientes carácter ASCII . Son casi iguales pero difieren en el almacenamiento y recuperación de datos de la base de datos. La siguiente tabla resume las diferencias esenciales entre el tipo de datos char y varchar:

CARBONIZARSE VARCHAR
Tiene carácter. Significa carácter variable.
Almacena los valores en longitud fija que declaramos al crear una tabla. Almacena los valores en una cadena de longitud variable con un prefijo de longitud de uno o dos bytes.
Este tipo de datos se puede rellenar con espacio final para mantener la longitud especificada. Este tipo de datos no se puede completar con ningún carácter, incluido el espacio, cuando se almacenan.
No puede contener más de 255 caracteres. Puede contener hasta 65535 caracteres.
Admite la asignación de memoria estática. Admite la asignación de memoria dinámica.