Ejercicios de teoría sobre SQL

Apuntes de BD para DAW, DAM y ASIR

José Juan Sánchez Hernández

Curso 2023/2024



1 Ejercicios de teoría sobre SQL

1.1 Unidad Didáctica 4

  1. Defina brevemente el significado de las siglas SQL.

  2. El lenguaje SQL se divide en tres partes DDL, DML y DCL. Defina brevemente en qué consiste cada una de las partes.

  3. Defina brevemente qué es MySQL Server.

  4. Defina brevemente qué es MySQL WorkBench.

  5. Defina brevemente qué es phpMyAdmin.

  6. Defina brevemente el significado de LAMP Stack.

  7. Define para qué sirven las siguientes palabras reservadas de la creación de tablas en MySQL:

    • AUTO_INCREMENT
    • CHARACTER SET
    • COLLATION
    • ENGINE
  8. ¿Qué diferencias existen entre los motores de almacenamiento InnoDB y MyISAM de MySQL? ¿Cuál de los dos es el que se usa por defecto?

  9. ¿Qué diferencia existe entre los set de caracteres utf8 y utf8mb4 en MySQL?

  10. ¿Qué diferencia hay entre los tipos de datos VARCHAR y CHAR?

  11. ¿Qué diferencia hay entre los tipos de datos TEXT y BLOB?

  12. ¿Qué diferencia hay entre los tipos de datos DATETIME y TIMESTAMP?

  13. ¿Qué diferencia hay entre ENUM y SET?

  14. ¿Qué tipo de dato usarías si necesitas almacenar un número real exacto sin redondeo?

  15. Explica brevemente para qué sirven las cláusulas ON DELETE y ON UPDATE.

  16. Explica brevemente para qué sirven las siguientes opciones que podemos usar junto a las cláusulas ON DELETE y ON UPDATE:

 * `RESTRICT`
 * `CASCADE`
 * `SET NULL`
 * `NO ACTION`
  1. ¿Qué diferencia existe entre TRUNCATE y DELETE?

  2. ¿Para qué se utiliza el atributo UNIQUE?

  3. ¿Qué diferencia hay entre INDEX y KEY? ¿Para qué se utilizan?

  4. ¿Para qué se utiliza el atributo ZEROFILL?

  5. ¿Qué diferencia existe entre declarar una columna como INT(11) y INT(11) ZEROFILL?

  6. ¿Qué significan las llaves y los corchetes en la siguiente descripción de notación?

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] nombre_base_datos;
  1. ¿Qué sentencia SQL utilizarías para conocer cuál es la estructura de una tabla ya creada?

  2. ¿Qué sentencia SQL utilizarías para borrar una tabla con el nombre de examen?

  3. ¿Qué sentencia SQL utilizarías para consultar el listado de todas las bases de datos?

  4. ¿Qué sentencia SQL utilizarías para añadir una nueva columna llamada nombre a la tabla estudiante?

  5. ¿Qué sentencia SQL nos permite renombrar y modificar el tipo de dato de una columna y sus atributos? Ponga un ejemplo.

  6. ¿Qué tipo de dato de MySQL es el único que podría almacenar valores de fecha y hora mayores que 2038-01-09 03:14:07?

  7. ¿Qué tipo de dato utilizarías si necesitaras almacenar números reales exactos sin redondeo?

  8. ¿Qué representan los valores 7 y 4 cuando declaramos una columna como FLOAT(7,4) ?

  9. ¿Qué representa el valor 11 cuando declaramos una columna como INT(11) ?

  10. ¿Qué comando tendría que escribir desde un terminal para conectarnos con el usuario root con contraseña 1234, a un MySQL Server remoto que se está ejecutando en una máquina con la IP 10.10.1.5?

  11. ¿Qué puerto es el que utiliza por defecto el servicio de MySQL Server?

  12. Cuando instalamos MySQL Server está configurado por defecto para que sólo acepte conexiones locales y que no permita conexiones remotas. ¿Qué valor tendríamos que poner en la directiva de configuración bind-address para permitir conexiones remotas?

[mysqld]
bind-address = 127.0.0.1
  1. Los usuarios de MySQL Server se almacenan en la tabla mysql.user. La clave primaria de esta tabla está formada por los valores user y host, de modo que cada fila vendrá identificada por un nombre de usuario y el host desde el que puede conectarse. Según la siguiente tabla, ¿desde qué máquinas se podrá conectar el usuario root@'%'?
+------------------+--------------+
| user             | host         |
+------------------+--------------+
| root             | %            |
| root             | localhost    |
| debian-sys-maint | localhost    |
| mysql.session    | localhost    |
| mysql.sys        | localhost    |
+------------------+--------------+

1.2 Unidades Didácticas: 5, 6, 7 y 8

  1. El lenguaje SQL se divide en tres partes DDL, DML y DCL. Defina brevemente en qué consiste DML, cuáles son las sentencias DML y qué operación podemos realizar con cada una de ellas.

  2. Indique cuáles son todas las cláusulas que podemos utilizar en la sentencia SELECT y en qué orden se ejecuta cada una de ellas.

  3. Cuando realizamos consultas con la sentencia SELECT en MySQL podemos usar los modificadores ALL, DISTINCT y DISTINCTROW. Explica brevemente en qué consiste cada uno de ellos.

  4. Defina brevemente para qué sirven los siguientes operadores y ponga un ejemplo de uso para cada uno de ellos:

    • BETWEEN
    • LIKE
    • IS
    • IS NOT
  1. ¿Qué realiza la función COUNT en cada uno de estos casos? ¿Existe alguna diferencia entre ellas?

    • COUNT(*)
    • COUNT(columna)
    • COUNT(DISTINCT columna)
  2. Describa cuáles son las funciones de agregación más utilizadas, que le permiten realizar operaciones específicas sobre un grupo de filas.

  3. Explique qué diferencia existe entre las cláusulas WHERE y HAVING. Ponga un ejemplo de uso para cada caso.

  4. Defina para qué se utiliza la cláusula LIMIT. Dada la sintaxis de la cláusula LIMIT en MySQL explique qué representan las palabras offset y row_COUNT. Ponga un ejemplo de uso.

    [LIMIT {[offset,] row_COUNT | row_COUNT OFFSET offset}]
  5. ¿Para qué se utilizan las operaciones INNER JOIN y NATURAL JOIN?. ¿Qué diferencia hay entre ellas?. Ponga un ejemplo de una consulta que afecte a dos tablas indicando la diferencia.

  6. ¿Qué resultado devuelve la operación CROSS JOIN?. Ponga un ejemplo sencillo. ¿Existe otra forma de obtener el mismo resultado de la operación CROSS JOIN? Ponga un ejemplo.

  7. ¿Para qué se utilizan las operaciones LEFT OUTER JOIN y RIGHT OUTER JOIN?. ¿Qué diferencia hay entre ellas?. Ponga un ejemplo de una consulta que afecte a dos tablas indicando la diferencia.

  8. ¿Qué resultado devuelve la operación FULL OUTER JOIN?. ¿Cómo se puede implementar esta operación en MySQL?

  9. Indica si las siguientes consultas son correctas o incorrectas. En caso de ser incorrectas deberá explicar el motivo y cómo podrían resolverse de forma correcta.

SELECT *
FROM alumno
WHERE teléfono = NULL;
SELECT *
FROM alumno
WHERE apellido1 = 'S%';
SELECT *
FROM alumno
WHERE fecha_nacimiento >= '1999/01/01' AND '1999/12/31'
SELECT *
FROM producto, fabricante
WHERE fabricante.nombre = 'Lenovo';
SELECT *
FROM producto INNER JOIN fabricante
WHERE fabricante.nombre = 'Lenovo';
SELECT *
FROM producto INNER JOIN fabricante
ON producto.codigo = fabricante.codigo;
SELECT *
FROM producto
WHERE precio > AVG(precio);

2 Licencia

Licencia de Creative Commons
Esta página forma parte del curso Bases de Datos de José Juan Sánchez Hernández y su contenido se distribuye bajo una licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.