Está en la página 1de 7

PRACTICA DE SQL

1. Dada la tabla PERSONAS insertar a un persona de apellidos y nombre Quiroga Rojas, Leopoldo,
cuya funcin sea CONSERJE, con DNI 456788999 y con el cdigo 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 nmero 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 nmero 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, FUNCIN). Cmo podremos introducir en esa tabla los datos de las PERSONAS del cdigo
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 Martnez Martnez,
Alejandro en el hospital que tiene tan slo 1 persona (INSERT con SELECT).
insert into personas(dni,nombres,cod_hospital) select 99887766,'Martnez Martnez,
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.

6.- Insertar en la tabla EMPLE un empleado con cdigo 9999, apellido GONZLEZ y cdigo de
departamento 10.
insert into Cliente(emp_no,nombre,depto_no) values(9999,'GONZLEZ',10)
7. Insertar en la tabla EMPLE un empleado con cdigo 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 comisin y pertenece al departamento nmero 20. (Para indicar que no tiene comisin
debers poner NULL en el campo comisin).
insert into Emple values(5000,'MORAGA',' CLIENTEADO',7902,'99/10/17',10000,NULL,20)
8. Insertar en la tabla DEPART un departamento cuyo nmero sea 50, de nombre GENERAL y cuya
localizacin sea SEVILLA.
insert into Depart values(50,'GENERAL','SEVILLA')
9. Insertar en la tabla DEPART un departamento cuyo nmero 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
nmero 30.
insert into Emple30 (select * from Emple where depto_no=30)
11. Insertar en la tabla EMPLE20 el dni, nmero de departamento y salario de los empleados que
pertenecen al departamento nmero 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 nmero 30 al departamento nmero 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 nmero 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 MUOZ 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 nmero 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 comisin.
delete from Emple where comision is null

Se dispone de la tabla HOSPITAL con los siguientes datos.

21. Establecer el nmero de plazas de todos los hospitales a 250.


update hospital set num_plazas=250
22. Establecer en 550 el nmero de plazas del hospital nmero 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 nmero de plazas de todos los hospitales.
update hospital set num_plazas=num_plazas*2

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 desempeen 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 nmero 10.
select * from Cliente where salario>(select salario from Cliente where nombre=Castillo
Montes Luis)and depto_no=10

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 Len.
select
nombre,
oficio,
salario
from
Cliente,
Departamento
Cliente.dept_no=Departamento.dept_no and localizacion=Len

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 comisin.
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 Len 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. Cul es el mximo salario de los empleados del departamento 10?
select max(salario) from Cliente where depto_no=10
16. Calcula el salario mnimo 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. Cuntos empleados hay en el departamento nmero 10?
select count(*) from Cliente where depto_no=10

20. Cuntos empleados hay en el departamento de VENTAS?


select count(*) from Cliente,Departamento where nombre_depto='VENTAS'
21. Calcula el nmero de empleados que no tienen comisin.
select count(*) from Cliente where comision is null
22. Seleccionar el apellido del empleado que tiene mximo salario.
select nombre from Cliente where salario=(select max(salario) from Cliente)
23. Mostrar los apellidos del empleado que tiene el salario ms bajo.
select nombre from Cliente where salario=(select min(salario) from Cliente)
24. Mostrar los datos del empleado que tiene el salario ms 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 cuntos apellidos de los empleados empiezan por la letra
A.
select count(*) from Cliente where nombre like 'A*'

1. Visualizar el nmero 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 ms 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 nmero 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'

where

7. A partir de la tabla Cliente, visualizar el nmero 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 ms 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 nmero de departamento que tenga ms 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 nmero de oficios distintos de cada departamento.
select depto_no,count(*) from Cliente group by depto_no,oficio
14. Mostrar los departamentos que tengan ms de dos personas trabajando en la misma profesin.
select depto_no,count(*) from Cliente group by depto_no,oficio having count(*)>2
15. Dada la tabla HERRAMIENTAS, visualizar por cada estantera la suma de las unidades.
select estanteria,sum(unidades) from herramientas group by estanteria

También podría gustarte