Hoja de ejercicios de Bases de datos y SQL con soluciones

Hoja de ejercicios de Bases de datos y SQL gratis e imprimible: 8 problemas desde nivel fácil hasta nivel de examen, con soluciones. Imprímela o guárdala como PDF.

Para docentes: pueden imprimirla, copiarla y usarla en clase gratis. Cada hoja nueva tiene valores nuevos y su propia clave de respuestas. Agradecemos un enlace a ExamProblems en la página de tu curso.

Nombre: ____________________   Fecha: ____________

1.Fácil

¿Qué cláusula filtra filas antes de agrupar?

  1. AGROUP BY
  2. BORDER BY
  3. CWHERE
  4. DHAVING
2.Fácil

¿Qué es una clave primaria (primary key)?

  1. AUna columna o conjunto de columnas que identifica de forma única cada fila
  2. BUna columna que puede contener valores duplicados pero nunca debe contener NULL
  3. CLa primera columna de cada tabla
  4. DUna contraseña para la base de datos
3.Fácil

¿Qué sentencia SQL recupera datos de una tabla?

  1. AUPDATE
  2. BCREATE
  3. CINSERT
  4. DSELECT
4.Media

Un LEFT JOIN devuelve:

  1. ASolo las filas coincidentes de ambas tablas
  2. BSolo todas las filas de la tabla derecha
  3. CTodas las filas de la tabla izquierda y las filas coincidentes de la derecha, con NULL donde no hay coincidencia
  4. DLas filas que no coinciden en ninguna de las dos tablas
5.Media

¿Qué consulta muestra los clientes que nunca han hecho un pedido?

  1. ASELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  2. BSELECT c.name FROM customers c INNER JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  3. CSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
  4. DSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NOT NULL
6.Media

¿Qué consulta devuelve el salario más alto de cada departamento?

  1. ASELECT dept, MAX(salary) FROM emp ORDER BY dept
  2. BSELECT dept, MAX(salary) FROM emp GROUP BY dept
  3. CSELECT dept, salary FROM emp WHERE salary = MAX(salary)
  4. DSELECT MAX(dept), salary FROM emp GROUP BY salary
7.Difícil

R(A, B, C, D) tiene las dependencias funcionales A → B y C → D. ¿Cuál es la clave candidata?

  1. A{B, D}
  2. B{A, C}
  3. C{C}
  4. D{A}
8.Difícil

Una tabla tiene un millón de filas y una columna booleana is_active que es TRUE en el 95% de ellas. ¿Por qué podría el optimizador ignorar un índice sobre is_active para WHERE is_active = TRUE?

  1. ALa mayoría de las filas coinciden, así que un recorrido completo de la tabla es más barato que muchas búsquedas en el índice
  2. BEl optimizador nunca usa índices en las cláusulas WHERE
  3. CEl índice trata TRUE como NULL
  4. DNo se pueden crear índices sobre columnas booleanas

Soluciones

  1. 1. C · WHERE
  2. 2. A · Una columna o conjunto de columnas que identifica de forma única cada fila
  3. 3. D · SELECT
  4. 4. C · Todas las filas de la tabla izquierda y las filas coincidentes de la derecha, con NULL donde no hay coincidencia
  5. 5. A · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  6. 6. B · SELECT dept, MAX(salary) FROM emp GROUP BY dept
  7. 7. B · {A, C}
  8. 8. A · La mayoría de las filas coinciden, así que un recorrido completo de la tabla es más barato que muchas búsquedas en el índice

Soluciones completas paso a paso: practica este tema en examproblems.com.