Test de 15 preguntas sobre bases de datos relacionales y SQL: sentencias DDL, DML y DCL, consultas, normalización, claves foráneas y transacciones. Sirve a la oposición de Técnico de Sistemas TI del SERGAS (programa del DOG 126/2021; comprueba allí el epígrafe). Las respuestas se apoyan en la documentación de Transact-SQL de Microsoft Learn.
Lo que tienes que saber antes de empezar
- DDL define estructuras, DML manipula datos, DCL concede o retira permisos y TCL controla transacciones; repásalo aquí.
- Comparar con NULL da UNKNOWN: se usa IS NULL.
- COUNT(*) cuenta filas; COUNT(columna) solo valores no nulos.
- UNION quita duplicados; UNION ALL los conserva.
- ACID: atomicidad, consistencia, aislamiento y durabilidad.
| Sublenguaje | Sentencias típicas |
|---|---|
| DDL | CREATE, ALTER, DROP, TRUNCATE |
| DML | SELECT, INSERT, UPDATE, DELETE |
| DCL | GRANT, REVOKE, DENY |
| TCL | COMMIT, ROLLBACK |
Test de bases de datos relacionales y SQL
¿Cuál de estas sentencias pertenece al DCL (lenguaje de control de datos)?
A) ALTER TABLE
B) UPDATE
C) GRANT
D) COMMIT
¿Qué sentencia elimina una tabla junto con su definición y sus datos?
A) TRUNCATE TABLE, que vacía y borra la estructura
B) DROP TABLE
C) DELETE FROM sin cláusula WHERE, con baja de la estructura
D) ALTER TABLE con la opción CLEAR
Agrupas los ingresos por servicio y quieres solo los servicios con estancia media superior a 5 días, AVG(dias) > 5. ¿Qué cláusula filtra esos grupos?
A) WHERE
B) ORDER BY
C) DISTINCT
D) HAVING
Una tabla tiene 10 filas y la columna telefono es NULL en 3 de ellas. ¿Qué devuelve COUNT(telefono)?
A) 7
B) 10
C) 3
D) 0
Las tablas A y B contienen los mismos 5 códigos, sin repetidos dentro de cada una. ¿Cuántas filas devuelve SELECT codigo FROM A UNION SELECT codigo FROM B?
A) 10
B) 25
C) 5
D) 0
Una clave foránea se define con ON DELETE CASCADE. Al borrar una fila de la tabla padre, ¿qué ocurre con las filas hijas relacionadas?
A) El borrado falla y se revierte.
B) También se borran.
C) Quedan con NULL en la clave foránea.
D) Quedan intactas, huérfanas.
¿Qué nivel de aislamiento de transacciones permite lecturas sucias (dirty reads)?
A) READ COMMITTED
B) REPEATABLE READ
C) SERIALIZABLE
D) READ UNCOMMITTED
Una transferencia entre dos cuentas se aplica entera o no se aplica en absoluto. ¿Qué propiedad ACID garantiza esto?
A) Atomicidad
B) Consistencia
C) Aislamiento
D) Durabilidad
La tabla paciente(id, nombre, telefonos) guarda dos teléfonos separados por coma en una celda. ¿Qué forma normal incumple?
A) 2FN
B) 3FN
C) 1FN
D) 4FN
empleado(id_empleado, nombre, id_servicio, telefono_servicio) tiene clave primaria simple id_empleado y valores atómicos, y telefono_servicio depende de id_servicio. ¿Cuál es la forma normal más baja que incumple?
A) 1FN
B) 2FN
C) 3FN
D) BCNF
Con ANSI_NULLS activo, ¿qué devuelve SELECT * FROM paciente WHERE telefono = NULL?
A) Ninguna fila
B) Las filas con teléfono vacío
C) Todas las filas de la tabla
D) Un error de sintaxis
Hay 4 médicos y 6 citas; 3 médicos tienen citas, 1 no tiene ninguna y toda cita tiene médico. ¿Cuántas filas devuelve medico LEFT JOIN cita ON ...?
A) 4
B) 6
C) 24
D) 7
Se ejecuta TRUNCATE TABLE paciente, tabla referenciada por una clave foránea de cita. ¿Qué ocurre?
A) Se vacía paciente y se borran en cascada las citas.
B) Da error; hay que usar DELETE.
C) Solo se borran los pacientes sin citas.
D) Se conservan las filas y solo se reinicia el identity.
Tras BEGIN TRANSACTION, un INSERT, un UPDATE y un DELETE, se ejecuta ROLLBACK. ¿En qué estado queda la tabla?
A) Con el INSERT aplicado.
B) Con el DELETE deshecho, pero no lo demás.
C) Con todos los cambios hasta COMMIT.
D) En su estado anterior a la transacción.
Quieres retirar el permiso SELECT concedido antes al rol recepcion sobre paciente, sin crear una denegación explícita. ¿Qué sentencia usas?
A) REVOKE SELECT ON paciente FROM recepcion
B) DENY SELECT ON paciente TO recepcion
C) DROP USER recepcion
D) DELETE FROM paciente
Soluciones razonadas
Respuesta: C. Documentación de GRANT (T-SQL). GRANT concede permisos, que es control de acceso (DCL). ALTER TABLE es DDL, UPDATE es DML y COMMIT es TCL.
Respuesta: B. Documentación de TRUNCATE TABLE (T-SQL). DROP TABLE quita tabla y definición. TRUNCATE y DELETE sin WHERE vacían las filas pero mantienen la estructura; CLEAR no existe.
Respuesta: D. Documentación de HAVING (T-SQL). HAVING especifica una condición de búsqueda para un grupo o un agregado, como AVG(dias) > 5. WHERE filtra filas antes de agrupar y no admite agregados; ORDER BY ordena y DISTINCT quita duplicados.
Respuesta: A. Documentación de COUNT (T-SQL). COUNT(expresión) cuenta solo valores no nulos: 10 − 3 = 7. COUNT(*) devolvería 10.
Respuesta: C. Documentación de UNION (T-SQL). UNION elimina duplicados: salen 5. UNION ALL devolvería 10.
Respuesta: B. Documentación de restricciones PRIMARY KEY y FOREIGN KEY. CASCADE borra o actualiza las filas relacionadas. NO ACTION provoca error y deshace el borrado; SET NULL deja NULL.
Respuesta: D. Documentación de SET TRANSACTION ISOLATION LEVEL (T-SQL). READ UNCOMMITTED permite leer datos aún no confirmados. READ COMMITTED lo evita, y los otros dos son más estrictos.
Respuesta: A. Guía de transacciones de SQL Server. Atomicidad es «todo o nada». La durabilidad conserva lo confirmado y el aislamiento separa transacciones concurrentes.
Respuesta: C. Artículo de Microsoft sobre normalización. 1FN exige eliminar grupos repetidos y valores multivaluados: un teléfono por fila o en tabla aparte.
Respuesta: C. Artículo de Microsoft sobre normalización. telefono_servicio depende de un atributo no clave (id_servicio): es una dependencia transitiva, que rompe la 3FN. Se resuelve moviéndolo a una tabla servicio. 1FN se cumple (valores atómicos) y 2FN también (con clave simple no hay dependencias parciales); BCNF incluye la 3FN, así que no es la más baja.
Respuesta: A. Documentación de NULL y UNKNOWN (T-SQL). Comparar con NULL da UNKNOWN, y WHERE solo deja pasar TRUE. Se usa IS NULL.
Respuesta: D. Documentación de FROM y JOIN (T-SQL). LEFT JOIN devuelve las 6 filas coincidentes más 1 fila del médico sin citas, con NULL a la derecha: 7.
Respuesta: B. Documentación de TRUNCATE TABLE (T-SQL). TRUNCATE no puede usarse sobre tablas referenciadas por una FOREIGN KEY; se usa DELETE.
Respuesta: D. Documentación de ROLLBACK TRANSACTION (T-SQL). ROLLBACK borra todas las modificaciones hechas desde el inicio de la transacción.
Respuesta: A. Documentación de REVOKE y DENY (T-SQL). REVOKE quita un permiso concedido o denegado antes. DENY crea una denegación explícita que prevalece.
Cómo corregir tu resultado
Cada acierto suma 1 y cada error resta un cuarto de acierto; en blanco no puntúa. Nota neta = aciertos − errores × 0,25. Ejemplo: 10 aciertos y 3 errores dan 10 − 0,75 = 9,25 sobre 15.
Preguntas frecuentes
¿Qué diferencia hay entre DELETE y TRUNCATE?
DELETE puede filtrar con WHERE; TRUNCATE vacía toda la tabla y no se puede usar sobre tablas referenciadas por una clave foránea. En SQL Server, además, reinicia el contador identity.
¿Por qué WHERE columna = NULL no devuelve filas?
La comparación con NULL da UNKNOWN y WHERE solo deja pasar TRUE. Hay que usar IS NULL.
¿Qué diferencia hay entre REVOKE y DENY?
En SQL Server, REVOKE retira un permiso concedido o denegado antes. DENY deniega el permiso de forma explícita y prevalece sobre los que llegarían por un grupo o rol.
Referencias
- Microsoft Learn, Transact-SQL: TRUNCATE TABLE, HAVING, GRANT, REVOKE.
- Microsoft Learn: claves primarias y foráneas y guía de transacciones.
- Microsoft, descripción de la normalización.
Sigue practicando
Repasa la oposición de Técnico de Sistemas TI, el resumen de bases de datos y SQL y las bases de datos NoSQL. Y practica más preguntas de esta materia en OpoSERGAS.