Bases de Datos
Práctico 3: Lenguajes de Consulta Comerciales - SQL

G. Saiz - N. Wolovick

Las consultas SQL surgidas en éste práctico pueden ser probadas en el motor de bases de datos Informix instalado en multivac.famaf.unc.edu.ar. Para esto basta loguearse a la máquina y ejecutar el comando dbaccess. Existen dos bases de datos con permiso PUBLIC para hacer consultas y crear tablas temporales: p3pcvendor y p3ships, donde el esquema de relación para la primera es:

PRODUCT(maker,model,type)
PC(model,speed,ram,hd,cd,price)
LAPTOP(model,speed,ram,hd,screen,price)
PRINTER(model,color,type,price)


mientras que para la base de barcos tenemos:
CLASSES(class,type,country,numGuns,bore,displacement)
SHIPS(name,class,launched)
BATTLES(name,date)
OUTCOMES(ship,battle,result)


    Select-From-Where

  1. Dar el número de modelo, la velocidad, el tamaño del disco duro para las PCs que cuesten menos de $1600. Renombre la columna speed a ``Megahertz'' y hd a ``Gigabyte''.
  2. Dar todas las tuplas de la relación PRINTERS para impresoras color.
  3. Dar el modelo, velocidad y tamaño del disco duro (en megabytes) para las PCs con lectoras de CDROM de 6x u 8x y precio por debajo de los $2000.
  4. Encuentre los barcos que tienen el mismo nombre que su clase.
  5. Muestre los barcos cuyo nombre consta de 3 o más palabras.

    Consultas usando varias tablas

  6. Dar el fabricante y la velocidad de las portátiles con disco duro de al menos 1GB.
  7. Encuentre en nombre de todos los fabricantes que venden portátiles pero no PCs.
  8. Muestre los pares de modelos de PCs que tengan la misma velocidad y cantidad de RAM. Los pares deben ser tratados como conjuntos de elementos y por lo tanto un resultado $\{(i,j),(j,i)\}$ es incorrecto.
  9. Liste todos los barcos que incluye la base de datos p3ships.
  10. Obtenga los barcos que pesan más de 35.000 toneladas.
  11. Liste las naves que fueron dañadas en una batalla y luego pelearon en otra.
  12. Obtenga el nombre de las batallas con al menos 3 barcos del mismo país.
  13. Muestre el nombre y la velocidad de las PCs más rápidas.

    Subconsultas

  14. Muestre el nombre y la velocidad de las PCs más rápidas.
  15. Obtenga las portátiles cuya velocidad es menor que la de cualquier PC.
  16. Encuentre los fabricantes de PCs con los procesadores más rápidos entre todas las PCs que tienen la menor cantidad de RAM.
  17. Muestre las clases de barcos con al menos una nave hundida en batalla.
  18. La siguiente consulta muestra los nombres de las naves que participaron en dos o más batallas
    
    SELECT DISTINCT ship
    FROM outcomes AS o1
    WHERE battle <> ANY
    	(SELECT battle
    	FROM outcomes
    	WHERE ship=o1.ship
    	);
    
    Reescríbala sin usar subconsultas.
  19. Muestre como la expresión $\Pi_{X}(R_{1} \Join \ldots \Join R_{n})$ del álgebra relacional con $X \subseteq R_{1}$, puede ser escrita en SQL utilizando sólo subconsultas.
  20. Muestre como una consulta de intersección o diferencia puede ser reescrita como una subconsulta.
  21. Muestre como toda consulta que incluya los operadores IN (NOT IN), EXISTS (NOT EXISTS) puede ser reescrita prescindiendo de ambos.

    Agregación

  22. Obtenga la velocidad promedio de las portátiles que cuestan más de $2500.
  23. Liste, para cada fabricante, el promedio del tamaño de pantalla de sus portátiles.
  24. Encuentre los fabricantes de más de 3 modelos de PCs.
  25. Muestre el promedio de cañones en cada batalla.
  26. Para cada clase de barco, con al menos 3 naves, encuentre el número de barcos hundidos en batalla.


bdd@hal.famaf.unc.edu.ar