4
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") )

Ejercicios de SQL

Embed Size (px)

Citation preview

Page 1: Ejercicios de SQL

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_estudiofrom estudioswhere 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_estfrom peliculas p,estrella e,protagonistas pr

Page 2: Ejercicios de SQL

where pr.id_peli=p.id_peli and pr.id_estrella=e.id_estrellaand ( 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_estfrom peliculas p,estrella e,protagonistas prwhere pr.id_peli=p.id_peli and pr.id_estrella=e.id_estrellaand 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_pelifrom peliculas pwhere 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_peliFrom estudios e,peliculas pWhere 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_estFrom estrella eWhere 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_estfrom estrella,estudios,peliculaswhere 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"))

Page 3: Ejercicios de SQL

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,hdfrom producto p,pc pcwhere 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 Gigabytesfrom producto p,pc pcwhere 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 impresoraWhere color=’v’4. Encontrar la velocidad media de los PC’s.Select sum(velocidad)/count(velocidad) as velomediaFrom 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,velocidadFrom producto p,pcWhere 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 fabricanteFrom producto p,pcWhere 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_empFrom trabaja,viveWhere 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_empFrom trabaja,viveWhere ( )

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

Select t.salario,t.companiaFrom trabaja t,dirige dWhere 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.