95 - Vistas |
Una empresa almacena la información de sus empleados en dos tablas llamadas "empleados" y "secciones".
Eliminamos las tablas, si existen:
drop table if exists empleados; drop table if exists secciones;
Creamos las tablas:
create table secciones( codigo int auto_increment primary key, nombre varchar(30), sueldo decimal(5,2) ); create table empleados( legajo int primary key auto_increment, documento char(8), sexo char(1), apellido varchar(40), nombre varchar(30), domicilio varchar(30), seccion int not null, cantidadhijos int, estadocivil char(10), fechaingreso date );
Ingresamos algunos registros:
insert into secciones(nombre,sueldo) values('Administracion', 300); insert into secciones(nombre,sueldo) values('Contaduría', 400); insert into secciones(nombre,sueldo) values('Sistemas', 500); insert into empleados (documento,sexo,apellido,nombre,domicilio,seccion,cantidadhijos,estadocivil,fechaingreso) values ('22222222','f','Lopez','Ana','Colon 123',1,2,'casado','1990-10-10'); insert into empleados (documento,sexo,apellido,nombre,domicilio,seccion,cantidadhijos,estadocivil,fechaingreso) values('23333333','m','Lopez','Luis','Sucre 235',1,0,'soltero','1990-02-10'); insert into empleados (documento,sexo,apellido,nombre,domicilio,seccion,cantidadhijos,estadocivil,fechaingreso) values('24444444','m','Garcia','Marcos','Sarmiento 1234',2,3,'divorciado','1998-07-12'); insert into empleados (documento,sexo,apellido,nombre,domicilio,seccion,cantidadhijos,estadocivil,fechaingreso) values('25555555','m','Gomez','Pablo','Bulnes 321',3,2,'casado','1998-10-09'); insert into empleados (documento,sexo,apellido,nombre,domicilio,seccion,cantidadhijos,estadocivil,fechaingreso) values('26666666','f','Perez','Laura','Peru 1254',3,3,'casado','2000-05-09');
Eliminamos la vista "vista_empleados" si existe:
drop view if exists vista_empleados;
Creamos la vista "vista_empleados", que es resultado de una combinación en la cual se muestran 4 campos:
create view vista_empleados as select concat(apellido,' ',e.nombre) as nombre, sexo, s.nombre as seccion, cantidadhijos from empleados as e join secciones as s on codigo=seccion;
Vemos la información de la vista:
select nombre, seccion, cantidadhijos from vista_empleados;
Realizamos una consulta a la vista como si se tratara de una tabla:
select seccion, count(*) as cantidad from vista_empleados group by seccion;
Eliminamos la vista "vista_empleados_ingreso" si existe:
drop view if exists vista_empleados_ingreso;
Creamos otra vista de "empleados" denominada "vista_empleados_ingreso" que almacena la cantidad de empleados por año:
create view vista_empleados_ingreso(fecingreso,cantidad) as select extract(year from fechaingreso) as fecingreso, count(*) as cantidad from empleados group by fecingreso;
Vemos la información que suministra la vista:
select fecingreso,cantidad from vista_empleados_ingreso;