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). Uliza 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, convirendo 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, convirendo 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 repedos.
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 parr 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. (Ulice 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. (Ulice 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 ulizar 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€. Ulizando 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 ulizar 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. Ulizando 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énmos (Habrá que mulplicar por 100 el
valor del precio). Cree un alias para la columna que conene el precio que se llame cénmos.
SELECT nombre, precio * 100 AS cénmos
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 conenen 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 conenen 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 multabla (Composición interna)
Resuelva todas las consultas ulizando 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 ulizar 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. Ulizando 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 multabla (Composición externa)
Resuelva todas las consultas ulizando 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 exisr productos que no estén relacionados con un fabricante? Jusque su
respuesta.
No pueden exisr ya que la relación en el modelo relacional
re lacional es de 1 a muchos. Esto signica 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 disntos 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 suciente.
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 ulizar 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 ulizar 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. (Ulizando 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. (Ulizando 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. (Ulizando 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. (Ulizando 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. (Ulizando 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.
(Ulizando 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')