97 - Vistas actualizables (insert, update y delete) |
Borramos las tablas si existen y luego las creamos:
drop table if exists alumnos; drop table if exists profesores; create table alumnos( documento char(8), nombre varchar(30), nota decimal(4,2), codigoprofesor int, primary key(documento) ); create table profesores ( codigo int auto_increment, nombre varchar(30), primary key(codigo) );
Insertamos algunas filas en las dos tablas:
insert into alumnos values('30111111','Ana Algarbe', 5.1, 1);
insert into alumnos values('30222222','Bernardo Bustamante', 3.2, 1);
insert into alumnos values('30333333','Carolina Conte',4.5, 1);
insert into alumnos values('30444444','Diana Dominguez',9.7, 1);
insert into alumnos values('30555555','Fabian Fuentes',8.5, 2);
insert into alumnos values('30666666','Gaston Gonzalez',9.70, 2);
insert into profesores(nombre) values ('Maria Luque');
insert into profesores(nombre) values ('Jorje Dante');
Borramos la vista si ya existe y luego la creamos:
drop view if exists vista_nota_alumnos_aprobados;
-- Creamos una vista con los datos de todos los alumnos que tienen
-- una nota mayor o igual a 7, junto con el nombre del profesor que
-- lo calificó
create view vista_nota_alumnos_aprobados as
select documento,
a.nombre as nombrealumno,
p.nombre as nombreprofesor,
nota,
codigoprofesor
from alumnos as a
join profesores as p on a.codigoprofesor=p.codigo
where nota>=7;
Mostramos el resultado de la vista:
select * from vista_nota_alumnos_aprobados;
Mediante la vista insertamos un nuevo alumno calificado por el profesor con código 1:
insert into vista_nota_alumnos_aprobados(documento, nombrealumno, nota, codigoprofesor)
values('99999999','Rodriguez Pablo', 10, 1);
Mostramos la vista:
select * from vista_nota_alumnos_aprobados;
Consultamos la tabla base: alumnos, tenemos una nueva fila con el alumno insertado:
select * from alumnos;
Modificamos la nota de un alumno aprobado mediante la vista:
update vista_nota_alumnos_aprobados set nota=10 where documento='30444444'; select * from alumnos;