Está en la página 1de 8

Uso de Subconsultas

Ejercicios

Las siguientes preguntas le ayudarán a medir su comprensión del material presentado en este
capítulo. Lea todas las opciones cuidadosamente porque puede haber más de una respuesta
correcta. Escoger Todas las respuestas correctas para cada pregunta

Defina las Subconsultas

1. Considere esta descripción genérica de una instrucción SELECT:


SELECT select_list
FROM table
WHERE condition
GROUP BY expression_1
HAVING expression_2
ORDER BY expression_3 ;
¿Dónde se pueden usar las subconsultas? (Elija todas las respuestas correctas.)
A. select_list

B. Table

C. Condition

D. expression_1

E. expression_2

F. expression_3
2. Una consulta puede tener una subconsulta incrustada en ella. ¿En qué circunstancias
podría haber más de una subconsulta? (Elige la mejor respuesta.)

A. La consulta externa puede incluir una consulta interna. No es posible tener otra
consulta dentro de la consulta interna.

B. Es posible incrustar una subconsulta de una fila dentro de una subconsulta de


varias filas, pero no al contrario.

C. La consulta externa puede tener múltiples consultas internas, pero no deben estar
incrustadas en otras consultas.

D. Las subconsultas pueden incrustarse entre sí, sin limitaciones prácticas de


profundidad.

3. Considere la siguiente sentencia:

select employee_id, last_name from employees where


salary > (select avg(salary) from employees);

¿Cuándo se ejecutará la subconsulta? (Elige la mejor respuesta.)

A. Se ejecutará antes de la consulta externa.

B. Se ejecutará después de la consulta externa.

C. Se ejecutará simultáneamente con la consulta externa.

D. Se ejecutará una vez por cada fila de la tabla EMPLOYEES.

4. Considere la siguiente sentencia:


select o.employee_id, o.last_name from employees o where
o.salary > (select avg(i.salary) from employees i
where i.department_id=o.department_id);

¿Cuándo se ejecutará la subconsulta? (Elige la mejor respuesta.)

A. Se ejecutará antes de la consulta externa.

B. Se ejecutará después de la consulta externa.

C. Se ejecutará simultáneamente con la consulta externa.

D. Se ejecutará una vez por cada fila de la tabla EMPLOYEES.


Describir los tipos de problemas que las subconsultas pueden resolver

5. Considere la siguiente sentencia:

select last_name from employees join departments


on employees.department_id = departments.department_id
where department_name=’Executive’;

y ésta sentencia:

select last_name from employees where department_id in


(select department_id from departments where department_name=’Executive’);

¿Qué se puede decir de las dos afirmaciones? (Elija dos respuestas correctas.)

A. Las dos sentencias deben generar el mismo resultado.

B. Las dos declaraciones podrían generar resultados diferentes.

C. La primera instrucción siempre se ejecutará correctamente; La segunda


instrucción se equivocará si hay Dos departamentos con DEPARTMENT_NAME
'Ejecutivo'.

D. Ambas declaraciones siempre se ejecutarán correctamente, incluso si hay dos


departamentos con DEPARTMENT_NAME "Ejecutivo".

Listar los tipos de subconsultas

6. ¿Cuáles son las características distintivas de una subconsulta escalar? (Elija dos
respuestas correctas.)

A. Una subconsulta escalar devuelve una fila.

B. Una subconsulta escalar devuelve una columna.

C. No se puede usar una subconsulta escalar en la lista SELECT de la consulta padre.

D. Una subconsulta escalar no se puede utilizar como subconsulta correlacionada.

7. ¿Qué operador de comparación no se puede utilizar con subconsultas de varias filas?


(Elige la mejor respuesta.)
A. ALL

B. ANY

C. IN

D. NOT IN

E. Todo lo anterior puede ser usado.


Escribir subconsultas de una fila y varias filas

8. Considere la siguiente sentencia:

select last_name, (select count(*) from departments) from employees


where salary = (select salary from employees);

¿Qué tiene de malo? (Elige la mejor respuesta.)

A. No hay nada malo: la declaración debe funcionar sin error.

B. La instrucción fallará porque la subconsulta en el SELECT hace referencia a una


tabla que es no aparece en la cláusula FROM.

C. La instrucción fallará si la segunda consulta devuelve más de una fila.

D. La declaración se ejecutará, pero es extremadamente ineficiente debido a la


necesidad de ejecutar la segunda Subconsulta una vez por cada fila en la tabla
EMPLOYEES.

9. ¿Cuáles de las siguientes afirmaciones son equivalentes? (Elija dos respuestas.)

A. select employee_id from employees where salary < all (select salary from employees
where department_id=10);

B. select employee_id from employees where salary < (select min(salary) from employees
where department_id=10);

C. select employee_id from employees where salary not >= any (select salary from
employees where department_id=10);

D. select employee_id from employees e join departments d on e.department_id=


d.department_id where e.salary < (select min(salary) from employees) and
d.department_id=10;

10. Considere esta declaración, que tiene la intención de solicitar el nombre de un


empleado y luego encontrar todos los empleados que tienen el mismo trabajo que el
primer empleado:

select last_name,employee_id from employees where job_id =


(select job_id from employees where last_name = ’&Name’);
¿Qué pasaría si se diera un valor para & Name que no coincidía con ninguna fila en
¿EMPLOYEES? (Elige la mejor respuesta.)

A. La sentencia fallaría con un error.

B. La sentencia devolvería todas las filas de la tabla.

C. La instrucción no devolverá ninguna fila.

D. La instrucción devolverá todas las filas donde JOB_ID es NULL.


Escritura de instrucciones SELECT para acceder a datos de más de una tabla
Equijoins y Nonequijoins

1. Las tablas EMPLOYEES y DEPARTMENTS tienen dos columnas idénticamente


nombradas: DEPARTMENT_ID y MANAGER_ID. ¿Cuál de estas afirmaciones se une a estas
tablas basadas en Sólo en valores de DEPARTMENT_ID comunes? (Elija todas las que
apliquen.)

A. SELECT * FROM EMPLOYEES NATURAL JOIN DEPARTMENTS;

B. SELECT * FROM EMPLOYEES E NATURAL JOIN DEPARTMENTS D ON


E.DEPARTMENT_ID=D.DEPARTMENT_ID;

C. SELECT * FROM EMPLOYEES NATURAL JOIN DEPARTMENTS USING


(DEPARTMENT_ID);

D. Ninguno de los anteriores.


2. Las tablas EMPLOYEES y DEPARTMENTS tienen dos columnas de nombre idéntico:
DEPARTMENT_ID y MANAGER_ID. Qué sentencias se unen a estas tablas basadas en
Columna valores? (Elija todas las que apliquen.)

A. SELECT * FROM EMPLOYEES NATURAL JOIN DEPARTMENTS;

B. SELECT * FROM EMPLOYEES JOIN DEPARTMENTS


USING (DEPARTMENT_ID,MANAGER_ID);

C. SELECT * FROM EMPLOYEES E JOIN DEPARTMENTS D


ON E.DEPARTMENT_ID=D.DEPARTMENT_ID AND
E.MANAGER_ID=D.MANAGER_ID;

D. Ninguna de las anteriores.

3. ¿Qué combinación se realiza mediante la consulta siguiente?


SELECT E.JOB_ID,J.JOB_ID FROM EMPLOYEES E
JOIN JOBS J ON (E.SALARY < J.MAX_SALARY); (Elige la mejor respuesta.)

A. Equijoin

B. Nonequijoin

C. Cross join

D. Outer join

4. ¿Cuáles de las siguientes sentencias son sintácticamente correctas? (Elija todas las que
apliquen.)

A. SELECT * FROM EMPLOYEES E JOIN DEPARTMENTS D USING


(DEPARTMENT_ID);

B. SELECT * FROM EMPLOYEES JOIN DEPARTMENTS D USING


(D.DEPARTMENT_ID);

C. SELECT D.DEPARTMENT_ID FROM EMPLOYEES JOIN DEPARTMENTS D


USING (DEPARTMENT_ID);

D. Ninguna de las anteriores


5. ¿Cuáles de las siguientes afirmaciones son sintácticamente correctas? (Elija todas las que
apliquen.)

A. SELECT E.EMPLOYEE_ID, J.JOB_ID PREVIOUS_JOB, E.JOB_ID CURRENT_JOB


FROM JOB_HISTORY J CROSS JOIN EMPLOYEES E ON
(J.START_DATE=E.HIRE_DATE);

B. SELECT E.EMPLOYEE_ID, J.JOB_ID PREVIOUS_JOB, E.JOB_ID CURRENT_JOB


FROM JOB_HISTORY J JOIN EMPLOYEES E ON (J.START_DATE=E.HIRE_DATE);

C. SELECT E.EMPLOYEE_ID, J.JOB_ID PREVIOUS_JOB, E.JOB_ID CURRENT_JOB


FROM JOB_HISTORY J OUTER JOIN EMPLOYEES E
ON (J.START_DATE=E.HIRE_DATE);

D. Ninguna de las anteriores.

6. Elija una declaración correcta con respecto a la siguiente consulta:


SELECT * FROM EMPLOYEES E
JOIN DEPARTMENTS D ON (D.DEPARTMENT_ID=E.DEPARTMENT_ID) JOIN
LOCATIONS L ON (L.LOCATION_ID =D.LOCATION_ID);

A. No se permite unir tres tablas.

B. Se genera un producto cartesiano.

C. La cláusula JOIN ... ON puede utilizarse para combinaciones entre varias tablas.

D. Ninguna de las anteriores

7. Cuántas filas se devuelven después de ejecutar la siguiente instrucción?


SELECT * FROM REGIONS R1 JOIN REGIONS R2
ON (R1.REGION_ID=LENGTH(R2.REGION_NAME)/2);
La tabla REGIONS contiene los siguientes datos de fila. (Elige la mejor respuesta.)
REGION_ID REGION_NAME
REGION_ID REGION_NAME
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
A. 2

B. 3

C. 4

D. Ninguna de las anteriores.


Vea datos que no cumplen una condición de unión utilizando combinaciones
externas

8. Elija una declaración correcta con respecto a la consulta siguiente.

SELECT C.COUNTRY_ID
FROM LOCATIONS L RIGHT OUTER JOIN COUNTRIES C
ON (L.COUNTRY_ID=C.COUNTRY_ID) WHERE L.COUNTRY_ID is NULL

A. Ninguna fila en la tabla LOCATIONS tiene los valores COUNTRY_ID devueltos.

B. Ninguna fila en la tabla COUNTRIES tiene los valores COUNTRY_ID devueltos.

C. Las filas devueltas representan los valores de COUNTRY_ID para todas las filas
en las ubicaciones mesa.

D. Ninguna de las anteriores

9. ¿Cuáles de las siguientes afirmaciones son sintácticamente correctas? (Elija todas las que
apliquen.)

A. SELECT JH.JOB_ID FROM JOB_HISTORY JH RIGHT OUTER JOIN JOBS J ON


JH.JOB_ID=J.JOB_ID

B. SELECT JOB_ID FROM JOB_HISTORY JH RIGHT OUTER JOIN JOBS J ON


(JH.JOB_ID=J.JOB_ID)

C. SELECT JOB_HISTORY.JOB_ID FROM JOB_HISTORY OUTER JOIN JOBS ON


JOB_HISTORY.JOB_ID=JOBS.JOB_ID

D. Ninguna de las anteriores.

Generar un producto cartesiano de dos o más tablas

10. Si la tabla REGIONS, que contiene 4 filas, se cruza con la tabla COUNTRIES, que
Contiene 25 filas, ¿cuántas filas aparecen en el conjunto de resultados finales? (Elige la mejor
respuesta.)

A. 100 filas.

B. 4 filas.

C. 25 filas.

D. Ninguna de las anteriores.

También podría gustarte