SQL, procedimientos almacenados y disparadores — Test de Cuerpo de Técnicos Auxiliares de Informática de la Administración del Estado
Test gratuito de 30 preguntas de Cuerpo de Técnicos Auxiliares de Informática de la Administración del Estado, con la explicación justificada de cada respuesta. Responde las preguntas y envía el test para ver tu resultado: no necesitas registrarte.
¿Cuál de las siguientes sentencias DDL se utiliza para crear una nueva tabla en una base de datos?
- ACREATE TABLE
- BCREATE DATABASE
- CCREATE INDEX
- DCREATE VIEW
En una consulta SELECT que recupera datos de una tabla, ¿cuál de las siguientes cláusulas es obligatoria?
- AWHERE
- BFROM
- CGROUP BY
- DORDER BY
¿Qué comando DCL se utiliza para revocar permisos previamente concedidos a un usuario?
- AGRANT
- BDENY
- CREVOKE
- DREMOVE
¿Qué tipo de JOIN devuelve todos los registros de ambas tablas, combinando los coincidentes y rellenando con NULLs donde no hay coincidencia?
- AINNER JOIN
- BLEFT JOIN
- CRIGHT JOIN
- DFULL OUTER JOIN
¿Qué operador se utiliza en una subconsulta para comprobar si existe algún resultado en la subconsulta?
- AEXISTS
- BIN
- CANY
- DALL
¿Qué característica de una vista asegura que las modificaciones a través de la vista no puedan violar la condición definida en la misma?
- AWITH READ ONLY
- BWITH CHECK OPTION
- CWITH LOCAL CHECK
- DWITH CASCADE CHECK
En SQL, ¿cuál de las siguientes sentencias se utiliza para crear un procedimiento almacenado?
- ACREATE FUNCTION
- BCREATE TRIGGER
- CCREATE PROCEDURE
- DCREATE VIEW
¿Cuál es la principal diferencia entre una función y un procedimiento almacenado en SQL?
- ALas funciones no pueden tener parámetros de entrada.
- BLos procedimientos no pueden ejecutar consultas SELECT.
- CLas funciones se llaman con la sentencia CALL.
- DLas funciones siempre devuelven un valor, mientras que los procedimientos pueden no hacerlo.
En un trigger, ¿qué palabras clave se utilizan para referirse a los valores antiguos y nuevos de una fila en MySQL/PostgreSQL?
- AOLD y NEW
- BBEFORE y AFTER
- CTHEN y ELSE
- DTRIGGER y EVENT
En PL/SQL, ¿cuál de las siguientes sentencias se utiliza para abrir un cursor declarado?
- AFETCH
- BOPEN
- CDECLARE
- DLOOP
¿Qué sentencia se utiliza para confirmar permanentemente los cambios realizados en una transacción?
- AROLLBACK
- BSAVEPOINT
- CCOMMIT
- DEND TRANSACTION
¿Cuál es la sintaxis correcta para agregar una nueva columna 'telefono' de tipo VARCHAR(20) a una tabla 'clientes'?
- AALTER TABLE clientes INSERT COLUMN telefono VARCHAR(20);
- BMODIFY TABLE clientes ADD telefono VARCHAR(20);
- CCHANGE TABLE clientes ADD telefono VARCHAR(20);
- DALTER TABLE clientes ADD telefono VARCHAR(20);
¿Cuál de las siguientes es una sintaxis válida para actualizar una tabla 'empleados' usando un JOIN con 'departamentos' en SQL Server?
- AUPDATE empleados SET salario = d.presupuesto FROM empleados e INNER JOIN departamentos d ON e.dep_id = d.id;
- BUPDATE empleados e SET e.salario = d.presupuesto JOIN departamentos d ON e.dep_id = d.id;
- CUPDATE FROM empleados e JOIN departamentos d ON e.dep_id = d.id SET e.salario = d.presupuesto;
- DUPDATE empleados SET salario = presupuesto WHERE empleados.dep_id = departamentos.id;
¿Es posible conceder permisos GRANT sobre columnas específicas de una tabla?
- ANo, solo se pueden conceder permisos a nivel de tabla.
- BSí, usando GRANT SELECT(columna) ON tabla TO usuario;
- CSí, pero solo para el privilegio UPDATE.
- DSí, pero solo a través de vistas.
¿Qué tipo de JOIN devuelve únicamente los registros que tienen coincidencias en ambas tablas?
- ALEFT JOIN
- BRIGHT JOIN
- CINNER JOIN
- DFULL JOIN
Una subconsulta correlacionada es aquella que:
- ASe ejecuta una sola vez independientemente de la consulta externa.
- BNo referencia columnas de la consulta externa.
- CSiempre devuelve un solo valor escalar.
- DSe ejecuta una vez para cada fila de la consulta externa.
¿Qué tipo de vista almacena físicamente los datos de la consulta y se puede actualizar periódicamente?
- AVista materializada
- BVista indexada
- CVista temporal
- DVista en línea
En un procedimiento almacenado, ¿qué tipo de parámetro permite pasar un valor al procedimiento y también recibir un valor modificado desde el mismo?
- AIN
- BINOUT
- COUT
- DRETURN
Una función determinística en SQL es aquella que:
- APuede devolver resultados diferentes en cada llamada incluso con los mismos argumentos.
- BSolo puede ser utilizada en procedimientos almacenados.
- CSiempre devuelve el mismo resultado para los mismos argumentos.
- DNo puede contener sentencias SQL.
En un trigger que se ejecuta antes de una actualización (BEFORE UPDATE), ¿es posible modificar el valor de NEW.columna?
- ANo, nunca se pueden modificar los valores en un trigger.
- BSolo se puede modificar OLD.columna.
- CSolo en triggers AFTER UPDATE.
- DSí, en algunos SGBD como MySQL se puede modificar NEW.columna.
En PL/SQL, ¿qué atributo de un cursor devuelve TRUE si la última operación FETCH recuperó una fila?
- A%FOUND
- B%NOTFOUND
- C%ROWCOUNT
- D%ISOPEN
¿Qué sentencia se utiliza para crear un punto de guardado dentro de una transacción al que se puede deshacer posteriormente?
- ASAVE TRANSACTION
- BSAVEPOINT
- CCHECKPOINT
- DROLLBACK TO
¿Cuál de las siguientes sentencias elimina todos los registros de una tabla pero mantiene su estructura, y no se puede deshacer?
- ADELETE FROM tabla;
- BDROP TABLE tabla;
- CTRUNCATE TABLE tabla;
- DREMOVE TABLE tabla;
¿Es posible insertar múltiples filas en una tabla utilizando el resultado de una consulta SELECT?
- ANo, INSERT solo permite valores explícitos con VALUES.
- BSí, pero solo si la consulta devuelve una única fila.
- CSí, pero solo en tablas temporales.
- DSí, con la sintaxis INSERT INTO tabla SELECT ...;
¿Qué comando DCL se utiliza para crear un rol en la base de datos?
- ACREATE ROLE
- BCREATE USER
- CGRANT ROLE
- DDEFINE ROLE
Un self join es:
- AUna join de una tabla consigo misma.
- BUna join entre dos tablas con la misma estructura.
- CUna join que usa la misma columna en ambas tablas.
- DUna join automática que no requiere condición ON.
¿En qué cláusula de una consulta SELECT se puede utilizar una subconsulta como si fuera una tabla?
- AWHERE
- BSELECT
- CFROM
- DHAVING
¿Cuál es la principal desventaja de una vista materializada frente a una vista estándar?
- ANo se puede consultar con SELECT.
- BNo admite actualizaciones directas.
- CEs más lenta de consultar porque recalcula cada vez.
- DOcupa espacio de almacenamiento.
En PL/SQL, ¿qué bloque se utiliza para capturar y manejar errores dentro de un procedimiento almacenado?
- AEXCEPTION
- BERROR
- CCATCH
- DFAIL
Si hay múltiples triggers definidos para el mismo evento en una tabla, ¿se puede especificar el orden de ejecución?
- ANo, se ejecutan en orden aleatorio.
- BDepende del SGBD; algunos permiten especificar prioridades.
- CSiempre se ejecutan en orden de creación.
- DSolo se permite un trigger por evento.
Soluciones y explicaciones
Ver las 30 respuestas correctas y su explicación
Esta sección revela las respuestas correctas. Te recomendamos hacer el test antes de consultarla.
-
¿Cuál de las siguientes sentencias DDL se utiliza para crear una nueva tabla en una base de datos?
Respuesta correcta: CREATE TABLE
La sentencia CREATE TABLE es un comando DDL que crea una nueva tabla definiendo sus columnas, tipos de datos y restricciones.
-
En una consulta SELECT que recupera datos de una tabla, ¿cuál de las siguientes cláusulas es obligatoria?
Respuesta correcta: FROM
La cláusula FROM es obligatoria en una consulta SELECT que referencia tablas, ya que especifica la tabla o tablas de las que se obtienen los datos.
-
¿Qué comando DCL se utiliza para revocar permisos previamente concedidos a un usuario?
Respuesta correcta: REVOKE
El comando REVOKE se utiliza en SQL DCL para retirar privilegios previamente concedidos a un usuario o rol.
-
¿Qué tipo de JOIN devuelve todos los registros de ambas tablas, combinando los coincidentes y rellenando con NULLs donde no hay coincidencia?
Respuesta correcta: FULL OUTER JOIN
Un FULL OUTER JOIN devuelve todos los registros de ambas tablas; donde hay coincidencia se combinan, y donde no, se rellenan con NULLs.
-
¿Qué operador se utiliza en una subconsulta para comprobar si existe algún resultado en la subconsulta?
Respuesta correcta: EXISTS
El operador EXISTS se utiliza en subconsultas para verificar si la subconsulta devuelve al menos una fila.
-
¿Qué característica de una vista asegura que las modificaciones a través de la vista no puedan violar la condición definida en la misma?
Respuesta correcta: WITH CHECK OPTION
La cláusula WITH CHECK OPTION en una vista asegura que todas las inserciones o actualizaciones realizadas a través de la vista cumplan la condición de la vista.
-
En SQL, ¿cuál de las siguientes sentencias se utiliza para crear un procedimiento almacenado?
Respuesta correcta: CREATE PROCEDURE
La sentencia CREATE PROCEDURE se utiliza para crear un procedimiento almacenado en la base de datos.
-
¿Cuál es la principal diferencia entre una función y un procedimiento almacenado en SQL?
Respuesta correcta: Las funciones siempre devuelven un valor, mientras que los procedimientos pueden no hacerlo.
En SQL, una función debe devolver un valor, mientras que un procedimiento almacenado puede no devolverlo o devolver múltiples valores a través de parámetros OUT.
-
En un trigger, ¿qué palabras clave se utilizan para referirse a los valores antiguos y nuevos de una fila en MySQL/PostgreSQL?
Respuesta correcta: OLD y NEW
En triggers de MySQL y PostgreSQL, OLD y NEW son pseudo-registros que contienen los valores de la fila antes y después del evento que activa el trigger.
-
En PL/SQL, ¿cuál de las siguientes sentencias se utiliza para abrir un cursor declarado?
Respuesta correcta: OPEN
La sentencia OPEN se utiliza para abrir un cursor, permitiendo posteriormente la recuperación de filas con FETCH.
-
¿Qué sentencia se utiliza para confirmar permanentemente los cambios realizados en una transacción?
Respuesta correcta: COMMIT
La sentencia COMMIT confirma todos los cambios realizados en la transacción actual, haciéndolos permanentes.
-
¿Cuál es la sintaxis correcta para agregar una nueva columna 'telefono' de tipo VARCHAR(20) a una tabla 'clientes'?
Respuesta correcta: ALTER TABLE clientes ADD telefono VARCHAR(20);
La sentencia ALTER TABLE se utiliza para modificar la estructura de una tabla; para agregar una columna se utiliza la cláusula ADD seguida del nombre y tipo de dato.
-
¿Cuál de las siguientes es una sintaxis válida para actualizar una tabla 'empleados' usando un JOIN con 'departamentos' en SQL Server?
Respuesta correcta: UPDATE empleados SET salario = d.presupuesto FROM empleados e INNER JOIN departamentos d ON e.dep_id = d.id;
En SQL Server, se puede realizar un UPDATE con JOIN utilizando la sintaxis UPDATE ... SET ... FROM ... JOIN ... ON.
-
¿Es posible conceder permisos GRANT sobre columnas específicas de una tabla?
Respuesta correcta: Sí, usando GRANT SELECT(columna) ON tabla TO usuario;
El estándar SQL permite conceder privilegios a nivel de columna especificando la columna entre paréntesis después del privilegio, por ejemplo: GRANT SELECT (columna) ON tabla TO usuario.
-
¿Qué tipo de JOIN devuelve únicamente los registros que tienen coincidencias en ambas tablas?
Respuesta correcta: INNER JOIN
Un INNER JOIN devuelve solo los registros que tienen coincidencias en ambas tablas involucradas.
-
Una subconsulta correlacionada es aquella que:
Respuesta correcta: Se ejecuta una vez para cada fila de la consulta externa.
Una subconsulta correlacionada referencia columnas de la consulta externa y se ejecuta una vez por cada fila procesada por la consulta externa.
-
¿Qué tipo de vista almacena físicamente los datos de la consulta y se puede actualizar periódicamente?
Respuesta correcta: Vista materializada
Una vista materializada almacena el resultado de la consulta como datos físicos, que pueden ser actualizados mediante refresco.
-
En un procedimiento almacenado, ¿qué tipo de parámetro permite pasar un valor al procedimiento y también recibir un valor modificado desde el mismo?
Respuesta correcta: INOUT
Los parámetros INOUT permiten pasar un valor al procedimiento y recibir un valor modificado desde él, a diferencia de IN (solo entrada) y OUT (solo salida).
-
Una función determinística en SQL es aquella que:
Respuesta correcta: Siempre devuelve el mismo resultado para los mismos argumentos.
Una función determinística devuelve siempre el mismo resultado para los mismos valores de entrada, lo que permite su uso en índices y optimizaciones.
-
En un trigger que se ejecuta antes de una actualización (BEFORE UPDATE), ¿es posible modificar el valor de NEW.columna?
Respuesta correcta: Sí, en algunos SGBD como MySQL se puede modificar NEW.columna.
En triggers BEFORE UPDATE de MySQL y PostgreSQL, se puede modificar el valor de NEW.columna para cambiar el valor que se almacenará.
-
En PL/SQL, ¿qué atributo de un cursor devuelve TRUE si la última operación FETCH recuperó una fila?
Respuesta correcta: %FOUND
El atributo %FOUND de un cursor devuelve TRUE si la última operación FETCH recuperó una fila; en caso contrario, devuelve FALSE.
-
¿Qué sentencia se utiliza para crear un punto de guardado dentro de una transacción al que se puede deshacer posteriormente?
Respuesta correcta: SAVEPOINT
La sentencia SAVEPOINT define un punto dentro de la transacción al que se puede volver mediante ROLLBACK TO SAVEPOINT.
-
¿Cuál de las siguientes sentencias elimina todos los registros de una tabla pero mantiene su estructura, y no se puede deshacer?
Respuesta correcta: TRUNCATE TABLE tabla;
TRUNCATE TABLE elimina todos los registros de una tabla de forma eficiente, liberando espacio, y no se puede deshacer con ROLLBACK en la mayoría de los SGBD (aunque depende de la implementación).
-
¿Es posible insertar múltiples filas en una tabla utilizando el resultado de una consulta SELECT?
Respuesta correcta: Sí, con la sintaxis INSERT INTO tabla SELECT ...;
La sentencia INSERT INTO ... SELECT permite insertar en una tabla los resultados de una consulta SELECT, pudiendo ser múltiples filas.
-
¿Qué comando DCL se utiliza para crear un rol en la base de datos?
Respuesta correcta: CREATE ROLE
El comando CREATE ROLE se utiliza para crear un rol, al que posteriormente se le pueden asignar privilegios y usuarios.
-
Un self join es:
Respuesta correcta: Una join entre dos tablas con la misma estructura.
Un self join es una operación de join donde una tabla se une consigo misma, típicamente usando alias para diferenciar las instancias.
-
¿En qué cláusula de una consulta SELECT se puede utilizar una subconsulta como si fuera una tabla?
Respuesta correcta: FROM
Una subconsulta se puede utilizar en la cláusula FROM como una tabla derivada, siempre que se le asigne un alias.
-
¿Cuál es la principal desventaja de una vista materializada frente a una vista estándar?
Respuesta correcta: Ocupa espacio de almacenamiento.
Una vista materializada almacena físicamente los datos, por lo que consume espacio de almacenamiento, a diferencia de una vista estándar que solo almacena la definición.
-
En PL/SQL, ¿qué bloque se utiliza para capturar y manejar errores dentro de un procedimiento almacenado?
Respuesta correcta: EXCEPTION
En PL/SQL, el bloque EXCEPTION dentro de un procedimiento almacenado permite capturar y manejar errores que ocurran durante la ejecución.
-
Si hay múltiples triggers definidos para el mismo evento en una tabla, ¿se puede especificar el orden de ejecución?
Respuesta correcta: Depende del SGBD; algunos permiten especificar prioridades.
Algunos SGBD como MySQL permiten especificar el orden de ejecución de múltiples triggers para el mismo evento usando cláusulas como FOLLOWS o PRECEDES.