0% encontró este documento útil (0 votos)
650 vistas29 páginas

Consultas SQL para Productos y Fabricantes

Este documento contiene las instrucciones para la Práctica 7 de Consultas SQL de un curso de Diseño de Base de Datos. Se presentan 38 consultas SQL univariadas y multivariadas sobre tablas de productos y fabricantes para listar, filtrar, ordenar y resumir datos. El objetivo es que el estudiante practique diferentes tipos de consultas sobre una base de datos relacional.

Cargado por

Ivan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
650 vistas29 páginas

Consultas SQL para Productos y Fabricantes

Este documento contiene las instrucciones para la Práctica 7 de Consultas SQL de un curso de Diseño de Base de Datos. Se presentan 38 consultas SQL univariadas y multivariadas sobre tablas de productos y fabricantes para listar, filtrar, ordenar y resumir datos. El objetivo es que el estudiante practique diferentes tipos de consultas sobre una base de datos relacional.

Cargado por

Ivan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

 

UNIVERSIDAD PRIVADA DE TACNA


 FACULTAD DE INGENIERIA
Escuela Profesional de Ingeniería de Sistemas

PRÁCTICA 7 CONSULTAS SQL


 Curso: Diseño de Base de Datos
Docente: Ing. Oliver Santana Carbajal

 Alumno:

Puma Villa, Brayan (2015052787)

Tacna – Perú

2021-I
 

Consultas sobre una tabla


1. Lista el nombre de todos los productos que hay en la tabla producto.

SELECT nombre

FROM producto
 

2. Lista los nombres y los precios de todos los productos de la tabla producto.

SELECT nombre, precio

FROM producto

3. Lista todas las columnas de la tabla producto.

SELECT *

FROM producto

4. Lista el nombre de los productos, el precio en euros y el precio en dólares estadounidenses


(USD).

SELECT nombre, precio, precio * 1.15

FROM producto

5. Lista el nombre de los productos, el precio en euros y el precio en dólares estadounidenses


(USD). Uliza los siguientes alias para las columnas: nombre de producto, euros, dólares.

SELECT nombre AS 'nombre de producto', precio AS euros, precio


prec io * 1.15 AS dólares

FROM producto
 

6. Lista los nombres y los precios de todos los productos de la tabla producto, convirendo los
nombres a mayúscula.

SELECT UPPER(nombre), precio

FROM producto

7. Lista los nombres y los precios de todos los productos de la tabla producto, convirendo los
nombres a minúscula.

SELECT LOWER(nombre), precio

FROM producto

8. Lista el nombre de todos los fabricantes en una columna, y en otra columna obtenga en
mayúsculas los dos primeros caracteres del nombre del fabricante.

SELECT nombre, UPPER(SUBSTR(nombre, 1, 2))

FROM fabricante

9. Lista los nombres y los precios de todos los productos de la tabla producto, redondeando el
valor del precio.

SELECT nombre, ROUND(precio)

FROM producto
 

10. Lista los nombres y los precios de todos los productos de la tabla producto, truncando el
valor del precio para mostrarlo sin ninguna cifra decimal.

SELECT nombre, TRUNCATE(precio)

FROM producto

11. Lista el código de los fabricantes que enen productos en la tabla producto.

SELECT codigo_fabricante

FROM producto

12. Lista el código de los fabricantes que enen productos en la tabla producto, eliminando los
códigos que aparecen repedos.

SELECT DISTINCT codigo_fabricante

FROM producto

13. Lista los nombres de los fabricantes ordenados de forma ascendente.

SELECT nombre

FROM fabricante

ORDER BY nombre ASC

14. Lista los nombres de los fabricantes ordenados de forma descendente.

SELECT nombre

FROM fabricante

ORDER BY nombre DESC


 

15. Lista los nombres de los productos ordenados en primer lugar por el nombre de forma
ascendente y en segundo lugar por el precio de forma descendente.

SELECT nombre, precio

FROM producto

ORDER BY nombre ASC, precio DESC

16. Devuelve una lista con las 5 primeras las de la tabla fabricante.

SELECT *

FROM fabricante

LIMIT 5

17. Devuelve una lista con 2 las a parr de la cuarta la de la tabla fabricante. La cuarta la
también se debe incluir en la respuesta.

SELECT *

FROM fabricante

LIMIT 3, 2

18. Lista el nombre y el precio del producto más barato. (Ulice solamente las cláusulas ORDER
BY y LIMIT)

SELECT nombre, precio

FROM producto

ORDER BY precio ASC

LIMIT 1
 

19. Lista el nombre y el precio del producto más caro. (Ulice solamente las cláusulas ORDER BY
y LIMIT)

SELECT nombre, precio

FROM producto

ORDER BY precio DESC

LIMIT 1

20. Lista el nombre de todos los productos del fabricante cuyo código de fabricante es igual a 2.

SELECT nombre

FROM producto

WHERE codigo_fabricante = 2

21. Lista el nombre de los productos que enen un precio menor o igual a 120€.

SELECT nombre

FROM producto

WHERE precio <= 120

22. Lista el nombre de los productos que enen un precio mayor o igual a 400€.

SELECT nombre

FROM producto

WHERE precio >= 400


 

23. Lista el nombre de los productos que no enen un precio mayor o igual a 400€.

SELECT nombre
FROM producto

WHERE NOT precio >= 400

24. Lista todos los productos que tengan un precio entre 80€ y 300€. Sin ulizar el operador
BETWEEN.

SELECT *

FROM producto

WHERE precio >= 80 AND precio <= 300

25. Lista todos los productos que tengan un precio entre 60€ y 200€. Ulizando el operador
BETWEEN.

SELECT *

FROM producto

WHERE precio BETWEEN 60 AND 200

26. Lista todos los productos que tengan un precio mayor que 200€ y que el código de fabricante
sea igual a 6.

SELECT *

FROM producto
 

WHERE precio > 200 AND codigo_fabricante = 6

27. Lista todos los productos donde el código de fabricante sea 1, 3 o 5. Sin ulizar el operador
IN.

SELECT * FROM producto

WHERE codigo_fabricante = 1 OR codigo_fabricante = 3 OR codigo_fabricante = 5

28. Lista todos los productos donde el código de fabricante sea 1, 3 o 5. Ulizando el operador
IN.

SELECT * FROM producto

WHERE codigo_fabricante IN (1, 3, 5)

29. Lista el nombre y el precio de los productos en cénmos (Habrá que mulplicar por 100 el
valor del precio). Cree un alias para la columna que conene el precio que se llame cénmos.

SELECT nombre, precio * 100 AS cénmos

FROM producto

30. Lista los nombres de los fabricantes cuyo nombre empiece por la letra S.

SELECT nombre

FROM fabricante

WHERE nombre LIKE 'S%'


 

31. Lista los nombres de los fabricantes cuyo nombre termine por la vocal e.

SELECT nombre FROM fabricante

WHERE nombre LIKE '%e'

32. Lista los nombres de los fabricantes cuyo nombre contenga el carácter w.

SELECT nombre FROM fabricante

WHERE nombre LIKE '%w%'

33. Lista los nombres de los fabricantes cuyo nombre sea de 4 caracteres.

SELECT nombre FROM fabricante

WHERE nombre LIKE '____'

34. Devuelve una lista con el nombre de todos los productos que conenen la cadena Portál en
el nombre.

SELECT nombre FROM producto

WHERE nombre LIKE '%Portál%'

35. Devuelve una lista con el nombre de todos los productos que conenen la cadena Monitor
en el nombre y enen un precio inferior a 215 €.

SELECT nombre FROM producto

WHERE nombre LIKE '%Monitor%' AND precio < 215


 

36. Lista el nombre y el precio de todos los productos que tengan un precio mayor o igual a
180€. Ordene el resultado en primer lugar por el precio (en orden descendente) y en segundo
lugar por el nombre (en orden ascendente).

SELECT nombre, precio FROM producto

WHERE precio >= 180

ORDER BY precio DESC, nombre ASC

Consultas multabla (Composición interna)


Resuelva todas las consultas ulizando la sintaxis de SQL1 y SQL2.

1. Devuelve una lista con el nombre del producto, precio y nombre de fabricante de todos los
productos de la base de datos.

SELECT producto.nombre, precio, fabricante.nombre

FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante = fabricante.codigo

2. Devuelve una lista con el nombre del producto, precio y nombre de fabricante de todos los
productos de la base de datos. Ordene el resultado por el nombre del fabricante, por orden
alfabéco.

SELECT producto.nombre, precio, fabricante.nombre

FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante = fabricante.codigo

ORDER BY fabricante.nombre ASC


 

3. Devuelve una lista con el código del producto, nombre del producto, código del fabricante y
nombre del fabricante, de todos los productos de la base de datos.

SELECT producto.codigo, producto.nombre, fabricante.codigo, fabricante.nombre

FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante = fabricante.codigo

4. Devuelve el nombre del producto, su precio y el nombre de su fabricante, del producto más
barato.

SELECT producto.nombre, producto.precio, fabricante.nombre

FROM producto INNER JOIN fabricante

ORDER BY producto.precio ASC

LIMIT 1

5. Devuelve el nombre del producto, su precio y el nombre de su fabricante, del producto más
caro.

SELECT producto.nombre, producto.precio, fabricante.nombre

FROM producto INNER JOIN fabricante

ORDER BY producto.precio DESC

LIMIT 1
 

6. Devuelve una lista de todos los productos del fabricante Lenovo.

SELECT * FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante
producto.codigo_fabricante = fabricante.codi
fabricante.codigo
go
WHERE fabricante.nombre = 'Lenovo'

7. Devuelve una lista de todos los productos del fabricante Crucial que tengan un precio mayor
que 200€.

SELECT * FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante
producto.codigo_fabricante = fabricante.codi
fabricante.codigo
go

WHERE fabricante.nombre = 'Crucial' AND producto.precio >200

8. Devuelve un listado con todos los productos de los fabricantes Asus, Hewle-Packard y
Seagate. Sin ulizar el operador IN.

SELECT * FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante
producto.codigo_fabricante = fabricante.codi
fabricante.codigo
go

WHERE fabricante.nombre = 'Asus' OR fabricante.nombre = 'Hewle-Packard' OR

fabricante.nombre = 'Seagate'

9. Devuelve un listado con todos los productos de los fabricantes Asus, Hewle-Packard y
Seagate. Ulizando el operador IN.

SELECT * FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante
producto.codigo_fabricante = fabricante.codi
fabricante.codigo
go

WHERE fabricante.nombre IN ('Asus','Hewle-Packard','Seagate')


('Asus','Hewle-Packard','Seagate')
 

10. Devuelve un listado con el nombre y el precio de todos los productos de los fabricantes cuyo

nombre termine por la vocal e.

SELECT producto.nombre, producto.precio FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante
producto.codigo_fabricante = fabricante.codi
fabricante.codigo
go

WHERE fabricante.nombre LIKE ('%e')

11. Devuelve un listado con el nombre y el precio de todos los productos cuyo nombre de
fabricante contenga el carácter w en su nombre.

SELECT producto.nombre, producto.precio FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante
producto.codigo_fabricante = fabricante.codi
fabricante.codigo
go

WHERE fabricante.nombre LIKE ('%w%')

12. Devuelve un listado con el nombre de producto, precio y nombre de fabricante, de todos los

productos que tengan un precio mayor o igual a 180€. Ordene el resultado en primer lugar por el

precio (en orden descendente) y en segundo lugar por el nombre (en orden ascendente)

SELECT producto.nombre, producto.precio, fabricante.nombre


FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante
producto.codigo_fabricante = fabricante.codi
fabricante.codigo
go

WHERE producto.precio >= 180

ORDER BY producto.precio DESC, producto.nombre ASC


 

13. Devuelve un listado con el código y el nombre de fabricante, solamente de aquellos


fabricantes que enen productos asociados en la base de datos.

SELECT fabricante.codigo, fabricante.nombre FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

Consultas multabla (Composición externa)


Resuelva todas las consultas ulizando las cláusulas LEFT JOIN y RIGHT JOIN.

1. Devuelve un listado de todos los fabricantes que existen en la base de datos, junto con los
productos que ene cada uno de ellos. El listado deberá mostrar también aquellos fabricantes
que no enen productos asociados.

SELECT fabricante.codigo, fabricante.nombre, producto.nombre

FROM fabricante LEFT JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

2. Devuelve un listado donde sólo aparezcan aquellos fabricantes que no enen ningún
producto asociado.

SELECT fabricante.nombre FROM fabricante LEFT JOIN producto

ON fabricante.codigo != producto.codigo_fabricante

WHERE NOT fabricante.codigo = ANY (

 SELECT producto.codigo_fabricante

  FROM producto) LIMIT 10,2


 

3. ¿Pueden exisr productos que no estén relacionados con un fabricante? Jusque su


respuesta.

No pueden exisr ya que la relación en el modelo relacional


re lacional es de 1 a muchos. Esto signica que
un producto puede ser creado por un mínimo de 1 fabricante.

Consultas resumen
1. Calcula el número total de productos que hay en la tabla productos.

SELECT COUNT(*)

FROM producto

2. Calcula el número total de fabricantes que hay en la tabla fabricante.

SELECT COUNT(*)

FROM fabricante

3. Calcula el número de valores disntos de código de fabricante aparecen en la tabla productos.

SELECT COUNT(DISTINCT codigo_fabricante)

FROM producto
 

4. Calcula la media del precio de todos los productos.

SELECT AVG(precio)

FROM producto

5. Calcula el precio más barato de todos los productos.

SELECT MIN(precio)

FROM producto

6. Calcula el precio más caro de todos los productos.

SELECT MAX(precio)

FROM producto

7. Lista el nombre y el precio del producto más barato.

SELECT nombre, precio

FROM producto

ORDER BY precio ASC

LIMIT 1

8. Lista el nombre y el precio del producto más caro.

SELECT nombre, precio

FROM producto

ORDER BY precio DESC

LIMIT 1

9. Calcula la suma de los precios de todos los productos.

SELECT SUM(precio)

FROM producto
 

10. Calcula el número de productos que ene el fabricante Asus.

SELECT COUNT(producto.cod
C OUNT(producto.codigo)
igo)

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante
WHERE fabricante.nombre = 'Asus'

11. Calcula la media del precio de todos los productos del fabricante Asus.

SELECT AVG(producto.precio)

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

WHERE fabricante.nombre = 'Asus'

12. Calcula el precio más barato de todos los productos del fabricante Asus.

SELECT MIN(producto.precio)

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

WHERE fabricante.nombre = 'Asus'

13. Calcula el precio más caro de todos los productos del fabricante Asus.

SELECT MAX(producto.precio)

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

WHERE fabricante.nombre = 'Asus'

14. Calcula la suma de todos los productos del fabricante Asus.

SELECT SUM(producto.precio)

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante
 

WHERE fabricante.nombre = 'Asus'

15. Muestra el precio máximo, precio mínimo, precio medio y el número total de productos que
ene el fabricante Crucial.

SELECT MAX(producto.precio), MIN(producto.


MIN(producto.precio),
precio), AVG(producto.precio),
COUNT(producto.codigo)

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

WHERE fabricante.nombre = 'Crucial'

16. Muestra el número total de productos que ene cada uno de los fabricantes. El listado
también debe incluir los fabricantes que no enen ningún producto. El resultado mostrará dos
columnas, una con el nombre del fabricante y otra con el número de productos que ene.
Ordene el resultado descendentemente por el número de productos.

SELECT fabricante.nombre, COUNT(producto.codigo)


COUNT(producto.codigo)

FROM fabricante LEFT JOIN producto

ON producto.codigo_fabricante = fabricante.codigo

GROUP BY fabricante.codigo

ORDER BY 2 DESC

17. Muestra el precio máximo, precio mínimo y precio medio de los productos de cada uno de
los fabricantes. El resultado mostrará el nombre del fabricante junto con los datos que se
solicitan.

SELECT fabricante.nombre, MAX(producto.precio), MIN(producto.precio), AVG(producto.precio)

FROM fabricante INNER JOIN producto

ON producto.codigo_fabricante = fabricante.codigo

GROUP BY fabricante.codigo

18. Muestra el precio máximo, precio mínimo, precio medio y el número total de productos de
los fabricantes que enen un precio medio superior a 200€. No es necesario mostrar el nombre
del fabricante, con el código del fabricante es suciente.
 

SELECT codigo_fabricante, MAX(precio), MIN(precio), AVG(precio), COUNT(*)

FROM producto

GROUP BY codigo_fabricante

HAVING AVG(precio) > 200

19. Muestra el nombre de cada fabricante, junto con el precio máximo, precio mínimo, precio
medio y el número total de productos de los fabricantes que enen un precio medio superior a
200€. Es necesario mostrar el nombre del fabricante.

SELECT fabricante.nombre,

MAX(producto.precio), MIN(producto.precio),

AVG(producto.precio), COUNT(*)

FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante = fabricante.codigo

GROUP BY fabricante.codigo

HAVING AVG(producto.precio) > 200

20. Calcula el número de productos que enen un precio mayor o igual a 180€.

SELECT COUNT(*)

FROM producto

WHERE precio >= 180

21. Calcula el número de productos que ene cada fabricante con un precio mayor o igual a
180€.

SELECT fabricante.nombre, COUNT(*)

FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante = fabricante.codigo

WHERE producto.precio >= 180

GROUP BY producto.codigo_fabricante
 

22. Lista el precio medio los productos de cada fabricante, mostrando solamente el código del
fabricante.

SELECT AVG(precio), codigo_fabricante

FROM producto

GROUP BY codigo_fabricante

23. Lista el precio medio los productos de cada fabricante, mostrando solamente el nombre del
fabricante.

SELECT AVG(precio), fabricante.nombre

FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante = fabricante.codigo

GROUP BY fabricante.nombre

24. Lista los nombres de los fabricantes cuyos productos enen un precio medio mayor o igual a
150€.

SELECT AVG(precio), fabricante.nombre

FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante = fabricante.codigo

GROUP BY fabricante.nombre

HAVING AVG(precio) >= 150

25. Devuelve un listado con los nombres de los fabricantes que enen 2 o más productos.

SELECT fabricante.nombre, COUNT(producto.codigo)


COUNT(producto.codigo)

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

GROUP BY fabricante.codigo

HAVING COUNT(producto.codigo) >= 2


 

26. Devuelve un listado con los nombres de los fabricantes y el número de productos que ene
cada uno con un precio superior o igual a 220 €. No es necesario mostrar el nombre de los
fabricantes que no enen productos que cumplan la condición. Ejemplo del resultado esperado:

SELECT fabricante.nombre,
fabricante.nombre, COUNT(producto.codigo)
COUNT(producto.codigo)

FROM fabricante INNER JOIN producto


ON fabricante.codigo
fabricante.codigo = producto.codigo_fabricant
producto.codigo_fabricante
e

WHERE producto.precio >= 220

GROUP BY fabricante.codigo
fabricante.codigo

ORDER BY 2 DESC

27. Devuelve un listado con los nombres de los fabricantes y el número de productos que ene
cada uno con un precio superior o igual a 220 €. El listado debe mostrar el nombre de todos los
fabricantes, es decir, si hay algún fabricante que no ene productos con un precio superior o
igual a 220€ deberá aparecer en el listado con un valor igual a 0 en el número de productos.

(SELECT fabricante.nombre,
fabricante.nombre, COUNT(producto.codigo)
COUNT(producto.codigo)

FROM fabricante INNER JOIN producto

ON fabricante.codigo
fabricante.codigo = producto.codigo_fabricant
producto.codigo_fabricante
e

WHERE producto.precio >= 220

GROUP BY fabricante.codigo)
fabricante.codigo)

UNION
 

(SELECT fabricante.nombre, 0

FROM fabricante

WHERE fabricante.codigo NOT IN (

  SELECT
S ELECT fabricante.codigo
fabricante .codigo

  FROM fabricante INNER


INNER JOIN producto

ON fabricante.codigo
fabricante.codigo = producto.codigo_fabricant
producto.codigo_fabricante
e

  WHERE producto.precio
producto.pr ecio >= 220

  GROUP BY fabricante.codigo))
fabricante .codigo))

ORDER BY 2 DESC

28. Devuelve un listado con los nombres de los fabricantes donde la suma del precio de todos
sus productos es superior a 1000 €.

SELECT fabricante.nombre, SUM(producto.precio)

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

GROUP BY fabricante.codigo

HAVING SUM(producto.precio) > 1000

29. Devuelve un listado con el nombre del producto más caro que ene cada fabricante. El
resultado debe tener tres columnas: nombre del producto, precio y nombre del fabricante. El
resultado ene que estar ordenado alfabécamente de menor a mayor por el nombre del
fabricante.

SELECT producto.nombre, producto.precio, fabricante.nombre

FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante = fabricante.codigo

WHERE producto.precio =

  SELECT MAX(precio)

  FROM producto

  WHERE codigo_fabricante
codigo_fabricante = fabri
fabricante.codigo
cante.codigo
 

ORDER BY fabricante.nombre ASC

Subconsultas (En la cláusula WHERE)


Con operadores básicos de comparación
1. Devuelve todos los productos del fabricante Lenovo. (Sin ulizar INNER JOIN).

SELECT * FROM producto

WHERE codigo_fabricante = (

  SELECT codigo

  FROM fabricante

  WHERE nombre = 'Lenovo')

2. Devuelve todos los datos de los productos que enen el mismo precio que el producto más
caro del fabricante Lenovo. (Sin ulizar INNER JOIN).

SELECT * FROM producto

WHERE precio = (

 SELECT MAX(precio)

 FROM producto

 WHERE producto.codigo_fabricante = (

  SELECT codigo

  FROM fabricante
  WHERE nombre = 'Lenovo'))

3. Lista el nombre del producto más caro del fabricante Lenovo.

SELECT producto.nombre

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

WHERE fabricante.nombre = 'Lenovo' AND producto.precio = (

SELECT MAX(precio)
 

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

WHERE fabricante.nombre = 'Lenovo')

4. Lista el nombre del producto más barato del fabricante Hewle-Packard.


SELECT producto.nombre

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

WHERE fabricante.nombre = 'Hewle-Packard' AND producto.precio = (

SELECT MIN(precio)

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

WHERE fabricante.nombre = 'Hewle-Packard')

5. Devuelve todos los productos de la base de datos que enen un precio mayor o igual al
producto más caro del fabricante Lenovo.
L enovo.

SELECT *

FROM producto

WHERE precio >= (

  SELECT MAX(precio)

  FROM fabricante INNER


INNER JOIN producto
  ON fabricante.codigo
fabricante.codigo = produ
producto.codigo_fabricante
cto.codigo_fabricante

  WHERE fabricante.nombre
fabricante.nombre = 'Lenovo')

6. Lista todos los productos del fabricante Asus que enen un precio superior al precio medio de
todos sus productos.

SELECT *

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

WHERE fabricante.nombre = 'Asus' AND producto.precio > (


  SELECT AVG(precio)
 

  FROM fabricante INNER


INNER JOIN producto

  ON fabricante.codigo
fabricante.codigo = produ
producto.codigo_fabricante
cto.codigo_fabricante

  WHERE fabricante.nombre
fabricante.nombre = 'Asus')

Subconsultas con ALL y ANY


8. Devuelve el producto más caro que existe en la tabla producto sin hacer uso de MAX, ORDER

BY ni LIMIT.

SELECT * FROM producto

WHERE precio >= ALL (

SELECT precio

FROM producto)

9. Devuelve el producto más barato que existe en la tabla producto sin hacer uso de MIN,
ORDER BY ni LIMIT.

SELECT * FROM producto

WHERE precio <= ALL (

SELECT precio

FROM producto)

10. Devuelve los nombres de los fabricantes que enen productos asociados. (Ulizando ALL o
ANY).

SELECT nombre FROM fabricante

WHERE codigo = ANY (

SELECT codigo_fabricante

FROM producto)
 

11. Devuelve los nombres de los fabricantes que no enen productos asociados. (Ulizando ALL
o ANY).

SELECT nombre FROM fabricante

WHERE codigo != ALL (

SELECT codigo_fabricante

FROM producto)

Subconsultas con IN y NOT IN

12. Devuelve los nombres de los fabricantes que enen productos asociados. (Ulizando IN o
NOT IN).

SELECT nombre FROM fabricante

WHERE codigo IN (SELECT codigo_fabricante FROM producto)

13. Devuelve los nombres de los fabricantes que no enen productos asociados. (Ulizando IN o
NOT IN).

SELECT nombre FROM fabricante

WHERE codigo NOT IN (SELECT codigo_fabricante FROM producto)

Subconsultas con EXISTS y NOT EXISTS

14. Devuelve los nombres de los fabricantes que enen productos asociados. (Ulizando EXISTS

o NOT EXISTS).
SELECT nombre FROM fabricante

WHERE EXISTS (

 SELECT codigo_fabricante

FROM producto

WHERE producto.codigo_fabricante = fabricante.codigo)


 

15. Devuelve los nombres de los fabricantes que no enen productos asociados.

(Ulizando EXISTS o NOT EXISTS).

SELECT nombre FROM fabricante

WHERE NOT EXISTS (


 SELECT codigo_fabricante

FROM producto

WHERE producto.codigo_fabricante = fabricante.codigo)

Subconsultas correlacionadas

16. Lista el nombre de cada fabricante con el nombre y el precio de su producto más caro.

SELECT producto.nombre, producto.precio, fabricante.nombre

FROM producto INNER JOIN fabricante

ON producto.codigo_fabricante = fabricante.codigo

WHERE producto.precio =

  SELECT MAX(precio)

  FROM producto

  WHERE codigo_fabricante
codigo_fabricante = fabri
fabricante.codigo
cante.codigo

17. Devuelve un listado de todos los productos que enen un precio mayor o igual a la media de

todos los productos de su mismo fabricante.

SELECT *

FROM producto AS p1

WHERE precio >= (SELECT AVG(precio)

  FROM producto AS p2

  WHERE p1.codigo_fabricante = p2.codigo_fabricante)


 

18. Lista el nombre del producto más caro del fabricante Lenovo.

SELECT producto.nombre

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante
WHERE fabricante.nombre = 'Lenovo' AND producto.precio = (

  SELECT MAX(precio)

  FROM producto

  WHERE codigo_fabricante
codigo_fabricante = fabri
fabricante.codigo)
cante.codigo)

Subconsultas (En la cláusula HAVING)

19. Devuelve un listado con todos los nombres de los fabricantes que enen el mismo número
de productos que el fabricante Lenovo.

SELECT fabricante.nombre, COUNT(producto.codigo)


COUNT(producto.codigo)

FROM fabricante INNER JOIN producto

ON fabricante.codigo = producto.codigo_fabri
producto.codigo_fabricante
cante

GROUP BY fabricante.codigo

HAVING COUNT(producto.codigo) >= (

 SELECT COUNT(producto.codigo)

  FROM fabricante INNER


INNER JOIN producto

  ON fabricante.codigo
fabricante.codigo = produ
producto.codigo_fabricante
cto.codigo_fabricante

  WHERE fabricante.nombre
fabricante.nombre = 'Lenovo')

También podría gustarte