Computación Web (2023/24)

Práctica 3: SQL (I)

Carga de datos en la base de datos

En este ejercicio se trabajará con una base de datos sobre países de la Unión Europea. La base de datos está ya creada, y contiene nombres de países, capitales, idiomas hablados y poblaciones de los últimos años.

Carga los ficheros tablas.sql y datos.sql en tu base de datos. Para ello, descarga primero estos ficheros en tu sistema de ficheros desde el navegador o con una herramienta de línea de comandos como wget o curl.

A continuación, desde línea de comandos, en el mismo directorio en que estén los ficheros que has descargado, carga en base de datos los datos de estos ficheros como se muestra a continuación, reemplazando XX por el número de usuario en base de datos que se te haya asignado (los profesores te ha enviado estas credenciales por correo electrónico):

mysql -h mysql -u 24_comweb_XX -p -D 24_comweb_XXb <tablas.sql
mysql -h mysql -u 24_comweb_XX -p -D 24_comweb_XXb <datos.sql

El programa mysql es un cliente de línea de comandos para bases de datos MySQL y MariaDB. La opción -h indica el nombre de dominio del gestor de bases de datos al cual conectarse (mysql.lab.it.uc3m.es, aunque lo abreviamos a mysql por estar las máquinas de laboratorio en el mismo dominio). La opción -u indica el nombre de usuario con el cual nos conectaremos. La opción -p indica que se nos pedirá la contraseña al ejecutar el comando. Por último, la opción -D indica el nombre de la base de datos con la cual trabajaremos. Se te han asignado cuatro distintas, y en esta práctica trabajaremos con la que tiene sufijo b.

Una vez cargados los datos, entra en el cliente de línea de comandos interactivo mysql:

mysql -h mysql -u 24_comweb_XX -p -D 24_comweb_XXb

Dentro del terminal interactivo, comprueba que los datos se han cargado ejecutando los siguientes tres comandos uno tras otro:

SHOW TABLES;
DESCRIBE Paises;
SELECT * FROM Paises;

Consultas sobre una única tabla

Es aconsejable que, para cada ejercicio que resuelvas, tomes nota de las consultas SQL en una hoja o en un fichero.

Ejecuta consultas SQL para obtener los siguientes datos:

  1. En la tabla de países, la fila con los datos del país con identificador 10.
  2. En la tabla de poblaciones, las filas con los datos de 2023.
  3. En la tabla de poblaciones, las filas con los datos de 2020 a 2022, ambos inclusive.
  4. En la tabla de poblaciones, las filas con población superior a 50 millones.
  5. En la tabla de poblaciones, las filas con identificador de país 10 que sean anteriores a 2020.
  6. En la tabla de poblaciones, las filas de 2022 o 2023 con menos de un millón de habitantes.
  7. En la tabla de poblaciones, la población del país con identificador 10 año a año, de más reciente a más antiguo.

Consultas agregadas

Ejecuta consultas SQL para obtener los siguientes datos:

  1. La población total de los países de la Unión Europea en 2023.
  2. La población media en los países de la Unión Europea en 2023.
  3. La población máxima, media y mínima de cada país de la Unión Europea en el período del cual hay datos, con el siguiente formato:
    +------+----------------+----------------+----------------+
    | pais | MAX(poblacion) | AVG(poblacion) | MIN(poblacion) |
    +------+----------------+----------------+----------------+
    |    1 |       84358845 |  82270271.5000 |       80327900 |
    |    2 |        9104772 |   8752041.6667 |        8408121 |
    |    3 |       11754004 |  11383146.9167 |       11075889 |
    |    4 |        7327224 |   7043337.0000 |        6447710 |
    |    5 |         920701 |    873797.5833 |         847008 |
    |    6 |        4275984 |   4112049.0833 |        3850894 |
    (...)
  4. Los identificadores de los idiomas recogidos en la tabla IdiomasPais, filtrando aquellos que sean duplicados, en orden descendente de identificador.

Consultas con INNER JOIN

Ejecuta consultas SQL para obtener los siguientes datos (toma nota de las consultas en una hoja o en un fichero):

  1. Un listado con el nombre de cada país y su capital, con el siguiente formato:
    +------------------+------------+
    | nombre           | nombre     |
    +------------------+------------+
    | Alemania         | Berlín     |
    | Austria          | Viena      |
    | Bélgica          | Bruselas   |
    | Bulgaria         | Sofía      |
    | Chipre           | Nicosia    |
    (...)
  2. Repite el apartado anterior, pero nombrando las columnas como "País" y "Capital":
    +------------------+------------+
    | País             | Capital    |
    +------------------+------------+
    | Alemania         | Berlín     |
    | Austria          | Viena      |
    | Bélgica          | Bruselas   |
    | Bulgaria         | Sofía      |
    | Chipre           | Nicosia    |
    (...)
  3. Los países en que se hable alemán:
    +------------+
    | nombre     |
    +------------+
    | Alemania   |
    | Austria    |
    | Bélgica    |
    | Luxemburgo |
    +------------+
  4. Los países en que se hable alemán y sus poblaciones en 2023:
    +------------+-----------+
    | nombre     | poblacion |
    +------------+-----------+
    | Alemania   |  84358845 |
    | Austria    |   9104772 |
    | Bélgica    |  11754004 |
    | Luxemburgo |    660809 |
    +------------+-----------+