You are on page 1of 3

Ejercicios de SQL

Ejercicio 1.Se tiene una base de datos de películas reflejada por las siguientes tablas

Película (#titulo, #año, duración, nombre_estudio)

CREATE TABLE "PELICULAS"


( "ID_PELI" NUMBER(2,0),
"NOM_PELI" VARCHAR2(50),
"DURA_PELI" NUMBER(4,4),
"ANO_PELI" NUMBER(4,0),
"ID_ESTUDIO" NUMBER(2,0),
CONSTRAINT "PELICULAS_PK" PRIMARY KEY ("ID_PELI"),
CONSTRAINT "ESTUDIO_FK" FOREIGN KEY ("ID_ESTUDIO")
REFERENCES "ESTUDIOS" ("ID_ESTUDIO")
)
/
Estrella (#nombre, dirección, sexo, fecha_nacimiento)

CREATE TABLE "ESTRELLA"


( "ID_ESTRELLA" NUMBER(2,0),
"NOM_EST" VARCHAR2(50),
"DIR_EST" VARCHAR2(40),
"NAC_EST" DATE,
"SEXO_EST" CHAR(1),
CONSTRAINT "ESTRELLA_PK" PRIMARY KEY ("ID_ESTRELLA")
)
/
Estudio (#nombre, dirección)

CREATE TABLE "ESTUDIOS"


( "ID_ESTUDIO" NUMBER(2,0),
"NOM_ESTUDIO" VARCHAR2(50),
"DIR_ESTUDIO" VARCHAR2(50),
CONSTRAINT "ESTUDIOS_PK" PRIMARY KEY ("ID_ESTUDIO")
)

Protagoniza (#título_película, #año_pelìcula, #nombre_estrella)

CREATE TABLE "PROTAGONISTAS"


( "ID_PELI" NUMBER(2,0),
"ID_ESTRELLA" NUMBER(2,0),
CONSTRAINT "PELICULA_FK" FOREIGN KEY ("ID_PELI")
REFERENCES "PELICULAS" ("ID_PELI"),
CONSTRAINT "ESTRELLA_FK" FOREIGN KEY ("ID_ESTRELLA")
REFERENCES "ESTRELLA" ("ID_ESTRELLA")
)

Se pide realizar las siguientes consultas en SQL (Se supone que todos los datos necesarios se encuentran almacenados en las tablas

1. Encontrar la dirección de los estudios MGM.


select dir_estudio
from estudios
where nom_estudio='mgm'

2. Encontrar todas las estrellas que participaron en películas realizadas en 1980 o enalguna película que contenga la palabra “Amor “en el titulo.
select nom_est
from peliculas p,estrella e,protagonistas pr
where pr.id_peli=p.id_peli and pr.id_estrella=e.id_estrella
and ( p.ano_peli=1980 or p.nom_peli like '%amor%')

3. ¿Quién fue la estrella masculina de “El nombre de la rosa”?


select nom_est
from peliculas p,estrella e,protagonistas pr
where pr.id_peli=p.id_peli and pr.id_estrella=e.id_estrella
and p.nom_peli='El nombre de la rosa' and e.sexo_est='m'

4. ¿Qué películas tienen mayor duración que “Lo que el viento se llevo”?
select nom_peli
from peliculas p
where p.dura_peli<(select p.dura_peli from peliculas p where p.nom_peli='Lo que el viento se llevo')

5. Encontrar el titulo y la duración de todas las películas producidas por los estudios Disney en el año 1990, ordenando la salida por su duración.

Select nom_peli,dura_peli
From estudios e,peliculas p
Where p.ano_peli=1990 and e.nom_estudio='Disney' order by p.dura_peli asc

6. Encontrar todas las estrellas que son hombres o viven en Malibu (tienen Malibu como parte de su dirección).
Select nom_est
From estrella e
Where e.dir_est like '%malibu%' and e.sexo_est='m'

7. ¿Qué estrellas distintas aparecen en las películas producidas por la MGM en 1995?
(Si una aparece varias veces mostrarla sólo una vez).
select distinct nom_est
from estrella,estudios,peliculas
where peliculas.ano_peli=1900 and estudios.nom_estudio='mgm'

8. Encontrar la suma de la duración de todas las películas de cada estudio. Sum

Select e.nom_estudio as estudio, sum(dura_peli) as duracion from peliculas p,estudios e


where e.id_estudio=p.id_estudio group by e.nom_estudio,dura_peli

Ejercicio 2.Dada una base de datos de ordenadores e impresoras con las siguientes tablas

Producto (#fabricante, #modelo, tipo)


CREATE TABLE PRODUCTO(
ID_PRODUCTO NUMBER(2,0) primary key,
MODELO varchar(40),
FABRICANTE varchar(40),
TIPO varchar(40)
)
PC (#modelo, velocidad, ram, hd, cd, precio)
create table pc(
id_pc number(2,0),
ID_PRODUCTO number(2,0),
velocidad number(5,0),
ram number(5,0),
hd number(4,0),
cd char(3),
precio number(10,0),
constraint id_pcpk primary key (id_pc),
constraint "id_productofk" foreign key ("ID_PRODUCTO") references "PRODUCTO"("ID_PRODUCTO")
)

Impresora (#modelo, color, tipo, precio)

create table impresora (


id_imp number(2,0),

id_producto number(2,0),
color_imp char(1),
tipo_imp char(20),
precio_imp number(10,0),
constraint "id_productofk" foreign key ("ID_PRODUCTO") references "PRODUCTO"("ID_PRODUCTO")
)
Realizar en SQL las siguientes consultas:

1. Encontrar el modelo, velocidad y tamaño de disco duro (hd) de todos los PC’s cuyo precio sea inferior a $1600.
select modelo,velocidad,hd
from producto p,pc pc
where p.id_producto=pc.id_producto and pc.precio<1600

2. Repetir la consulta de (a), pero cambiando el nombre a las columnas velocidad como Megaherzios y hd como Gigabytes. AS

select modelo,velocidad as Megaherzios,hd as Gigabytes


from producto p,pc pc
where p.id_producto=pc.id_producto and pc.precio=1600

3. Encontrar todas las filas de las tablas de Impresoras que son en color. El valor de la columna color es booleano con los valores ’V’ y ’F’.
Select *
From impresora
Where color=’v’
4. Encontrar la velocidad media de los PC’s.
Select sum(velocidad)/count(velocidad) as velomedia
From pc

5. Decir los fabricantes y la velocidad de los PC’s con disco duro de tamaño mayor o igual a 1 Gigabyte.

Select fabricante,velocidad
From producto p,pc
Where p.id_producto=pc.id_producto and pc.hd=1000

6. Encontrar los fabricantes de los PC’s con velocidad superior a 160 MHz.

Select fabricante
From producto p,pc
Where p.id_producto=pc.id_producto and pc.velocidad>160

Ejercicio 3. Dadas las siguientes tablas, dar una expresión SQL para cada una de las siguientes consultas:

Vive (#nombre, calle, ciudad)


Trabaja (#nombre, #compañía, salario)
Situada (#compañía, ciudad)
Dirige (#nombre, #nombre_director)

1. Encontrar el nombre y la ciudad de todos los empleados que trabajan en El Corte Ingles.

Select nom_emp,ciudad_emp
From trabaja,vive
Where trabaja.id_vive=vive.id_vive and trabaja.compania=’El corte ingles’

2. Encontrar todos los empleados que viven en la misma ciudad que la compañía en la que trabajan.

Select nom_emp
From trabaja,vive
Where ( )

3. Encontrar el salario y la compañía de todos los directores.

Select t.salario,t.compania
From trabaja t,dirige d
Where d.id_dirige=t.id_dirige
4. Encontrar a todos los empleados que viven en la misma ciudad y en la misma calle que su director.

You might also like