53 - Agregar y eliminar la clave primaria (alter table)


Problema:
Trabaje con la tabla llamada "medicamentos" de una farmacia.

1- Elimine la tabla, si existe:
 drop table if exists medicamentos;

2- Cree la tabla con la siguiente estructura:
 create table medicamentos(
  codigo int unsigned not null,
  nombre varchar(20) not null,
  laboratorio varchar(20),
  precio decimal(6,2) unsigned
);

3- Visualice la estructura de la tabla "medicamentos".

4- Agregue una clave primaria por "codigo":
 alter table medicamentos
  add primary key (codigo);
La clave agregada, no es auto_increment, por ello, al agregar registros debemos ingresar el código, 
si no lo hacemos, se almacenará el valor "0" en el primer registro agregado:
 insert into medicamentos (nombre, laboratorio,precio)
  values('Sertal compuesto','Bayer',5.10); 
y si intentamos agregar más registros, aparecerá un mensaje indicando que la clave está repetida:
 insert into medicamentos (nombre, laboratorio,precio)
  values('Paracetamol 1000','Bago',2.90);

5- Para solucionar esto podemos modificar el campo convirtiéndolo en autoincrementable:
 alter table medicamentos
  modify codigo int unsigned auto_increment;

6- Veamos los registros:
 select * from medicamentos;
El código se alteró, ahora tiene el valor "1".

7- Ingrese más registros:
 insert into medicamentos (nombre, laboratorio,precio)
  values('Paracetamol 500','Bago',1.90);
 insert into medicamentos (nombre, laboratorio,precio)
  values('Bayaspirina','Bayer',2.10);

8- Intente eliminar la clave primaria:
 alter table medicamentos
  drop primary key;
Aparece un mensaje de error. La clave no se puede eliminar porque el campo "codigo" 
es "auto_increment" y si existe un campo con este atributo DEBE ser clave primaria.

9- Modifique el campo "codigo" quitándole el atributo "auto_increment":
 alter table medicamentos
  modify codigo int unsigned not null;

10- Elimine la clave primaria:
 alter table medicamentos
  drop primary key;



 

Otros problemas:
Una pequeña biblioteca de barrio registra los préstamos de sus libros en una tabla llamada "prestamos".

1- Elimine la tabla "prestamos" si existe.

2- Cree la tabla:
 create table prestamos(
  codigo int unsigned,
  titulo varchar(40) not null,
  documento char(8) not null,
  fechaprestamo date not null,
  fechadevolucion date,
  devuelto char(1) /* si se devolvió 's' sino 'n'*/
 );

3- Agregue una clave primaria compuesta por "codigo" y "fechaprestamo":
 alter table prestamos
  add primary key (codigo,fechaprestamo);

4- Intente agregar un registro con clave repetida.

5- Elimine la clave primaria:
 alter table prestamos
  drop primary key;

Retornar