domingo, 7 de febrero de 2016

Practicando Consultas de Base de Datos - Boletín 6 Mysql -


Hoy quiero postear la última práctica en la que estamos trabajando los alumnos de 1ºASIR del IES Gonzalo Nazareno para el módulo de Base de Datos.

En esta pratica estamos jugando con el lenguaje SQL para realizar consultar a la base de datos que está siendo soportada por MySQL. El boletín que estamos trabajando es el número 6. Este es el enlace para descargar el boletín.

Aquí os dejó el Script de creación de tablas:
 
-- SCRIPT --

#CREAMOS TABLA DEPARTAMENTO
create table depart(
dept_no integer,
dnombre varchar(20),
loc varchar(20),
primary key (dept_no)
);

#INSERTAMOS DATOS A LA TABLA DEPARTAMENTO
insert into depart
values ('10','CONTABILIDAD','SEVILLA');
insert into depart
values ('20','INVESTIGACION','MADRID');
insert into depart
values ('30','VENTAS','BARCELONA');
insert into depart
values ('40','PRODUCCION','BILBAO');

#CREAMOS TABLA EMPLEADOS
create table emple(
emp_no integer,
apellidos varchar(20),
oficio varchar(20),
dir integer,
fecha_alt date,
salario integer,
comision integer,
dept_no integer,
primary key (emp_no),
foreign key (dept_no) references depart (dept_no)
);

#INSERTAMOS DATOS A TABLA EMPLEADOS
insert into emple (emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no)
values ('7369','SANCHEZ','EMPLEADO','7902','17/12/1980','104000','20');
insert into emple
values ('7499','ARROYO','VENDEDOR','7698','20/02/1980','208000','39000','30');
insert into emple
values ('7521','SALA','VENDEDOR','7698','22/02/1981','162500','162500','30');
insert into emple (emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no)
values ('7566','JIMENEZ','DIRECTOR','7839','02/04/1981','386750','20');
insert into emple
values ('7654','MARTIN','VENDEDOR','7698','29/09/1981','162500','182000','30');
insert into emple(emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no)
values ('7698','NEGRO','DIRECTOR','7839','01/05/1981','370500','30');
insert into emple(emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no)
values ('7788','GIL','ANALISTA','7566','09/11/1981','390000','20');
insert into emple(emp_no, apellidos, oficio, fecha_alt, salario, dept_no)
values ('7839','REY','PRESIDENTE','17/11/1981','650000','10');
insert into emple
values ('7844','TOVAR','VENDEDOR','7698','08/09/1981','195000','0','30');
insert into emple(emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no)
values ('7876','ALONSO','EMPLEADO','7788','23/09/1981','143000','20');
insert into emple(emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no)
values ('7900','JIMENO','EMPLEADO','7698','03/12/1981','1235000','30');
insert into emple(emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no)
values ('7902','FERNANDEZ','ANALISTA','7566','03/12/1981','390000','20');
insert into emple(emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no)
values ('7934','MUÑOZ','EMPLEADO','7782','23/01/1982','169000','10');
Ahora os dejó con las consultas que nos pide el Boletín 6:
 
-- CONSULTAS --

1. Mostrar los datos de los empleados que pertenezcan al mismo departamento
que ʻGILʼ.

select * from emple where dept_no = (select dept_no from depart where apellidos="GIL");

2. Mostrar los datos de los empleados que tengan el mismo oficio que
ʻCEREZOʼ. El resultado debe ir ordenado por apellido.

select * from emple where oficio in (select oficio from emple where apellidos="CEREZO") order by apellidos;

3. Mostrar los empleados (nombre, oficio, salario y fecha de alta) que
desempeñen el mismo oficio que ʻJIMÉNEZʼ o que tengan un salario mayor o
igual que ʻFERNÁNDEZʼ.

select apellidos, oficio, salario, fecha_alt from emple where oficio in (select oficio from emple where apellidos="JIMÉNEZ") or salario >= (select salario from emple where apellidos="FERNÁNDEZ");

4. Mostrar en pantalla el apellido, oficio y salario de los empleados del
departamento de ʻFERNÁNDEZʼ que tengan su mismo salario.

select apellido, oficio, salario
from emple
where salario = (select salario
    from emple
    where dept_no = (select dept_no
        from emple
        where apellido="FERNÁNDEZ"));

5. Mostrar los datos de los empleados que tengan un salario mayor que ʻGILʼ y
que pertenezcan al departamento número 10.

select *
from emple
where salario > (select salario
     from emple
     where apellido="GIL")
and dept_no="10";

6. Mostrar los apellidos, oficios y localizaciones de los departamentos de cada
uno de los empleados.

select apellido, oficio, depart.loc
from emple, depart
where emple.dept_no=depart.dept_no;

7. Seleccionar el apellido, el oficio y la localidad de los departamentos donde
trabajan los ANALISTAS.

select apellido, oficio, depart.loc
from emple, depart
where emple.dept_no=depart.dept_no
and oficio="ANALISTAS";

8. Seleccionar el apellido, el oficio y salario de los empleados que trabajan en
Madrid.

select apellido, oficio, salario
from emple
where dept_no in (select dept_no
     from depart
     where loc="MADRID");

9. Seleccionar el apellido, salario y localidad donde trabajan de los empleados
que tengan un salario entre 200000 y 300000.

select apellido, salario, depart.loc 
from emple, depart
where emple.dept_no=depart.dept_no
and salario > "200000" and salario < "300000";

10. Mostrar el apellido, salario y nombre del departamento de los empleados
que tengan el mismo oficio que ʻGILʼ.

select apellido, salario, depart.dnombre
from emple,depart
where emple.dept_no=depart.dept_no
and oficio = in (select oficio
    from emple
    where apellido="GIL");

11. Mostrar el apellido, salario y nombre del departamento de los empleados
que tengan el mismo oficio que ʻGILʼ y que no tengan comisión.

select apellido, salario, depart.dname
from emple, depart
where emple.dept_no=depart.dept_no
and oficio = in (select oficio
    from emple
    where apellido="GIL")
and nvl(0,comision) = 0;

12. Mostrar los datos de los empleados que trabajan en el departamento de
contabilidad, ordenados por apellidos.

select *
from emple
where dept_no in (select dept_no
     from depart
     where dnombre="CONTABLIIDAD")
order by apellidos;

13. Apellido de los empleados que trabajan en Sevilla y cuyo oficio sea analista
o empleado.

select apellido
from emple
where dept_no in (select dept_no
     from depart
     where loca="SEVILLA")
and oficio in ("ANALISTA","EMPLEADO");

14. Calcula el salario medio de todos los empleados.

select avg(salario)
from emple;

16. Calcula el salario mínimo de los empleados del departamento 'VENTAS'.

select min(salario)
from emple
where dept_no in (select dept_no
     from depart
     where dnombre="VENTAS");

17. Calcula el promedio del salario de los empleados del departamento de
'CONTABILIDAD'.

select avg(salario)
from emple
where dept_no in (select dept_no
     from depart
     where dnombre="CONTABILIDAD");

18. Mostrar los datos de los empleados cuyo salario sea mayor que la media de
todos los salarios.

select *
from emple
where salario > (select avg(salario)
    from emple);

19. ¿Cuántos empleados hay en el departamento número 10?

select count(*)
from emple
where dept_no=10;

20. ¿Cuántos empleados hay en el departamento de 'VENTAS'?

select count(*)
from emple
where dept_no in (select dept_no
     from depart
     whre dnombre="VENTAS");

21. Calcula el número de empleados que hay que no tienen comisión.

select count(*)
from emple
where nvl(0,comision)=0;

22. Seleccionar el apellido del empleado que tiene máximo salario.

select apellido
from emple
where salario = (select max(salario)
    from emple);

23. Mostrar los apellidos del empleado que tiene el salario más bajo.

select apellido
from emple
where salario = (select min(salario)
    from emple);

24. Mostrar los datos del empleado que tiene el salario más alto en el
departamento de 'VENTAS'.

select apellido
from emple
where salario = (select max(salario)
    from emple)
and dept_no in (select dept_no
    from depart
    where dnombre="VENTAS");

25. A partir de la tabla EMPLE visualizar cuántos apellidos de los empleados
empiezan por la letra ʻA.

select count(*)
from emple
where apellido like "A%";

 
Bueno eso ha sido todo, nos vemos el próximo post, chau ;D
 

No hay comentarios:

Publicar un comentario