TIENDA DE INFORMÁTICA - CONSULTAS
USE MASTER;
GO
--Eliminar la base de datos si existe
IF DB_ID('TIENDA_INFORMATICA') IS NOT NULL
BEGIN
DROP DATABASE TIENDA_INFORMATICA
END
/* A partir de la versión SQL Server 2016
DROP DATABASE IF EXISTS VIDEO_CreacionTablas; */
CREATE DATABASE TIENDA_INFORMATICA;
GO
USE TIENDA_INFORMATICA;
GO
CREATE TABLE FABRICANTES(
CODIGO INT IDENTITY (1,1),
NOMBRE NVARCHAR(100),
CONSTRAINT CK_FABRICANTES PRIMARY KEY (CODIGO)
);
CREATE TABLE ARTICULOS (
CODIGO INT IDENTITY (1,1),
NOMBRE NVARCHAR(100),
PRECIO FLOAT,
FABRICANTE INT,
CONSTRAINT CK_ARTICULOS PRIMARY KEY (CODIGO),
CONSTRAINT FK_ARTICULOS FOREIGN KEY (FABRICANTE) REFERENCES
FABRICANTES(CODIGO)
);
INSERT INTO FABRICANTES VALUES('Asus');
INSERT INTO FABRICANTES VALUES('Lenovo');
INSERT INTO FABRICANTES VALUES('Hewlett-Packard');
INSERT INTO FABRICANTES VALUES('Samsung');
INSERT INTO FABRICANTES VALUES('Seagate');
INSERT INTO FABRICANTES VALUES('Crucial');
INSERT INTO FABRICANTES VALUES('Gigabyte');
INSERT INTO FABRICANTES VALUES('Huawei');
INSERT INTO FABRICANTES VALUES('Xiaomi');
INSERT INTO ARTICULOS VALUES('Disco duro SATA3 1TB', 86.99, 5);
INSERT INTO ARTICULOS VALUES('Memoria RAM DDR4 8GB', 120, 6);
INSERT INTO ARTICULOS VALUES('Disco SSD 1 TB', 150.99, 4);
INSERT INTO ARTICULOS VALUES('GeForce GTX 1050Ti', 185, 7);
INSERT INTO ARTICULOS VALUES('GeForce GTX 1080 Xtreme', 755, 6);
INSERT INTO ARTICULOS VALUES('Monitor 24 LED Full HD', 202, 1);
INSERT INTO ARTICULOS VALUES('Monitor 27 LED Full HD', 245.99, 1);
INSERT INTO ARTICULOS VALUES('Portátil Yoga 520', 559, 2);
INSERT INTO ARTICULOS VALUES('Portátil Ideapd 320', 444, 2);
INSERT INTO ARTICULOS VALUES('Impresora HP Deskjet 3720', 59.99, 3);
INSERT INTO ARTICULOS VALUES('Impresora HP Laserjet Pro M26nw', 180, 3);
CONSULTAS SOBRE UNA TABLA
1. Lista el nombre de todos los artículos que hay en la tabla artículo.
2. Lista los nombres y los precios de todos los artículos de la tabla artículo.
3. Lista todas las columnas de la tabla artículo.
4. Lista el nombre de los artículos, el precio en euros y el precio en dólares estadounidenses (USD).
5. Lista el nombre de los artículos, el precio en euros y el precio en dólares estadounidenses (USD).
Utiliza los siguientes alias para las columnas: nombre de artículo, euros, dólares.
6. Lista los nombres y los precios de todos los artículos de la tabla artículo, convirtiendo los
nombres a mayúscula.
7. Lista los nombres y los precios de todos los artículos de la tabla artículo, convirtiendo los
nombres a minúscula.
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.
9. Lista los nombres y los precios de todos los artículos de la tabla artículo, redondeando el valor
del precio.
10. Lista los nombres y los precios de todos los artículos de la tabla artículo, truncando el valor del
precio para mostrarlo sin ninguna cifra decimal.
11. Lista el código de los fabricantes que tienen artículos en la tabla artículo.
12. Lista el código de los fabricantes que tienen artículos en la tabla artículo, eliminando los códigos
que aparecen repetidos.
13. Lista los nombres de los fabricantes ordenados de forma ascendente.
14. Lista los nombres de los fabricantes ordenados de forma descendente.
15. Lista los nombres de los artículos ordenados en primer lugar por el nombre de forma
ascendente y en segundo lugar por el precio de forma descendente.
16. Devuelve una lista con las 5 primeras filas de la tabla fabricante.
17. Devuelve una lista con 2 filas a partir de la cuarta fila de la tabla fabricante. La cuarta fila
también se debe incluir en la respuesta.
18. Lista el nombre y el precio del articulo más barato. (Utilice solamente las cláusulas ORDER BY y
TOP)
19. Lista el nombre y el precio del articulo más caro. (Utilice solamente las cláusulas ORDER BY y
TOP)
20. Lista el nombre de todos los artículos del fabricante cuyo código de fabricante es igual a 2.
21. Lista el nombre de los artículos que tienen un precio menor o igual a 120€.
22. Lista el nombre de los artículos que tienen un precio mayor o igual a 400€.
23. Lista el nombre de los artículos que no tienen un precio mayor o igual a 400€. (Usando NOT)
24. Lista todos los artículos que tengan un precio entre 80€ y 300€. Sin utilizar el operador
BETWEEN.
25. Lista todos los artículos que tengan un precio entre 60€ y 200€. Utilizando el operador
BETWEEN.
26. Lista todos los artículos que tengan un precio mayor que 200€ y que el código de fabricante sea
igual a 6.
27. Lista todos los artículos donde el código de fabricante sea 1, 3 o 5. Sin utilizar el operador IN.
28. Lista todos los artículos donde el código de fabricante sea 1, 3 o 5. Utilizando el operador IN.
29. Lista el nombre y el precio de los artículos en céntimos (Habrá que multiplicar por 100 el valor
del precio). Cree un alias para la columna que contiene el precio que se llame céntimos.
30. Lista los nombres de los fabricantes cuyo nombre empiece por la letra S.
31. Lista los nombres de los fabricantes cuyo nombre termine por la vocal e.
32. Lista los nombres de los fabricantes cuyo nombre contenga el carácter w.
33. Lista los nombres de los fabricantes cuyo nombre sea de 4 caracteres.
34. Devuelve una lista con el nombre de todos los artículos que contienen la cadena Portátil en el
nombre.
35. Devuelve una lista con el nombre de todos los artículos que contienen la cadena Monitor en el
nombre y tienen un precio inferior a 215 €.
36. Lista el nombre y el precio de todos los artículos 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).
CONSULTAS MULTITABLA (COMPOSICIÓN INTERNA)
1. Devuelve una lista con el nombre del artículo, precio y nombre de fabricante de todos los
artículos de la base de datos.
2. Devuelve una lista con el nombre del artículo, precio y nombre de fabricante de todos los
artículos de la base de datos. Ordene el resultado por el nombre del fabricante, por orden
alfabético.
3. Devuelve una lista con el código del articulo, nombre del articulo, código del fabricante y
nombre del fabricante, de todos los artículos de la base de datos.
4. Devuelve el nombre del articulo, su precio y el nombre de su fabricante, del articulo más barato.
5. Devuelve el nombre del articulo, su precio y el nombre de su fabricante, del articulo más caro.
6. Devuelve una lista de todos los artículos del fabricante Lenovo.
7. Devuelve una lista de todos los artículos del fabricante Crucial que tengan un precio mayor que
200€.
8. Devuelve un listado con todos los artículos de los fabricantes Asus, Hewlett-Packard y Seagate.
Sin utilizar el operador IN.
9. Devuelve un listado con todos los artículos de los fabricantes Asus, Hewlett-Packard y Seagate.
Utilizando el operador IN.
10. Devuelve un listado con el nombre y el precio de todos los artículos de los fabricantes cuyo
nombre termine por la vocal e.
11. Devuelve un listado con el nombre y el precio de todos los artículos cuyo nombre de fabricante
contenga el carácter w en su nombre.
12. Devuelve un listado con el nombre de articulo, precio y nombre de fabricante, de todos los
artículos 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)
13. Devuelve un listado con el código y el nombre de fabricante, solamente de aquellos fabricantes
que tienen artículos asociados en la base de datos.
CONSULTAS MULTITABLA (COMPOSICIÓN EXTERNA)
Resuelve todas las consultas utilizando 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
artículos que tiene cada uno de ellos. El listado deberá mostrar también aquellos fabricantes
que no tienen artículos asociados.
2. Devuelve un listado donde sólo aparezcan aquellos fabricantes que no tienen ningún artículo
asociado.
3. ¿Pueden existir artículos que no estén relacionados con un fabricante? Justifique su respuesta.
CONSULTAS RESUMEN
1. Calcula el número total de artículos que hay en la tabla artículos.
2. Calcula el número total de fabricantes que hay en la tabla fabricante.
3. Calcula el número de valores distintos de código de fabricante aparecen en la tabla artículos.
4. Calcula la media del precio de todos los artículos.
5. Calcula el precio más barato de todos los artículos.
6. Calcula el precio más caro de todos los artículos.
7. Lista el nombre y el precio del articulo más barato.
8. Lista el nombre y el precio del articulo más caro.
9. Calcula la suma de los precios de todos los artículos.
10. Calcula el número de artículos que tiene el fabricante Asus.
11. Calcula la media del precio de todos los artículos del fabricante Asus.
12. Calcula el precio más barato de todos los artículos del fabricante Asus.
13. Calcula el precio más caro de todos los artículos del fabricante Asus.
14. Calcula la suma de todos los artículos del fabricante Asus.
15. Muestra el precio máximo, precio mínimo, precio medio y el número total de artículos que
tiene el fabricante Crucial.
16. Muestra el número total de artículos que tiene cada uno de los fabricantes. El listado también
debe incluir los fabricantes que no tienen ningún articulo. El resultado mostrará dos columnas,
una con el nombre del fabricante y otra con el número de artículos que tiene. Ordene el
resultado descendentemente por el número de artículos.
17. Muestra el precio máximo, precio mínimo y precio medio de los artículos de cada uno de los
fabricantes. El resultado mostrará el nombre del fabricante junto con los datos que se solicitan.
18. Muestra el precio máximo, precio mínimo, precio medio y el número total de artículos de los
fabricantes que tienen un precio medio superior a 200€. No es necesario mostrar el nombre
del fabricante, con el código del fabricante es suficiente.
19. Muestra el nombre de cada fabricante, junto con el precio máximo, precio mínimo, precio
medio y el número total de artículos de los fabricantes que tienen un precio medio superior a
200€. Es necesario mostrar el nombre del fabricante.
20. Calcula el número de artículos que tienen un precio mayor o igual a 180€.
21. Calcula el número de artículos que tiene cada fabricante con un precio mayor o igual a 180€.
22. Lista el precio medio los artículos de cada fabricante, mostrando solamente el código del
fabricante.
23. Lista el precio medio los artículos de cada fabricante, mostrando solamente el nombre del
fabricante.
24. Lista los nombres de los fabricantes cuyos artículos tienen un precio medio mayor o igual a
150€.
25. Devuelve un listado con los nombres de los fabricantes que tienen 2 o más artículos.
26. Devuelve un listado con los nombres de los fabricantes y el número de artículos que tiene cada
uno con un precio superior o igual a 220 €. No es necesario mostrar el nombre de los fabricantes
que no tienen artículos que cumplan la condición. Ejemplo del resultado esperado:
27. Devuelve un listado con los nombres de los fabricantes y el número de artículos que tiene 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 tiene artículos con un precio superior o
igual a 220€ deberá aparecer en el listado con un valor igual a 0 en el número de artículos.
28. Devuelve un listado con los nombres de los fabricantes donde la suma del precio de todos sus
artículos es superior a 1000 €.
29. Devuelve un listado con el nombre del articulo más caro que tiene cada fabricante. El resultado
debe tener tres columnas: nombre del articulo, precio y nombre del fabricante. El resultado
tiene que estar ordenado alfabéticamente de menor a mayor por el nombre del fabricante.
SUBCONSULTAS (EN LA CLÁUSULA WHERE)
Con operadores básicos de comparación
1. Devuelve todos los artículos del fabricante Lenovo. (Sin utilizar INNER JOIN).
2. Devuelve todos los datos de los artículos que tienen el mismo precio que el articulo más caro
del fabricante Lenovo. (Sin utilizar INNER JOIN).
3. Lista el nombre del articulo más caro del fabricante Lenovo.
4. Lista el nombre del articulo más barato del fabricante Hewlett-Packard.
5. Devuelve todos los artículos de la base de datos que tienen un precio mayor o igual al articulo
más caro del fabricante Lenovo.
6. Lista todos los artículos del fabricante Asus que tienen un precio superior al precio medio de
todos sus artículos.
Subconsultas con ALL y ANY
7. Devuelve el articulo más caro que existe en la tabla articulo sin hacer uso de MAX, ORDER BY
ni LIMIT.
8. Devuelve el articulo más barato que existe en la tabla articulo sin hacer uso de MIN, ORDER BY
ni LIMIT.
9. Devuelve los nombres de los fabricantes que tienen artículos asociados. (Utilizando ALL o ANY).
10. Devuelve los nombres de los fabricantes que no tienen artículos asociados. (Utilizando ALL o
ANY).
Subconsultas con IN y NOT IN
11. Devuelve los nombres de los fabricantes que tienen artículos asociados. (Utilizando IN o NOT
IN).
12. Devuelve los nombres de los fabricantes que no tienen artículos asociados. (Utilizando IN o
NOT IN).
Subconsultas con EXISTS y NOT EXISTS
13. Devuelve los nombres de los fabricantes que tienen artículos asociados. (Utilizando EXISTS o
NOT EXISTS).
14. . Devuelve los nombres de los fabricantes que no tienen artículos asociados. (Utilizando EXISTS
o NOT EXISTS).
Subconsultas correlacionadas
15. Lista el nombre de cada fabricante con el nombre y el precio de su articulo más caro.
16. Devuelve un listado de todos los artículos que tienen un precio mayor o igual a la media de
todos los artículos de su mismo fabricante.
17. Lista el nombre del articulo más caro del fabricante Lenovo.
Subconsultas (En la cláusula HAVING)
18. Devuelve un listado con todos los nombres de los fabricantes que tienen el mismo número de
artículos que el fabricante Lenovo.