sábado, 7 de abril de 2012

13 - Comando truncate table.

Aprendimos que para borrar todos los registro de una tabla se usa "delete" sin condición "where".

También podemos eliminar todos los registros de una tabla con "truncate table". Por ejemplo, queremos vaciar la tabla "libros", usamos:

truncate table libros;
 
La sentencia "truncate table" vacía la tabla (elimina todos los registros) y vuelve a crear la tabla con la misma estructura.

La diferencia con "drop table" es que esta sentencia borra la tabla, "truncate table" la vacía.

La diferencia con "delete" es la velocidad, es más rápido "truncate table" que "delete" (se nota cuando la cantidad de registros es muy grande) ya que éste borra los registros uno a uno.

Otra diferencia es la siguiente: cuando la tabla tiene un campo "auto_increment", si borramos todos los registros con "delete" y luego ingresamos un registro, al cargarse el valor en el campo autoincrementable, continúa con la secuencia teniendo en cuenta el valor mayor que se había guardado; si usamos "truncate table" para borrar todos los registros, al ingresar otra vez un registro, la secuencia del campo autoincrementable vuelve a iniciarse en 1.

Por ejemplo, tenemos la tabla "libros" con el campo "codigo" definido "auto_increment", y el valor más alto de ese campo es "5", si borramos todos los registros con "delete" y luego ingresamos un registro sin valor de código, se guardará el valor "6"; si en cambio, vaciamos la tabla con "truncate table", al ingresar un nuevo registro sin valor para el código, iniciará la secuencia en 1 nuevamente.


Problema Resuelto:

Trabajamos con la tabla "libros" de una librería.

Eliminamos la tabla, si existe:

drop table if exists libros;
 
Creamos la tabla:

create table libros(
  codigo integer auto_increment,
  titulo varchar(20),
  autor varchar(30),
  editorial varchar(15),
  primary key (codigo)
 );
 
Ingresamos algunos registros:

insert into libros (titulo,autor,editorial)
  values('Martin Fierro','Jose Hernandez','Planeta');
 insert into libros (titulo,autor,editorial)
  values('Aprenda PHP','Mario Molina','Emece');
 insert into libros (titulo,autor,editorial)
  values('Cervantes y el quijote','Borges','Paidos');
 insert into libros (titulo,autor,editorial)
  values('Matematica estas ahi', 'Paenza', 'Paidos');
 insert into libros (titulo,autor,editorial)
  values('El aleph', 'Borges', 'Emece');
 
Eliminemos todos los registros con "delete":

delete from libros;
 
Veamos el resultado:

select * from libros;
 
La tabla ya no contiene registros.

Ingresamos un nuevo registro:

insert into libros (titulo,autor,editorial)
 values('Antología poetica', 'Borges', 'Emece');
 
Veamos el resultado:

select * from libros;
 
Para el campo "codigo" se guardó el valor 6 porque el valor más alto de ese campo, antes de eliminar todos los registros era "5".

Ahora vaciemos la tabla:

truncate table libros;
 
Veamos qué sucede si ingresamos otro registro sin valor para el código:

insert into libros (titulo,autor,editorial)
 values('Antología poetica', 'Borges', 'Emece');
 
Vemos que la secuencia de "codigo" empezó en 1 nuevamente.

Ejecutamos entonces:

select * from libros;
 
 
 
Problema Propuesto: 
Una farmacia guarda información referente a sus medicamentos en una tabla 
llamada "medicamentos".

1- Elimine la tabla, si existe:
 
2- Cree la tabla con la siguiente estructura: 
 
create table medicamentos(
  codigo integer auto_increment,
  nombre varchar(20),
  laboratorio varchar(20),
  precio float,
  cantidad integer,
  primary key (codigo)
 );

3- Ingrese los siguientes registros:
 
(nombre, laboratorio,precio,cantidad)
  Sertal,Roche,5.2,100
  Buscapina,Roche,4.10,200
  Amoxidal 500,Bayer,15.60,100

4- Elimine todos los registros con "delete":
 
5- Ingrese 2 registros:
 
   Sertal,Roche,5.2,100
   Amoxidal 500,Bayer,15.60,100

6- Vea los registros para verificar que continuó la secuencia al generar 
el valor para "codigo":

7- Vacíe la tabla:
  
8- Ingrese el siguiente registro:
 
  Buscapina,Roche,4.10,200

9- Vea los registros para verificar que al cargar el código reinició
 la secuencia en 1.
 
 
 
Otros problemas: 
Un videoclub almacena información sobre sus películas en una tabla 
llamada "peliculas".

1- Elimine la tabla si existe.

2- Créela con la siguiente estructura:
 -codigo (entero), autoincremento,
 -titulo (cadena de 30),
 -actor (cadena de 20),
 -duracion (entero),
 -clave primaria: codigo.

3- Ingrese los siguientes registros: 
 
(titulo,actor,duracion)
 Mision imposible,Tom Cruise,120
 Harry Potter y la piedra filosofal,xxx,180
 Harry Potter y la camara secreta,xxx,190
 Mision imposible 2,Tom Cruise,120
 La vida es bella,zzz,220

4- Seleccione todos los registros y verifique la carga automática de los códigos.

5- Elimine todos los registros:
 
6- Ingrese el siguiente registro, sin valor para la clave primaria:
 
  Mujer bonita,Richard Gere,120

7- Vea los registros para verificar que al generar el valor para 
"codigo" continuó la secuencia:
 
8- Elimine todos los registros vaciando la tabla:
 
9- Ingrese el siguiente registro:
 
  Elsa y Fred,China Zorrilla,90

10- Muestre el registro ingresado para verificar que inició 
la secuencia nuevamente para el campo "codigo":
 
 

No hay comentarios:

Publicar un comentario