0% encontró este documento útil (0 votos)
188 vistas16 páginas

DP 4

Oracle Academy

Cargado por

Brian Parra
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
188 vistas16 páginas

DP 4

Oracle Academy

Cargado por

Brian Parra
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 16

PRESENTACION

PARTICIPANTES
GRUPO #1

BRIAN GABRIEL #28


LAURA GARCIA #18
LUIS DANIEL #2
KARLA DE LA ROSA #12
GUILLERMO AQUINO #1
CRISTAL JAMIL #5
Programación de Bases de Datos con SQL
4.1: Manipulación de Mayúsculas/Minúsculas y de
Caracteres Actividades de Práctica

Objetivos
 Seleccionar y aplicar funciones de una sola fila que realicen conversión de
mayúsculas/minúsculas y/o la manipulación de caracteres
 Seleccionar y aplicar las funciones de manipulación de mayúsculas/minúsculas de caracteres
LOWER, UPPER e INTCAP en una consulta SQL
 Seleccionar y aplicar las funciones de manipulación de caracteres CONCAT, SUBSTR,
LENGTH, INSTR, LPAD, RPAD, TRIM y REPLACE en una consulta SQL
 Escribir consultas flexibles usando variables de sustitución

Terminología
Identifique el término para cada una de las siguientes definiciones.

Tabla DUAL Tabla ficticia que se utiliza para ver los resultados de
las funciones y los cálculos

FORMATO Organización de los datos para su almacenamiento


o presentación

INITCAP Convierte los valores de carácter alfabético a mayúsculas para


la primera letra de cada palabra; el resto permanece en
minúsculas
LENGTH Funciones que aceptan datos de caracteres como entrada y que
pueden devolver valores numéricos y de carácter
TRIM Elimina todos los caracteres especificados, ya sea del principio
o del final de una cadena
Expresión Símbolo que representa una cantidad o una relación
entre cantidades
Funciones de carácter Funciones que operan solo en filas únicas y que devuelven un
resultado por fila
UPPER Convierte caracteres alfabéticos en mayúsculas

ENTRADA Datos no procesados introducidos en la computadora

CONCAT Concatena el primer valor de carácter con el segundo valor


de carácter; equivalente al operador de concatenación (||)
PROCESO Datos que se procesan en información

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.
LOWER Convierte valores de carácter alfabético en minúsculas

LPAD Rellena la parte izquierda de un carácter, dando lugar a un


valor justificado a la derecha

SUBSTR Devuelve caracteres específicos de un valor de carácter


empezando por una posición de carácter específica hasta
una
longitud de posiciones de caracteres determinada
REPLACE Sustituye una secuencia de caracteres de una cadena por otro
juego de caracteres
INSTR Devuelve la posición numérica de una cadena con nombre.

Devuelve el número de caracteres en la expresión

RPAD Rellena la parte derecha de un carácter, dando lugar a un valor


justificado a la izquierda

Inténtelo/Resuélvalo

1. Mediante los tres palabras separadas “Oracle”, “Internet” y “Academy”, utilice un comando para
producir la siguiente salida:

The Best Class


Oracle Internet Academy

SELECT CONCAT (CONCAT(‘Oracle’,


‘Internet’), ‘ACADEMY)AS “The Best
Academy”
FROM DUAL;

2. Utilice la cadena “Oracle Internet Academy” para producir la siguiente salida:

The Net
net

SELECT SUBSTR(“Oracle Internet


Academy”, 13, 3)AS “The Net”
FROM DUAL;

3. ¿Qué longitud tiene la cadena “Oracle Internet Academy”?

SELECT LENGTH(‘Oracle Internet Academy’)


FROM DUAL;[26 CARACTERES]

4. ¿Cuál es la posición de la “I” en “Oracle Internet Academy”?

SELECT INSTR(“Oracle Internet


Academy”, “I”)
FROM DUAL;

5. A partir de la cadena “Oracle Internet Academy”, rellene la cadena para crear


****Oracle****Internet****Academy****

SELECT REPLACE(RPAD(LPAD('Oracle Internet


Academy', 27, '*'),31,'*'),' ', '****') AS
"Resultado"FROM DUAL;

6. A partir de la cadena “Oracle Internet Academy”, rellene la cadena para producir:


Oracle$$$Internet$$$Academy

SELECT REPLACE(‘Oracle Internet


Academy’, ‘‘, ‘$$$’)
FROM DUA

7. Utilizando la cadena ‘Oracle Internet Academy’, produzca la salida mostrada mediante la función
REPLACE.

The Best Class


Oracle 2013-2014 Academy

SELECT REPLACE(‘Oracle Internet


Academy’) AS ‘The Best Class’
FROM DUAL;

8. Cree una lista con la fecha del pedido y el total del pedido de la tabla F_ORDERS de Global Fast
Foods. Asigne al total del pedido el nombre TOTAL y rellene los espacios vacíos a la izquierda
del total del pedido con $.

SELECT order_date,
LPAD(order_total,7,’$’)AS “TOTAL”
FROM f_orders;

9. Escriba una consulta que genere una columna denominada “ADDRESS” con la siguiente
información: ZOE TWEE 1009 OLIVER Avenue BOSTON, MA 12889. Utilice la tabla
F_CUSTOMERS de Global Fast Foods.

SELECT RPAD(first_name, 4, ‘’|| RPAD


(last_name,5,‘’)|| RPAD(address, 19,
‘’)|| RPAD(city, 3, ‘’)|| zip AS “ADDRESS”
FROM F_CUSTOMERS
WHERE first_name LIKE ‘Z%’;

10. Escriba una consulta que devuelva el primer carácter del primer nombre concatenado a
last_name, el salario y el identificador de departamento para los empleados que trabajan en el
departamento 20. Proporcione a la primera expresión el alias Name. Utilice la tabla
EMPLOYEES. Cambie la consulta para utilizar una variable de sustitución en lugar del valor
codificado 20 para el ID de departamento. Ejecute la consulta para el departamento 30 y 50 sin
cambiar la cláusula where original en la sentencia.

SELECT SUBSTR(first_name, 1,
1)||last_name AS “Name”, salary,
department_id
FROM employees
WHERE department_id =
enter_dept_id;

11. Mediante una variable de sustitución para el nombre de departamento, escriba una consulta que
muestre el identificador de departamento, el nombre de departamento y el identificador de la
ubicación de los departamentos situados en the_department_of_your_choice. Utilice la tabla
DEPARTMENTS.
Nota: Todas las variables de sustitución de OAE se tratan como cadenas de caracteres, por lo
que no son necesarias las comillas (‘ ‘).

SELECT department_id,
department_name, location_id
FROM DEPARTMENTS WHERE department_name =
the_department_of_your_choice;

12. Escriba una consulta que devuelva todos los datos de los empleados según el mes de su fecha
de contratación. Utilice la tabla EMPLOYEES. La sentencia debe devolver la parte del mes de la
fecha de contratación, la cual se comparará a continuación con un mes abreviado (JAN, FEB,
MAR) que se ha transferido a la consulta a través de una variable de sustitución.

SELECT *FROM employees


WHERE SUBSTR(hire_date,4,3)=
enter_hire_month;
Programación de Bases de Datos con SQL
4-2: Funciones Numéricas
Actividades de Práctica

Objetivos
 Seleccionar y aplicar las funciones numéricas de una sola fila ROUND, TRUNC y MOD en una
consulta SQL
 Distinguir entre los resultados obtenidos al aplicar TRUNC a un valor numérico y aplicar
ROUND a un valor numérico
 Definir las consecuencias para el negocio de aplicar los valores numéricos TRUNC
y ROUND

Terminología
Identifique el término para cada una de las siguientes definiciones.

TRUNC Se utiliza para terminar la columna, la expresión o el valor en


un número especificado de posiciones decimales.
Funciones de numero Estas funciones aceptan entradas numéricas y devuelven
valores numéricos.

MOD Devuelve el resto de una división.

ROUND Redondea la columna, la expresión o el valor a un


número definido de decimales.

Inténtelo/Resuélvalo

1. Muestre last_name y el salario de los empleados de la base de datos Oracle para los
employee_ids entre 100 y 102. Incluya una tercera columna que divida cada salario
por 1,55 y redondee el resultado a dos decimales.

SELECT last_name, salary,


ROUND(salary / 1.55, 2)
FROM employees
WHERE employee_id
BETWEEN 100 AND 102

2. Muestre last_name y el salario de los empleados que trabajan en el departamento 80. Conceda a
cada uno de ellos un aumento de 5,333% y trunque el resultado a dos posiciones decimales.

SELECT last_name, TRUNC(((salary *


5.333)/100) + salary) AS
“SALARY_PROMOTION” FROM employees
WHERE department_id = 80
3. Utilice una función numérica MOD para determinar si 38873 es un número par o un
número impar.

SELECT MOD(38873, 2) FROM DUAL

4. Utilice la tabla DUAL para procesar los números siguientes:


845,553: redondear a un decimal
30695,348: redondear a dos decimales
30695,348: redondear a -2 decimales
2,3454: truncar 454 desde el decimal

SELECT ROUND(845.553, 1),


ROUND(30695.348, 2),
ROUND(30695.348, -2), TRUNC(2.3454)
FROM DUAL

5. Divida cada salario de empleado por 3. Muestre solo los apellidos y salarios de los empleados
que ganan un salario que es un múltiplo de 3.

SELECT last_name, salary / 3 AS


“SALARY” FROM employees WHERE
MOD(salary, 3) = 0

6. Divida 34 por 8. Muestre solo el resto de la división. Asigna a la salida el


nombre EXAMPLE.

SELECT MOD(34,8) "EXAMPLE" FROM


DUAL

7. ¿Cómo desearía que fuera su cheque de pago: redondeado o truncado? ¿Qué ocurre si su
cheque de pago calculado para la semana es por 565,784 $, pero se da cuenta de que se ha
emitido por 565,78 $? La pérdida de 0,004 centavos supondría poca diferencia para usted. Sin
embargo, ¿qué ocurre si esto le pasa a mil personas, 100.000 personas o un millón de
personas?
¿Habría una gran diferencia? ¿Cuánta diferencia?

SELECT (0.004) AS "perdida por persona


", (0.0041000) AS "perdida por mil
personas" ,(0.004100000) AS "perdida
por cien mil personas" , (0.004*1000000)
AS "perdida por millon de personas"
FROM dual;
Programación de Bases de Datos con SQL
4-3: Funciones de Fecha
Actividades de Práctica

Objetivos
 Seleccionar y aplicar las funciones de una sola fila MONTHS_BETWEEN, ADD_MONTHS,
NEXT_DAY, LAST_DAY, ROUND y TRUNC que funcionan en los datos de fecha
 Explicar cómo transforman las funciones de fecha las fechas de Oracle en datos de fecha o en
valores numéricos
 Mostrar un uso adecuado de los operadores aritméticos con fechas
 Mostrar el uso de SYSDATE y las funciones de fecha
 Establecer las consecuencias de que los negocios de todo el mundo puedan manipular
fácilmente los datos almacenados en formato de fecha

Terminología
Identifique el término para cada una de las siguientes definiciones.

SYSDATE Una función de fecha que devuelve la fecha y hora actuales


del servidor de base de datos.

ADD_MONTHS Agregar meses de calendario a fecha

LAST_DAY Último día del mes

NEXT_DAY Día posterior a la fecha especificada

MONTHS_BETWEEN Número de meses entre dos fechas de vencimiento

Inténtelo/Resuélvalo

1. Para DJs on Demand, muestre el número de meses entre event_date de la boda de Vigil y la
fecha actual. Redondee al mes más cercano.

SELECT name,event_date,
round(months_between(sysdate,
event_date)) as "meses"
from d_events
where name='Vigil wedding';
2. Muestre los días entre el inicio de las vacaciones escolares del verano pasado y el día que
comienza la escuela este año. Suponga que cada mes tiene 30,5 días. Asigne a la salida el
nombre “Days”.

Select round(months_between('9-
Jul-2019','26-Aug-2019')*30.5,0)
as "Days"
from dual;

3. Muestre los días entre el 1 de enero y el 31 diciembre.

Select to_date('1-Jan-2020','dd-
Mon-yyyy')-to_date('31-Dec-
2020','dd-Mon-yyyy') as "dias"
from dual;
4. Mediante una sentencia, redondee la fecha de hoy al mes y al año más cercanos y trúnquela al
mes y al año más cercanos. Utilice un alias para cada columna.

Select round(sysdate,'Day') as "dia


round", round(sysdate,'Year') as "año
round",trunc(sysdate,'Month') as "mes
trunc", trunc(sysdate,'Year') as "año
trunc" from dual;

5. ¿Cuál es el último día del mes de junio de 2005? Utilice un alias para la salida.

Select last_day('01-Jun-2005') as "Fin del


mes" from dual;

6. Muestre el número de años entre la fecha de nacimiento del empleado de Global Fast Foods Bob
Miller y la fecha actual. Redondee al año más cercano.

Select last_name,
round(months_between(sysdate,birthdat
e)/12) as"numero de años" from f_staffs
where first_name='Bob';

7. Su próxima cita con el dentista es en seis meses a partir de hoy. ¿Qué día irá al dentista? Asigne
a la salida el nombre “Appointment”.

Select add_months(sysdate,6) as
"Appointment" from dual;

8. El profesor le ha avisado de que dispone hasta el último día de este mes para entregar el informe
de investigación. ¿Qué día es? Asigne a la salida el nombre “Deadline”.

Select last_day(sysdate) as "dia de


entrega" from dual;

9. ¿Cuántos meses hay entre su día de cumpleaños de este año y el 1 de enero del
próximo año?

Select to_date('28-Mar-2020','dd-Mon-
yyyy')-to_date('01-Jan-2020','dd-Mon-
yyyy') as "dias"from dual;

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
10. ¿Qué fecha es el viernes siguiente a su cumpleaños de este año? Asigne a la salida el nombre
“First Friday”.

Select next_day('28-Mar-2020','Friday')
as "First Friday" from dual;

11. Asigne un nombre a una función de fecha que devuelva un número.


months_between

12. Asigne un nombre a una función de fecha que devuelva una fecha.
add_months

13. Proporcione un ejemplo de por qué es importante que las compañías puedan manipular los datos
de fecha.

Porque sirve para llevar un mejor control de todos los datos de las compañías y evita
errores relacionados con fechas.

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
Ejercicios de Ampliación

1. Utilizando DUAL, escriba una sentencia que convierta 86.678 en 86.68.


Select round(86.678,2) from dual;

2. Escriba una sentencia que muestre los títulos de CD de DJs on Demand para cd_numbers 90 y
91 en mayúsculas en una columna con la cabecera “DJs on Demand Collections”.

Select title from d_cds where cd_number in(90,91);

3. Escriba una sentencia que cree los nombres de usuario de computadora de los partners de DJs
on Demand. Los nombres de usuario estarán formados por las letras del apellido en minúsculas +
la primera letra del nombre en mayúsculas. Asigne a la columna el título “User Passwords”. Por
ejemplo, Mary Smythers sería smythersM.

Select last_name || upper(substr(first_name,1,1)) as “User


Passwords” from d_partners;

4. Escriba una sentencia que convierta “It’s a small world” en “HELLO WORLD”.

Select replace('It ́s a small word', 'It ́s a small', 'hello') as


"reemplazo" from dual;

5. Escriba una sentencia que elimine “fiddle” de “fiddledeedee” y “dum” de “fiddledeedum”. Muestre
el resultado “fiddledeedeedee” en una columna con la cabecera “Nonsense”.

Select replace('fiddledeedum','dum') || replace


('fiddledeedee','fiddle') as "Nonsense" from dual;

6. Sustituya cada “i” de Mississippi por “$”.

Select replace('Mississippi','i','$') as "sustitucion" from


dual;

7. Utilizando DUAL, convierta 5332,342 en 5300.

Select round(5332.342,-2) from dual;

8. Utilizando DUAL, convierta 3,14159 en 3,14.


Select round(3.14159,2) from dual;
9. Utilizando DUAL, convierta 73,892 en 73,8.
Select trunc(73.892,1) from dual;

10. ¿Cuál es el próximo viernes en seis meses a partir de ahora? Etiquete la columna
como “Future”.

Select next_day(add_months(sysdate,6),'Friday') as
"Future" from dual;

11. ¿Cuál será la fecha dentro de 10 años a partir de ahora? Etiquete la columna
como “Future”.
Select add_months(sysdate,10*12) as "Future" from dual;

12. Los años bisiestos se producen cada cuatro años. Recuerde que el 2004 fue un año bisiesto.
Ahora cree una función que muestre la fecha del siguiente año bisiesto como
29-Feb-2008. Etiquete la columna como “Future”.
Select to_char(last_day(to_date('01-Feb-2008','dd-Mon-
yyyy')), 'dd-Mon-yyyy') as future from dual;

13. Escriba una sentencia que busque cualquier tema de DJs on Demand que tenga una “ie” en su
nombre.
Select title from d_cds where title like '%ie%';

14. Escriba una sentencia que solo devuelva los CD de DJs on Demand de años mayores que 2000,
pero menores que 2003. Muestre el título y el año.
Select title,year from d_cds where year>2000 and
year<2003;

15. Escriba una sentencia que devuelva el ID de empleado de los empleados de la base de datos
Oracle y sus fechas de inicio de contratación entre el 1 de enero de 1997 y la fecha actual.
Muestre el resultado ordenado del contratado más recientemente al más antiguo.

Select employee_id, hire_date from employees where


hire_date between '01-Jan-1997' and sysdateorder by
hire_date desc;
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

También podría gustarte