Listado completo de tutoriales
59 - Tipos de datos blob y text. |
Los tipos "blob" o "text" son bloques de datos. Tienen una longitud de 65535 caracteres.
Un "blob" (Binary Large Object) puede almacenar un volumen variable de datos. La diferencia entre "blob" y "text" es que "text" diferencia mayúsculas y minúsculas y "blob" no; esto es porque "text" almacena cadenas de caracteres no binarias (caracteres), en cambio "blob" contiene cadenas de caracteres binarias (de bytes).
No permiten valores "default".
Existen subtipos:
- tinyblob o tinytext: longitud máxima de 255 caracteres.
- mediumblob o mediumtext: longitud de 16777215 caracteres.
- longblob o longtext: longitud para 4294967295 caracteres.
Se utiliza este tipo de datos cuando se necesita almacenar imágenes, sonidos o textos muy largos.
Un video club almacena la información de sus películas en alquiler en una tabla denominada "peliculas". Además del título, actor y duración de cada película incluye un campo en el cual guarda la sinopsis de cada una de ellas.
La tabla contiene un campo de tipo "text" llamado "sinopsis":
- codigo: int unsigned auto_increment, clave primaria, - nombre: varchar(40), - actor: varchar(30), - duracion: tinyint unsigned, - sinopsis: text,
Se ingresan los datos en un campo "text" o "blob" como si fuera de tipo cadena de caracteres, es decir, entre comillas:
insert into peliculas values(1,'Mentes que brillan','Jodie Foster',120, 'El no entiende al mundo ni el mundo lo entiende a él; es un niño superdotado. La escuela especial a la que asiste tampoco resuelve los problemas del niño. Su madre hará todo lo que esté a su alcance para ayudarlo. Drama');
Para buscar un texto en un campo de este tipo usamos "like":
select * from peliculas where sinopsis like '%Drama%';
No se pueden establecer valores por defecto a los campos de tipo "blob" o "text", es decir, no aceptan la cláusula "default" en la definición del campo.
Ingresemos al programa "Workbench" y ejecutemos el siguiente bloque de instrucciones SQL:
drop table if exists peliculas; create table peliculas( codigo int unsigned auto_increment, nombre varchar(40), actor varchar(30), duracion tinyint unsigned, sinopsis text, primary key (codigo) ); insert into peliculas values(1,'Mentes que brillan','Jodie Foster',120, 'El no entiende al mundo ni el mundo lo entiende a él, es un niño superdotado. La escuela especial a la que asiste tampoco resuelve los problemas del niño. Su madre hará todo lo que esté a su alcance para ayudarlo. Drama'); insert into peliculas values(2,'Charlie y la fábrica de chocolate','J. Deep',120, 'Un niño llamado Charlie tiene la ilusión de encontrar uno de los 5 tickets del concurso para entrar a la fabulosa fábrica de chocolates del excéntrico Willy Wonka y descubrir el misterio de sus golosinas. Aventuras'); insert into peliculas values(3,'La terminal','Tom Hanks',180, 'Sin papeles y esperando que el gobierno resuelva su situación migratoria, Victor convierte el aeropuerto de Nueva York en su nuevo hogar trasformando la vida de los empleados del lugar. Drama'); select * from peliculas where sinopsis like '%Drama%'; select * from peliculas where sinopsis like '%chocolates%';
Genera una salida similar a esta: