DP 19 3 Practice Esp

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 15

Programación de Bases de Datos con SQL

19-3: Revisión del Examen Final


Actividades de Práctica

Objetivos
• Revisar los puntos clave sobre la manipulación de mayúsculas/minúsculas y caracteres
• Revisar las funciones generales y de número, fecha, conversión
• Revisar las expresiones condicionales
• Revisar el producto cartesiano y las operaciones de unión
• Revisar las uniones no igualitarias, uniones externas, autouniones, uniones cruzadas, uniones
naturales y cláusulas de unión
• Revisar las funciones de grupo, la sintaxis group by y las cláusulas having
• Escribir subconsultas de una y varias filas
• Revisar las subconsultas pareadas y no pareadas
• Revisar las subconsultas correlacionadas
• Revisar las sentencias DML insert, update, delete, merge y las inserciones en varias tablas
• Revisar las sentencias DDL CREATE, ALTER, RENAME, TRUNCATE, FLASHBACK TABLE,
DROP y FLASHBACK QUERY
• Revisar las sentencias DCL CREATE y los privilegios de objetos REVOKE

Inténtelo/Resuélvalo

1. La jefa de Global Fast Foods necesita actualizar la lista de clientes. Desea encontrar todos los
códigos postales que tengan menos de 10 dígitos para identificar aquellos códigos que no tienen
el nuevo formato de sufijo 87392-8723. Cree una consulta para identificar a esos clientes.

2. En la siguiente lista de funciones, marque con una N las que se pueden utilizar con números,
marque con una C las que pueden operar en datos de caracteres y marque con una D las que se
pueden utilizar con fechas.
a. LPAD
b. ROUND
c. TRUNC
d. LENGTH
e. LAST_DAY
f. INSTR
g. CONCAT

3. Debe mostrar auth_expense_amt para cada partner de DJs on Demand. Para aquellos partners
que no tiene una cuenta de gastos, la salida debe mostrar “Not Approved”.

Copyright © 2020 Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios.
4. Jason y Jamie han intentado ejecutar un informe que muestre los miembros de la plantilla de
Global Fast Foods que no tienen una tarifa de horas extra. Han escrito la siguiente consulta SQL
y han recibido un error de informe: ORA-01722: invalid number.

SELECT first_name, last_name, NVL(overtime_rate, 'no overtime') As "Payrate"


FROM f_staffs;

¿Qué parte de esta consulta es incorrecta y cómo se puede corregir?

5. El director general de Global Fast Foods desea enviar una tarjeta de cumpleaños a todos los
empleados. Le ha pedido a usted que le envíe un recordatorio en el mes de nacimiento del
empleado, de manera que se pueda enviar la tarjeta con el cheque de pago de ese mes. Prepare
una consulta para generar la tabla siguiente.

FIRST_NAME LAST_NAME BIRTHDATE SEND CARD


Sue Doe 01-JUL-1980 July 2005
Bob Miller 19-MAR-1979 March 2005
Monique Tuttle 30-MAR-1969 March 2005

6. Marque cada afirmación con una V si es verdadera o con una F si es falsa.

a. TO_CHAR es necesario para convertir la fecha '03-Jun-2004' a June 3, 2004.


b. TO_NUMBER convertirá '23-Nov-2002' para su uso con ADD_MONTHS.
c. TO_DATE convertirá SYSDATE a la fecha de hoy.
d. TO_NUMBER('101', '$99999') convertirá 101 en un número.
e. TO_CHAR(salary, '$9999.99') convertirá el número a un formato de caracteres
f. TO_NUM(varchar2 column) convertirá los datos de caracteres en un número.
g. TO_CHAR(SYSDATE, 'Month fmdd, yyyy') dará formato a la fecha.

7. A los empleados de la base de datos Oracle que han trabajado más de 10 años se les concederá
una semana adicional de vacaciones. Cree un informe que muestre el nombre, el apellido y los
años que han trabajado. Redondee el resultado a una posición decimal.

8. El jefe de DJs on Demand necesita que cambie el código postal de ID 105, los locales de Nueva
York. Desea mostrar el código postal antiguo en una columna y el nuevo en otra columna. El
nuevo código postal es el mismo que el antiguo, excepto que se debe agregar -2345 al final. La
salida debe aparecer como se muestra en la tabla.

OLD ZIP NEW ZIP


11220 11220-2345

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

2
9. Cree una consulta con una sentencia SELECT que devuelva la fecha de hoy. Asigne un alias a
cada columna.
a. Redondeada al año más cercano
b. Redondeada al mes más cercano
c. Truncada al año más cercano
d. Truncada al mes más cercano

10. Necesita averiguar cuántos días han transcurrido desde el inicio de los menús promocionales de
Global Fast Foods. Redondee el resultado al día más cercano.

11. El departamento de recursos humanos (base de datos Oracle) ha decidido que, para sus
objetivos, el cargo de todos los empleados estará formado por las cinco primeras letras del cargo
seguidas de un asterisco. Por ejemplo, director de contabilidad se cambiará a direc* Cree una
consulta para realizar esta solicitud.

12. ¿Cuál es el orden de las operaciones en la pregunta 11?

13. Escriba una consulta que devuelva todas las filas y columnas de la tabla employees, pero haga
que department_id sea una variable de sustitución y, a continuación, ejecute la consulta con dos
o tres department_id diferentes para probarla.

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

3
Parte 2

1. Utilice la tabla employees de la base de datos Oracle. Escriba y ejecute una consulta para cada
término.
LOWER
UPPER
INITCAP
CONCAT
SUBSTR
LENGTH
INSTR
LPAD
RPAD
TRIM
REPLACE
ROUND
TRUNC
MOD
MONTHS_BETWEEN
ADD_MONTHS
NEXT_DAY
LAST_DAY
SYSDATE

2. Cree dos consultas diferentes para generar el número y el título de CD como “94CARPE DIEM”.
Utilice la tabla d_cds de la base de datos DJs on Demand.

3. Marque las siguientes afirmaciones como Verdadera o Falsa.


_____a. LOWER convierte los números a minúsculas.
_____b. Utilice RPAD para mover los números a la derecha y colocar un * a la izquierda.
_____c. TRIM se puede utilizar para recortar uno o más caracteres de una cadena.
_____d. LENGTH devuelve un número.
_____e. SUBSTR se utiliza para sustituir una cadena por otra.
_____f. CONCAT está limitado a utilizar dos parámetros.
_____g. TRUNC no devolverá ninguna posición decimal si se omite un valor decimal.

4. Cree una consulta para mostrar el costo de los eventos de DJs on Demand con el
formato $0000.00

5. En la tabla f_staffs de la base de datos Global Fast Foods, cambie el identificador de los
miembros del personal cuyos ID tengan un único dígito a dos dígitos agregando un asterisco *
delante del número. Por ejemplo, cambie el ID 9 a *9.

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

4
6. Como administrador de la base de datos, le han pedido que almacene los registros históricos de
empleados en la base de datos actual. Los registros tienen fechas de rescisión de 1990 a 1999.
Escriba una consulta utilizando DUAL para mostrar cómo puede almacenar 15-Dec-1995.

7. Utilizando DUAL, deberá dar formato a 19-Jun-2004 para que aparezca como: 19th of june two
thousand four

8. Cree una consulta que devuelva solo la última palabra de “Oracle Academy”.

9. Lance y Arnie han creado la siguiente consulta SQL, pero no ha devuelto ningún resultado. ¿Cuál
es el problema en esta consulta?

SELECT loc_type
FROM d_venues
WHERE loc_type LIKE 'National Park'
AND ID = 200;

10. ¿Qué tipo de función utilizaría en cada caso?


D = Función de fecha
N = Función numérica
C = Conversión/Funciones de carácter
G = Función general
CE = Expresión conditional

_____ a. Para convertir varchar2 en un dato de número


_____ b. Para dar a una fecha un formato distinto del formato por defecto
_____ c. Para convertir una fecha como June 19, 2000 en un formato por defecto
_____ d. Para dar formato a un número y que aparezca como moneda
_____ e. Para sustituir un valor de una tabla por uno nulo
_____ f. Para crear una sentencia IF-THEN-ELSE
_____ g. Para buscar la primera expresión no nula en una lista de expresiones
_____ h. Para sustituir una sección de una cadena por otra cadena
_____ i. Para dar formato a una fecha del siglo 20
_____ j. Para presentar la salida en mayúsculas
_____ k. Para buscar la posición numérica de un carácter en una cadena
_____ l. Para buscar el último día del mes

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

5
Parte 3

1. Un/Una ________________ es cuando las filas de las tablas se combinen entre sí para producir
filas nuevas. El número de filas es equivalente al producto del número de filas en cada tabla.

2. Una _________________ se utiliza cuando es necesario consultar una tabla que tiene una
relación consigo misma.

3. _________________ conserva las filas no coincidentes de una o de ambas tablas, devolviendo


las filas que son coincidentes y no coincidentes de una o de ambas tablas.

4. En una unión externa, un signo más (+) se coloca en el lado de la unión donde
_________________ la información.

5. Una __________________ se utiliza cuando una columna de una tabla no se corresponde


directamente con una columna de otra tabla.

6. La condición de unión se coloca siempre en la cláusula _______________ de la sentencia


SELECT.

7. Un _______________ se utiliza para preceder el nombre de columna a fin de clarificar qué tabla y
columna participan en la unión.

8. Los alias de tabla se crean en la cláusula ________________ de la sentencia SELECT.

9. En una unión externa completa, una fila que no contiene datos sí/no aparecerá en el juego de
resultados si la fila cumple la condición de unión.

10. El alias de tabla no puede superar los _________ caracteres de longitud.

11. Identifique la sintaxis de Oracle que indica una unión externa ___________.

12. Si una condición de unión se escribe: WHERE e.client_number = c.client_number, ¿qué tipo de
unión sería si quisiéramos toda la información de la tabla e incluso aunque a la tabla c le falten
datos? ______

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

6
13. Las uniones que se basan en relaciones jerárquicas, como jefe y empleado,
se denominan __________.

14. ¿Cuántas condiciones de unión se requieren para unir tres tablas? ___

15. ¿Qué significa el término “sintaxis de propiedad”?

16. ¿Qué tipo de condición de unión es la mejor cuando existen dos columnas con el mismo nombre,
pero distintos tipos de dato en dos tablas diferentes?

17. ¿Qué tipo de uniones se basa en todas las columnas de dos tablas que tienen el
mismo nombre?

18. Otro nombre para una unión cruzada es ___________.

19. Al especificar una unión, es necesario identificar el qué, el dónde y el cómo. Empareje estos
términos con las siguientes palabras de la sintaxis SQL: FROM, WHERE, SELECT.

20. Para cada condición de unión que aparece en la lista, marque con una V las que pueden incluir
un alias en la sintaxis:
___ unión cruzada
___ unión igualitaria
___ unión no igualitaria
___ unión natural
___ unión externa completa
___ unión externa izquierda
___ cláusula USING

21. ¿Cuáles son los dos tipos de condiciones de unión que no pueden utilizar un alias?

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

7
22. ¿De qué tipo de unión es un ejemplo la consulta siguiente?
SELECT last_name, first_name
FROM f_staffs, f_orders;

LAST_NAME SID MID


Abernathy 349 Null
Avery 342 Null
Barnaby 1420 349
Chang 555 349
Dixon 554 349
Evans 873 342
Franco 1933 342
Gallaway 943 349
STUDENTS

COURSES CID
Oracle_Internet_Academy_DM 101
Oracle_Internet_Academy_Java 102
Oracle_Internet_Academy_Java 103
COURSES

SID CID
1420 101
555 101
554 101
873 102
342 103
349 103
943 103
1933 103
ENROLLED

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

8
23. Utilice las tres tablas anteriores para responder a las siguientes preguntas:

a. ¿Qué tipo de unión debería utilizar para unir las tres tablas? __________________ Escriba la
sintaxis necesaria para producir el resultado deseado.

b. Nombre dos tablas que se podrían utilizar para recuperar los datos de una
unión natural.
Escriba la sintaxis necesaria para producir el resultado deseado.

c. ¿Qué tipo de unión debería utilizar para devolver solo los alumnos que
tengan tutores?
Escriba la sintaxis necesaria para producir el resultado deseado.

d. ¿Qué tipo de unión debería utilizar para devolver todos los alumnos con independencia de
que tengan o no un tutor?
Escriba la sintaxis necesaria para producir el resultado deseado.

24. Escriba una consulta jerárquica para mostrar el diagrama de organización de la tabla employees.
Asegúrese de que la consulta comienza por el empleado que no tiene jefe. Haga que la consulta
devuelva el nombre y el apellido del empleado junto con el apellido de su jefe.

25. Escriba una consulta que muestre department_id, job_id y el salario total de cada job_id dentro
de un departamento. Haga que la consulta devuelva los subtotales del salario por department_id
y una suma total de todos los salarios de toda la compañía. Utilice la tabla EMPLOYEES para
esta consulta.

26. Escriba una consulta que combine las siguientes columnas: first_name y last_name del
empleado, department_id, job_id y salary de la tabla employees, employee_id, start_date,
end_date y job_id de job_history y department_name y location_id de la tabla departments. Las
consultas deben devolver una sola salida.

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

9
Parte 4

1. Cree copias de las siguientes tablas de base de datos Oracle y asígneles un nombre como se
especifica a continuación:
• employees se copia como o_employees
• departments se copia como o_departments
• jobs se copia como o_jobs

2. Como DBA de Oracle, se le ha pedido que actualice la base de datos con nueva información.

El mes pasado, O creó un nuevo departamento en Seattle denominado Human Resources. A


este departamento se le asignó el identificador 210. Los empleados de este departamento tienen
el cargo Human Resources Manager y el ID de cargo HR_MAN.
El salario de todos los empleados nuevos de este departamento abarca desde un mínimo de
4500 $ a un máximo de 5500 $.

Agregue el cargo Human Resources a la tabla o_jobs.

EMPLOYEE_ID FIRST_NAME LAST_NAME


210 Ramon Sanchez
211 Tai Sugita
212 Alina Arcos

3. En la tabla se muestran tres nuevos empleados contratados para este departamento. Agréguelos
a la tabla o_employees.

Cada empleado necesitará una dirección de correo electrónico creada con la primera letra del
nombre del empleado combinada con su apellido (Bob Smith sería BSMITH). Utilice la fecha
actual como la fecha de contratación.

4. Agregue Human Resources a la tabla o_departments.

5. Es necesario realizar varios cambios en las tablas o_employees, o_departments y o_jobs.


• Ramon Sanchez tiene un nuevo número de teléfono:
360-509-7132.
• La ubicación del departamento Human Resources de Seattle es 1700.
• Se requiere actualizar los ID de departamento de Ramon Sanchez, Tai Sugita y Alina a 210 si
no se ha realizado aún.
• El salario de Ramon es de 5000 $; Tai gana 5100 $.
• Suprima Alina arcos, quien ha decidido volver a la universidad para terminar el grado en
Sociología.

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

10
Parte 5

1. ¿Cuál es el propósito de las restricciones de una base de datos?

2. ¿Por qué decidiría crear una restricción CHECK? Proporcione un ejemplo.

3. ¿Cómo puede averiguar qué restricciones se han agregado a una columna?

4. ¿Cuándo se puede definir una restricción para una tabla?

5. ¿Cuál es la ventaja de asignar un nombre a sus propias restricciones?

6. ¿Por qué es la integridad referencial una preocupación para el DBA?

7. ¿Por qué elegiría definir una restricción a nivel de columna en lugar de a nivel de tabla?

8. ¿Para qué se crearía una restricción UNIQUE?

9. ¿Puede haber más de una columna no nula cuando se utiliza una restricción UNIQUE? ¿Por
qué?

10. Proporcione un ejemplo de una clave única compuesta.

11. Solo se puede crear __ clave primaria para cada tabla.

12. ¿Qué aplica una clave primaria?

13. ¿De qué otra manera se denomina una restricción FOREIGN KEY?

14. ¿Qué lleva a cabo ON DELETE CASCADE?

15. ¿Cuál es la función de CASCADE en la sintaxis ALTER CONSTRAINT?

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

11
16. Cree una copia de la tabla employees y denomínela sus_iniciales_emp. Agregue una columna a
la nueva tabla denominada department_name y convierta esta columna en el mismo tipo de dato
y longitud que la columna department_name de la tabla departments. Escriba una sentencia de
actualización correlacionada para actualizar todas las columnas department_name de su nueva
tabla para que tengan los mismos valores que la columna department_name de la propia tabla
departments.

17. Borre la tabla o_employees. Investigue dónde se encuentra. Intente realizar una selección en la
tabla borrada. Ahora intente realizar una selección en la tabla borrada utilizando su nombre de la
papelera. Restaure la tabla.

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

12
Parte 6

1. ¿Cuáles de las sentencias que se muestran a continuación son verdaderas sobre la siguiente
secuencia? La secuencia se ha utilizado para generar números para la columna cd_numbers de
la tabla D_CDS de DJs on Demand.

CREATE SEQUENCE cd_numbers_sq


INCREMENT BY 15
START WITH 105
MAXVALUE 999
NOMINVALUE
CYCLE
NOCACHE

____ a. Esta secuencia no generará el valor 165.


____ b. Esta secuencia no generará el valor 999.
____ c. Esta secuencia sería apropiada para valores PRIMARY KEY.
____ d. Si se suprime la tabla D_CDS, también se suprimirá la secuencia.
____ e. Si el sistema falla, los valores de secuencia se perderán.
____ f. FROM USER_OBJECTS documenta esta secuencia en el diccionario de datos.
____ g. El valor START WITH se podría cambiar mediante ALTER SEQUENCE.

2. En la sentencia CREATE TABLE que se muestra a continuación, rodee con un círculo la letra de
las líneas que creará automáticamente un índice.

a. CREATE TABLE employees(


b. employee_id NUMBER(6),
c. last_name VARCHAR2(25) NOT NULL,
d. email VARCHAR2(25) CONSTRAINT emp_email_uk UNIQUE,
e. salary NUMBER(8,2),
f. commission_pct NUMBER(2,2),
g. hire_date DATE NOT NULL,
h. CONSTRAINT employee_id_pk PRIMARY KEY(employee_id),
i. CONSTRAINT emp_dept_fk FOREIGN KEY(department_id)REFERENCES
j. departments(department_id)

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

13
3. ¿Qué vista del diccionario de datos contiene las secuencias creadas por un esquema?
a. SEQUENCE_VIEW
b. USER_SEQUENCES
c. SEQUENCE_NAMES
d. USER_VIEWS

4. ¿Cuál es la sintaxis correcta para cambiar emp_email_index en la columna del correo electrónico
de la tabla employees?
a. CREATE INDEX emp_email_index ON employees (email);
b. ALTER INDEX emp_mail_index FROM employees(email);
c. CREATE AND REPLACE INDEX emp_email_index ON employees, COLUMN = email;
d. ADD INDEX emp_email_index INTO employees (email);
e. Ninguna de las anteriores

5. ¿Qué vista del diccionario de datos se utiliza para ver el nombre de tabla, el nombre de índice y el
nombre de columna en los que está basado el índice?
a. USER_TABLE_INDEXES
b. USER_COLUMNS
c. USER_IND_COLUMNS
d. ALL_INDEXES

6. Si la opción PUBLIC no está incluida en la sintaxis CREATE SYNONYM, ¿cuál de las siguientes
afirmaciones es verdadera?
a. Los usuarios no pueden alargar los nombres de objeto.
b. El DBA no tiene acceso al sinónimo.
c. El sinónimo no está accesible para todos los usuarios.
d. Todos los nombres de objeto deben estar cualificados mediante PUBLIC.

7. ¿Cuáles son los tres últimos números creados por la secuencia?

CREATE SEQUENCE sample_seq


INCREMENT BY 3
START WITH 6
MAXVALUE 14
NOMINVALUE
CYCLE
NOCACHE

a. 3, 6, 9
b. 6, 9, 12
c. 9, 12, 15
d. 9, 12, 14

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

14
8. ¿Cuál de los siguientes es un buen motivo para crear un índice?
a. Una columna tiene un gran número de valores nulos.
b. Una columna tiene una amplia variedad de valores.
c. Se espera que la mayoría de las consultas devuelvan más del 5% de las filas.
d. Una tabla se actualiza con frecuencia.

9. ¿Cuál de las siguientes restricciones se puede crear a nivel de tabla?


a. NOT NULL
b. FOREIGN KEY
c. PRIMARY KEY
d. UNIQUE COMPOSITE KEY

10. ¿Cuál de las siguientes no puede contener una función de una sola fila?
a. SELECT
b. FROM
c. WHERE
d. ORDER BY

Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios

15

También podría gustarte