You are on page 1of 8

1.

Completa las siguentes tabla de verdad


AND True False Null
True True FALSE NULL
False FALSE FALSE FALSE
Null NULL FALSE NULL

OR True False Null


True True TRUE TRUE
False TRUE FALSE NULL
Null TRUE NULL NULL

NOT
True False
False TRUE
Null NULL

2. Escribe una sentencia para crear una tabla llamada Locations con la siguiente estructura:
Column name DeptNo DName DDate
Primary Key Yes
Data type Number Varchar2 Date
Length 4 30

CREATE TABLE LOCATIONS


(DeptNo Number (4) CONSTRAINT dep_dep_no_pk PRIMARY KEY,
DName Varchar2 (30) NOT NULL,
DDate Date NOT NULL);

Considera el siguiente diagrama:


3. ¿Cuál de los siguiente queries muestra el nombre de todos los empleados y al lado
derecho el nombre de su jefe sin importar que no tenga jefe?
a. select e.first_name, j.first_name from employees e, employees j where
e.manager_id = j.employee_id;
b. select e.first_name, j.first_name from employees e, employees j where
j.manager_id =e.employee_id;
c. select e.first_name, j.first_name from employees e, employees j where
j.employee_id =e.manager_id(+);
d. select e.first_name, j.first_name from employees e, employees j where
j.employee_id(+) =e.manager_id;
4. Por cada tipo de sentencia de la siguiente tabla escribe a qué clasificación pertenece.
Las clasificaciones son:
a. DML (Data manipulation language)
b. DDL (Data definition language)
c. DCL (Data control language)
d. Transaction control

Sentencia Clasificación
SELECT DML
GRANT DCL
INSERT DML
COMMIT TRANSACCION CONTROL
DROP DDL
UPDATE DML
ALTER DLL
RENAME DDL
ROLLBACK TRANSACCION CONTROL
MERGE DML
SAVEPOINT TRANSACCION CONTROL
REVOKE DCL
DELETE DML
TRUNCATE DDL
COMMENT DDL
CREATE DDL

5. Evalúa el siguiente query y selecciona la opción que muestra el resultado:


select 12/6*2+8-2*2
a. Evalúa a 12
b. Evalúa a 20
c. Evalúa a 5
d. Evalúa a 8
e. Evalúa a 14
6. Se quiere conocer el número de empleados por rango de salario. Para eso se utiliza el
siguiente query
select case when salary<10000 then 'Bajo'
when salary <20000 then 'medio'
else 'alto' end clasificacion,
count(*) from employees
group by clasificacion;

El resultado no es el esperado. ¿Qué está mal con la sentencia?


Este el resultado de la sentencia correcta:
SELECT last_name, salary,
(CASE WHEN salary<10000 THEN 'Bajo'
WHEN salary<20000 THEN 'Medio'
ELSE 'alto'
END) clasificacion
count (*) from employees
GROUP BY clasificacion;

7. Elige las opciones que muestren la forma válida de utilizar sinónimos (pueden ser más de
una):
a. select name nombre, last_name apellido from person p;
b. select p.name nombre, p.last_name apellido from person p;
c. select name ‘Nombre’, p.last_name apellido from person p;
d. select p.name “Nombre”, last_name apellido from person p;
e. select p.name nombre, p.last_name apellido from person;
f. select name as “Nombre”, last_name apellido from person;
g. select name “Nombre”, last_name apellido from person as P;

8. ¿Cuáles son las formas de concatenar cadenas al realizar queries? Pon un pequeño
ejemplo.

SELECT TO_CHAR(SYSDATE, 'fmDay')||'''s Special' "Menu"


FROM DUAL;

9. ¿Qué comando se utiliza para describir la estructura de una tabla?

Describe o DESC
10. Elige las opciones que muestran la forma correcta de realizar comparaciones:
a. select * from employees where salary = NULL;
b. select * from employees where salary between 1 or 20000;
c. select * from employees where salary > 1 or salary <20000;
d. select * from employees where salary in (20000,10000,15000,200);
e. select * from employees where salary like 2000*9;
f. select * from employees where salary not is null;
11. ¿Cuáles son los patrones de comparación utilizados con el operador LIKE?
a. *
b. _ (guión bajo)
c. . (punto)
d. – (guión medio)
e. %
12. ¿Cuáles de las siguientes sentencias son ciertas sobre la cláusula ORDER BY?
a. Se puede especificar el nombre de columna
b. Por default se ordena de forma descendiente
c. Se puede especificar una expresión
d. Se puede especificar la posición numérica
e. Los valores nulos aparecen al principio por default
f. Se puede usar NULLS FIRST o NULLS LAST para especificar si los nulos aparecen al
principio o al final
13. ¿Cuáles de los siguientes operadores son válidos en la cláusula WHERE?
a. >=
b. IS NULL
c. !=
d. IS LIKE
e. IN BETWEEN
f. <>
14. Escribe 2 queries que muestren el nombre del empleado y apellido. En caso de que el
apellido esté vacío entonces debe imprimir “---“. Utiliza las funciones NVL y NVL2; una
función diferente para cada query:
Ej. de query sin funciones: select first_name, last_name from employees;

SELECT first_name, last_name,


NVL(salary, 0) AS Salarios,
FROM employees;

SELECT first_name, last_name, salary


NVL2 (commission_pct, salary + (salary*commission_pct), salary) as Commission
From employees;

15. Escribe el nombre de seis funciones para conversión o manipulación de caracteres. No es


necesario poner para qué sirve cada función.

Funciones de Conversión o Manipulación

- LOWER
- INITCAP
- UPPER
- CONCAT
- SUBSTR
- LENGTH
- TRIM
- LPAD
- RPAD
- REPLACE

16. Un desarrollo pide que el usuario teclé una fecha en formato DD-MM-RR y lo almacena
como cadena de caracteres en la variable FCH_COMP y luego lo utiliza en el siguiente
query, que no siempre funciona correctamente:
select * from employees where hire_date < :FCH_COMP
¿Qué cambio realizarías para solucionar el problema?
Select * TO_CHAR( hiredate,
from employees;
17. ¿Cuáles de las siguientes sentencias son ciertas sobre funciones single-row (de fila única)?
a. Permiten manipular datos
b. Aceptan argumentos y regresan un valor por argumento
c. Actúan en cada registro regresado
d. Regresan un resultado por cada conjunto de registros
e. No pueden modificar el tipo de dato
f. Pueden ser anidados
g. Aceptan argumentos que pueden ser una columna o una expresión
18. ¿Qué sentencia es verdadera sobre los subqueries correlacionados?
a. El query interno (subquery) se ejecuta una sóla vez
b. El query interno (subquery) se ejecuta una vez por cada registro del query
externo.
c. Un query correlacionado no se puede convertir en un query que utiliza joins en su
lugar.
d. Un subquery correlacionado siempre es más eficiente que un query que usa joins
un su lugar.
19. Modifica el siguiente query para que utilice la función DECODE en vez de la cláusula CASE
select case salary when 10000 then 'DIEZ MIL'
when 20000 then 'VEINTE MIL'
else 'OTRO' end from employees;
select last_name, salary,
DECODE (salary, 10000, 'DIEZ MIL’,
salary, 20000, 'VEINTE MIL',
‘OTRO’)
Resultado
FROM employees;

20. Corrige la siguiente sentencia:


SELECT department_id, job_id, COUNT(last_name)
FROM employees
GROUP BY department_id, job_id;

21. Corrige la siguiente sentencia:


SELECT department_id, AVG(salary)
FROM employees
WHERE AVG(salary) > 8000
GROUP BY department_id,
ORDER BY AVG (salary);
22. Selecciona las sentencias verdaderas sobre los operadores de conjuntos:
a. El operador UNION regresa los registros de ambos queries sin incluir registros
duplicados.
b. La cláusula ORDER BY puede aparecer al final de cada SELECT dentro de la
sentencia que tiene operadores de conjunto.
c. El número y tipo de columnas de cada SELECT debe ser igual.
d. Los nombres de las columnas de cada SELECT deben ser idénticos.
e. Con el operador UNION ALL la salida siempre se ordena. Por default en orden
ascendente.
23. Selecciona las sentencias verdaderas:
a. Un usuario no puede consultar una tabla mientras otro la está modificando
b. Un usuario no puede modificar una tabla mientras otro la está modificando. Se
obtiene un error si se intenta
c. Un usuario no puede modificar una tabla mientras otro la está modificando. Se
queda en espera a que el otro usuario termine su transacción.
d. Un usuario no puede modificar una tabla que está siendo consultada por otro
usuario.
e. Un usuario puede consultar un tabla mientras otro usuario la está modificando o
consultando.
24. Explica qué es un deadlock
Es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema
concurrente que compiten por recursos del sistema o bien se comunican entre ellos.
25. ¿Para qué sirve la sentencia SELECT...FOR UPDATE?
Permite bloquear los registros del conjunto de resultados en curso. No estamos obligados
a realizar cambios en los registros con el fin de utilizar esta declaración. Los bloqueos de
registros se liberan cuando emitimos la siguiente instrucción commit o rollback.

26. El usuario A tiene una tabla llamada EMPLOYEES. El usuario B también tiene una tabla
llamada EMPLOYEES. El usuario A quiere consultar la tabla EMPLOYEES del usuario B.
Selecciona la opción correcta para que pueda realizar esto:
a. El usuario A debe tener privilegios de consultar la tabla EMPLOYEES del usuario B.
b. El usuario A puede crear un sinónimo llamado EMPLOYEES que apunte a la tabla
EMPLOYEES del usuario B.
c. El usuario A puede consultar la tabla anteponiendo como prefijo el dueño de la
tabla. Así: select * from B.EMPLOYEES;
d. El usuario A no puede consultar la tabla EMPLOYEES del usuario B de ningua
manera.
e. Con un sinónimo público llamado EMPLOYEES que apunte a la tabla EMPLOYEES
del usuario B el usuario A puede consultar la tabla.

27. Escribe los tipos de constraints que pueden definirse sobre una tabla.
Primary Key, Unique Key, Check, Foreign Key, Not Null.
28. Selecciona las sentencias que sean correctas sobre vistas:
a. Se pueden ejecutar DML’s sobre todas las vistas
b. Se pueden ejecutar DML’s sólo sobre algunas vistas
c. No se pueden ejecutar DML’s sobre las vistas
d. No se pueden crear índices sobre las vistas aunque sean materializadas
e. Una vista se traduce en un query y es almacenado en la BD como un query
f. Las vistas permiten ocultar la complejidad de los queries
29. Al ejecutar la siguiente sentencia se obtiene un error. El puro query, sin línea 1 se ejecuta
correctamente pero al tratar de crear la vista (con la línea 1) manda error ¿Cuál es el
problema?
1 create or replace view sal as
2 select employee_id, last_name, salary*12
3 from employees
4 where department_id=50;

CREATE OR REPLA CE VIEW salvu05 (NUMERO EMP, NOMBRE, SALARIO)


SELECT employee_id, last_name, salary*12
FROM employees
WHERE department_id = 50;

30. ¿Para qué sirve la cláusula WITH CHECK OPTION dentro de la definición de una vista?

R= Especifica que las inserciones y actualizaciones realizadas a través de la vista no puede


crear filas que la vista no se puede seleccionar. Por lo tanto, permite a las restricciones de
integridad y controles de validación de datos que se aplican en los datos que se insertan o
actualizan.

You might also like