Ejercicios de Bases de Datos - Ejercicios mySQL
SQL
Borja Sotomayor
1 de junio de 2002
©c Borja Sot omayor, 2002
Est e document o ha sido compuest o ´ınt egrament e en LATEX.
Para producir el document o se ha ut ilizado pdfTEX-1.0a de la dist ribuci´on MiK TEX.
http://www.miktex.org/
Se han ut ilizado los paquet es amssymb, babel, color, fancybox, fancyvrb, graphicx, hyperref,
ifthen, inputenc, marvosym,scrbook y scrpage (KOMA–Script ), titlesec, titletoc, pdfcrypt,
y url.
Los diagramas han sido elaboradas con Microsoft r Visior 2002.
http://www.microsoft.com/office/visio/
´I ndice gener al
1. La T ienda de Inform´at ica
1
2. Empleados
7
3. Los Almacenes
13
4. Pel´ıculas y Salas
17
5. Los Direct ores
19
6. Piezas y Proveedores
23
7. Los Cient´ıficos27
8. Los Grandes Almacenes
29
9. Los Invest igadores
33
3
1
L a T ienda de I nfor m´at ica
ARTICULOS
FABRICANTES
PK
Codigo
int identity
Nombre
nvarchar(100)
PK
Codigo
int identity
FK1
Nombre
Precio
Fabricante
nvarchar(100)
int
int
1.1. Obt ener los nombres de los product os de la t ienda.
SELECT Nombre FROM ARTICULOS
1.2. Obtener los nombres y los precios de los product os de la t ienda.
SELECT Nombre, Precio FROM ARTICULOS
1.3. Obt ener el nombre de los product os cuyo precio sea menor o igual a 200 ¤ .
SELECT Nombre FROM ARTICULOS WHERE Precio > 200
1.4. Obt ener t odos los dat os de los art´ıculos cuyo precio est´e ent re los 60 ¤ y los 120 ¤
(ambas cant idades incluidas).
/* Con AND */
SELECT * FROMARTICULOS
WHERE Precio >= 60 AND Precio = 180
1.9. Obt ener el nombre y precio de los art´ıculos cuyo precio sea mayor o igual a 180 ¤
y ordenarlos descendent ement e por precio, y luego ascendent ement e por nombre.
SELECT Nombre, Precio FROM ARTICULOS
WHERE Precio >= 180
ORDER BY Precio DESC, Nombre
1.10. Obt ener un list ado complet o de art´ıculos, incluyendo por cada art iculo los datos
del art iculo y de su fabricant e.
/* Sin INNER JOIN */
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. Obt ener un list ado de art´ıculos, incluyendo el nombre del art´ıculo, su precio, y el
nombre de su fabricant e.
2Ejercicios de Bases de Dat os
1 La T ienda de Inform´at ica
/* 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. Obt ener elprecio medio de los product os de cada fabricant e, most rando solo los
c´odigos de fabricant e.
SELECT AVG(Precio), Fabricante FROM ARTICULOS
GROUP BY Fabricante
1.13. Obt ener el precio medio de los product os de cada fabricant e, most rando el nombre
del fabricant e.
/* 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. Obt ener los nombres de los fabricant es que ofrezcan product os 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 Dat os
3
1 La T ienda de...
Regístrate para leer el documento completo.