PRACTICA DE SQL. Se dispone de las tablas EMPLE y DEPART que contienen los siguientes datos

PRACTICA DE SQL 1. Dada la tabla PERSONAS insertar a un persona de apellidos y nombre ‘Quiroga Rojas, Leopoldo’, cuya función sea ‘CONSERJE’, con DNI...
20 downloads 3 Views 212KB Size
PRACTICA DE SQL

1. Dada la tabla PERSONAS insertar a un persona de apellidos y nombre ‘Quiroga Rojas, Leopoldo’, cuya función sea ‘CONSERJE’, con DNI 456788999 y con el código de hospital 4. insert into personas values(4,456788999,'Quiroga Rojas, Leopoldo','CONSERJE',NULL) 2. Inserta en la tabla PERSONAS una persona de nombre ‘Serrano Ruiz, Antonio’, con DNI 111333222 perteneciente al hospital número 3. insert into personas(nombres,dni,cod_hospital) values('Serrano Ruiz, Antonio',111333222,3) 3. Inserta en la tabla PERSONAS1 los datos de las personas que trabajan en el hospital número 1 (INSERT con SELECT). insert into personas1 select * from personas where cod_hospital=1 4. Se ha creado una nueva tabla llamada PERSONAS2. Esta tabla tiene los siguientes campos (DNI, APELLIDOS, FUNCIÓN). ¿Cómo podremos introducir en esa tabla los datos de las PERSONAS del código de hospital 4? insert into personas2 select dni,nombres,funcion from personas where cod_hospital=2 5. Inserta en la tabla PERSONAS una persona con DNI 99887766 y apellidos ‘Martínez Martínez, Alejandro’ en el hospital que tiene tan sólo 1 persona (INSERT con SELECT). insert into personas(dni,nombres,cod_hospital) select 99887766,'Martínez Martínez, Alejandro',cod_hospital from personas group by cod_hospital having count(*)=1 Se dispone de las tablas EMPLE y DEPART que contienen los siguientes datos.

1

6.- Insertar en la tabla EMPLE un empleado con código 9999, apellido ‘GONZÁLEZ’ y código de departamento 10. insert into Cliente(emp_no,nombre,depto_no) values(9999,'GONZÁLEZ',10) 7. Insertar en la tabla EMPLE un empleado con código 5000, apellido ‘MORAGA’, oficio ‘EMPLEADO’, su director es el empleado 7902, la fecha de alta en la empresa es ‘17/10/99’, su salario es 100000, no tiene comisión y pertenece al departamento número 20. (Para indicar que no tiene comisión deberás poner NULL en el campo comisión). insert into Emple values(5000,'MORAGA',' CLIENTEADO',7902,'99/10/17',10000,NULL,20) 8. Insertar en la tabla DEPART un departamento cuyo número sea 50, de nombre ‘GENERAL’ y cuya localización sea ‘SEVILLA’. insert into Depart values(50,'GENERAL','SEVILLA') 9. Insertar en la tabla DEPART un departamento cuyo número sea 60 y de nombre ‘PRUEBAS’. insert into Depart(depto_no,nombre_depto) values(60,'PRUEBAS') 10. Insertar en la tabla EMPLE30 los datos de los empleados que pertenecen al departamento número 30. insert into Emple30 (select * from Emple where depto_no=30) 11. Insertar en la tabla EMPLE20 el dni, número de departamento y salario de los empleados que pertenecen al departamento número 20. insert into Emple 20(select dni,depto_no,salario from Emple where depto_no=20) 12. Doblar el salario a todos los empleados del departamento 30. update Emple set salario=salario*2 where depto_no=30 13. Cambiar todos los empleados del departamento número 30 al departamento número 20. update Emple set depto_no=20 where depto_no=30 14. Incrementar en un 10% el sueldo de los empleados del departamento 10. update Emple set salario=salario*1.1 where depto_no=10 15. Cambiar la localidad del departamento número 10 a ‘BILBAO’. update Emple set loc='BILBAO' where depto_no=10 16. Igualar el salario de ‘ARROYO’ al salario de ‘NEGRO’, de la tabla EMPLE30. update Emple set salario=(select salario from Emple30 where nombre='NEGRO') where nombre='ARROYO' 17. Igualar el salario y oficio de ‘MUÑOZ’ al salario y oficio de ‘JIMENO’, de la tabla EMPLE30. update Emple set salario=(select salario from Emple30 where nombre='JIMENO'), oficio=(select oficio from Emple30 where nombre='JIMENO') 18. En la tabla DEPART borrar el departamento número 50. delete from Depart where depto_no=50 19. En la tabla EMPLE borrar todos los empleados que sean del departamento 20 y sean ‘ANALISTAS’. delete from Emple where depto_no=20 and oficio='ANALISTA' 20. Borrar de la tabla EMPLE todos los empleados que no tengan comisión. delete from Emple where comision is null

2

Se dispone de la tabla HOSPITAL con los siguientes datos.

21. Establecer el número de plazas de todos los hospitales a 250. update hospital set num_plazas=250 22. Establecer en 550 el número de plazas del hospital número 3. update hospital set num_plazas=550 where cod_hospital=3 23. Borra todos los hospitales cuyo nombre comience por la letra ‘R’. delete from hospital where nombre like 'R%' 24. Duplica el número de plazas de todos los hospitales. update hospital set num_plazas=num_plazas*2

3

Consultas con SQL:

1. Mostrar los datos de los Clientes que pertenezcan al mismo departamento que ‘Delgado Carmen’. select * from Cliente where dept_no=(select dept_no from Cliente where nombre='Delgado Carmen') 2. Mostrar los datos de los empleados que tengan el mismo oficio que ‘Castillo Montes Luis’. El resultado debe ir ordenado por apellido. select * from Cliente where oficio=(select oficio from Cliente where nombre=”Castillo Montes Luis”) 3. Mostrar los empleados (nombre, oficio, salario y fecha de alta) que desempeñen el mismo oficio que ‘Julio’ o que tengan un salario mayor o igual que ‘José’. select * from Cliente where oficio=(select oficio from Cliente where nombre='Lopez Hernandez Julio')or salario>(select salario from Cliente where nombre=”Esquivel Jose”) 4. Mostrar el apellido, oficio y salario de los empleados del departamento de ‘José’ que tengan su mismo salario. select nombre, oficio, salario from Cliente where dept_no=(select oficio from Cliente where nombre=”Esquivel Jose”)and salario=(select salario from Cliente where nombre=”ESQUIVEL JOSE”) 5. Mostrar los datos de los empleados que tengan un salario mayor que ‘Luis Castillo’ y que pertenezcan al departamento número 10. select * from Cliente where salario>(select salario from Cliente where nombre=”Castillo Montes Luis”)and depto_no=10

4

6. Mostrar los apellidos, oficios y localizaciones de los departamentos de cada uno de los empleados. select nombre, oficio, localizacion from Cliente, Departamento where Cliente.dept_no=Departamento.depto_no 7. Seleccionar el apellido, el oficio y la localidad de los departamentos donde trabajan los ANALISTAS. select nombre, oficio, localizacion from Cliente, Departamento where oficio='ANALISTA' and Cliente.dept_no=Departamento.dept_no 8. Seleccionar el apellido, el oficio y salario de los empleados que trabajan en León. select nombre, oficio, salario from Cliente, Departamento Cliente.dept_no=Departamento.dept_no and localizacion=”León”

where

9. Seleccionar el apellido, salario y localidad donde trabajan de los empleados que tengan un salario entre 20000 y 30000. select nombre, salario, localizacion from Cliente,Departamento where Cliente.depto_no=Departamento.depto_no and salario between 20000 and 30000 10. Mostrar el apellido, salario y nombre del departamento de los empleados que tengan el mismo oficio que ‘Luis Castillo’. select nombre, salario, nombre_depto from Cliente,Departamento where Cliente.dept_no=Departamento.dept_no and oficio=(select oficio from Cliente where nombre==”Castillo Montes Luis”) 11. Mostrar el apellido, salario y nombre del departamento de los empleados que tengan el mismo oficio que “Castillo Montes Luis” y que no tengan comisión. select nombre, salario, nombre_depto from Cliente,Departamento where Cliente.dept_no=Departamento.dept_no and oficio=(select oficio from Cliente where nombre=”Castillo Montes Luis”)and comision is null 12. Mostrar los datos de los empleados que trabajan en el departamento de contabilidad, ordenados por apellidos. select * from Cliente,Departamento where Cliente.dept_no=Departamento.dept_no and nombre_depto='Contabilidad' order by nombre 13. Apellido de los empleados que trabajan en León y cuyo oficio sea analista o empleado. select nombre from Cliente,Departamento wher Cliente.depto_no=Departamento.depto_no and localizacion='Sevilla' and oficio in('analista','Empleado') 14. Calcula el salario medio de todos los empleados. select avg(salario) from Cliente 15. ¿Cuál es el máximo salario de los empleados del departamento 10? select max(salario) from Cliente where depto_no=10 16. Calcula el salario mínimo de los empleados del departamento ‘VENTAS’. select min(salario) from Cliente,Departamento where nombre_depto=”Ventas” and .depto_no=Departamento.depto_no

Cliente

17. Calcula el promedio del salario de los empleados del departamento de ‘CONTABILIDAD’. select avg(salario) from Cliente,Departamento Cliente.depto_no=Departamento.depto_no and nombre_depto=”Contabilidad”

where

18. Mostrar los datos de los empleados cuyo salario sea mayor que la media de todos los salarios. select *from Cliente where salario>(select avg(salario) from Cliente) 19. ¿Cuántos empleados hay en el departamento número 10? select count(*) from Cliente where depto_no=10

5

20. ¿Cuántos empleados hay en el departamento de ‘VENTAS’? select count(*) from Cliente,Departamento where nombre_depto='VENTAS' 21. Calcula el número de empleados que no tienen comisión. select count(*) from Cliente where comision is null 22. Seleccionar el apellido del empleado que tiene máximo salario. select nombre from Cliente where salario=(select max(salario) from Cliente) 23. Mostrar los apellidos del empleado que tiene el salario más bajo. select nombre from Cliente where salario=(select min(salario) from Cliente) 24. Mostrar los datos del empleado que tiene el salario más alto en el departamento de ‘VENTAS’. select nombre from Cliente,Departamento where Cliente.depto_no=Departamento.depto_no and nombre_depto='VENTAS' and salario=(select max(salario) from Cliente,Departamento where Cliente.depto_no=Departamento.depto_no and nombre_depto='VENTAS') 25. A partir de la tabla EMPLE visualizar cuántos apellidos de los empleados empiezan por la letra ‘A’. select count(*) from Cliente where nombre like 'A*'

1. Visualizar el número de empleados de cada departamento. select Cliente.depto_no,count(*) from Cliente,Departamento Cliente.depto_no=Departamento.depto_no group by Cliente.depto_no 2. Visualizar los departamentos con más de 5 empleados. select Cliente.depto_no,count(*) from Cliente.depto_no=Departamento.depto_no group by Cliente.depto_no having count(*)>5

Cliente,Departamento

3. Hallar la media de los salarios de cada departamento. select Cliente.depto_no,avg(salario) from Cliente, Departamento Cliente.depto_no=Departamento.depto_no group by Cliente.depto_no

where

where

where

4. Visualizar el nombre de los empleados vendedores del departamento ‘VENTAS’. select nombre from Cliente,Departamento where Cliente.depto_no=Departamento.depto_no and nombre_depto='VENTAS' and oficio='VENDEDOR' 5. Visualizar el número de vendedores del departamento ‘VENTAS’. select count(*) from Cliente,Departamento where Cliente.depto_no=Departamento.depto_no and nombre_depto='VENTAS' and oficio='VENDEDOR' 6. Visualizar los oficios de los empleados del departamento ‘VENTAS’. select nombre,oficio from Cliente,Departamento Cliente.depto_no=Departamento.depto_no and nombre_depto='VENTAS'

6

where

7. A partir de la tabla Cliente, visualizar el número de empleados de cada departamento cuyo oficio sea ‘EMPLEADO’. select Cliente.depto_no,count(*) from Cliente,Departamento where Cliente.depto_no=Departamento.depto_no and oficio=' CLIENTEADO' group by Cliente.depto_no 8. Visualizar el departamento con más empleados. select depto_no from Cliente group by count(*) having count(*)=(select max(count(*)) from Cliente group by depto_no) 9. Mostrar los departamentos cuya suma de salarios sea mayor que la media de salarios de todos los empleados. select depto_no,avg(salario) from Cliente group by depto_no having avg(salario)>(select avg(salario) from Cliente) 10. Para cada oficio obtener la suma de salarios. select oficio,sum(salario) from Cliente group by oficio 11. Visualizar la suma de salarios de cada oficio del departamento ‘VENTAS’. select oficio,sum(salario) from Cliente,Departamento Cliente.depto_no=Departamento.depto_no and nombre_depto='VENTAS' group by oficio

where

12. Visualizar el número de departamento que tenga más empleados cuyo oficio sea empleado. select depto_no from Cliente where oficio=' Clienteado' group by depto_no having count(*)=(select max(count(*)) from Cliente where oficio=' Clienteado' group by depto_no) 13. Mostrar el número de oficios distintos de cada departamento. select depto_no,count(*) from Cliente group by depto_no,oficio 14. Mostrar los departamentos que tengan más de dos personas trabajando en la misma profesión. select depto_no,count(*) from Cliente group by depto_no,oficio having count(*)>2 15. Dada la tabla HERRAMIENTAS, visualizar por cada estantería la suma de las unidades. select estanteria,sum(unidades) from herramientas group by estanteria

7

Suggest Documents