Ejercicios SQL
SQL
Borja Sotomayor
1 de junio de 2002
c Borja Sotomayor, 2002
Este documento ha sido compuesto ´ıntegramente en LATEX.
Para producir el documento se ha utilizado pdfTEX-1.0a de la distribuci´on MiKTEX.
http://www.miktex.org/
Se han utilizado los paquetes amssymb, babel, color, fancybox, fancyvrb, graphicx, hyperref,
ifthen, inputenc, marvosym, scrbook yscrpage (KOMA–Script), titlesec, titletoc, pdfcrypt,
y url.
Los diagramas han sido elaboradas con Microsoft Visio 2002.
http://www.microsoft.com/office/visio/
´Indice general
1. La Tienda de Inform´
atica
1
2. Empleados
7
3. Los Almacenes
13
4. Pel´ıculas y Salas
17
5. Los Directores
19
6. Piezas y Proveedores
23
7. Los Cient´ıficos
27
8. LosGrandes Almacenes
29
9. Los Investigadores
33
3
1
La Tienda de Inform´
atica
ARTICULOS
FABRICANTES
PK
Codigo
int identity
Nombre
nvarchar(100)
PK
Codigo
int identity
FK1
Nombre
Precio
Fabricante
nvarchar(100)
int
int
1.1. Obtener los nombres de los productos de la tienda.
SELECT Nombre FROM ARTICULOS
1.2. Obtener los nombres y los preciosde los productos de la tienda.
SELECT Nombre, Precio FROM ARTICULOS
1.3. Obtener el nombre de los productos cuyo precio sea menor o igual a 200 ¤.
SELECT Nombre FROM ARTICULOS WHERE Precio > 200
1.4. Obtener todos los datos de los art´ıculos cuyo precio est´e entre los 60 ¤ y los 120 ¤
(ambas cantidades incluidas).
/* Con AND */
SELECT * FROM ARTICULOS
WHERE Precio >= 60 AND Precio =180
1.9. Obtener el nombre y precio de los art´ıculos cuyo precio sea mayor o igual a 180 ¤
y ordenarlos descendentemente por precio, y luego ascendentemente por nombre.
SELECT Nombre, Precio FROM ARTICULOS
WHERE Precio >= 180
ORDER BY Precio DESC, Nombre
1.10. Obtener un listado completo de art´ıculos, incluyendo por cada articulo los datos
del articulo y de su fabricante.
/* Sin INNERJOIN */
SELECT * FROM ARTICULOS, FABRICANTES
WHERE ARTICULOS.Fabricante = FABRICANTES.Codigo
/* Con INNER JOIN */
SELECT *
FROM ARTICULOS INNER JOIN FABRICANTES
ON ARTICULOS.Fabricante = FABRICANTES.Codigo
1.11. Obtener un listado de art´ıculos, incluyendo el nombre del art´ıculo, su precio, y el
nombre de su fabricante.
2
Ejercicios de Bases de Datos
1 La Tienda deInform´atica
/* Sin INNER JOIN */
SELECT ARTICULOS.Nombre, Precio, FABRICANTES.Nombre
FROM ARTICULOS, FABRICANTES
WHERE ARTICULOS.Fabricante = FABRICANTES.Codigo
/* Con INNER JOIN */
SELECT ARTICULOS.Nombre, Precio, FABRICANTES.Nombre
FROM ARTICULOS INNER JOIN FABRICANTES
ON ARTICULOS.Fabricante = FABRICANTES.Codigo
1.12. Obtener el precio medio de los productos de cada fabricante, mostrandosolo los
c´odigos de fabricante.
SELECT AVG(Precio), Fabricante FROM ARTICULOS
GROUP BY Fabricante
1.13. Obtener el precio medio de los productos de cada fabricante, mostrando el nombre
del fabricante.
/* Sin INNER JOIN */
SELECT AVG(Precio), FABRICANTES.Nombre
FROM ARTICULOS, FABRICANTES
WHERE ARTICULOS.Fabricante = FABRICANTES.Codigo
GROUP BY FABRICANTES.Nombre
/* Con INNER JOIN */SELECT AVG(Precio), FABRICANTES.Nombre
FROM ARTICULOS INNER JOIN FABRICANTES
ON ARTICULOS.Fabricante = FABRICANTES.Codigo
GROUP BY FABRICANTES.Nombre
1.14. Obtener los nombres de los fabricantes que ofrezcan productos cuyo precio medio
sea mayor o igual a 150 ¤.
/* Sin INNER JOIN */
SELECT AVG(Precio), FABRICANTES.Nombre
FROM ARTICULOS, FABRICANTES
WHERE ARTICULOS.Fabricante =FABRICANTES.Codigo
GROUP BY FABRICANTES.Nombre
HAVING AVG(Precio) >= 150
/* Con INNER JOIN */
SELECT AVG(Precio), FABRICANTES.Nombre
FROM ARTICULOS INNER JOIN FABRICANTES
ON ARTICULOS.Fabricante = FABRICANTES.Codigo
GROUP BY FABRICANTES.Nombre
HAVING AVG(Precio) >= 150
Ejercicios de Bases de Datos
3
1 La Tienda de Inform´atica
1.15. Obtener el nombre y precio del art´ıculo m´as barato....
Regístrate para leer el documento completo.