Funciones de una Fila.pptx
Transcript of Funciones de una Fila.pptx
-
8/18/2019 Funciones de una Fila.pptx
1/41
Unidad de Aprendizaje N°1
Construyendo Consultas SQL
Aprendizaje Esperado :Construir sentencias de recuperación y manipulación, de
una base de datos relacional, según sintais, restricciones
del lenguaje, re!uisitos de la lógica negocios, re!uisitos dein"ormación y sistema de gestión de base de datos#
ELECT employee_id,TRUNC(salary/1000),
TO_CHAR(ROUND(salary ( U! TR(salary,1,1)/100)),
"#$$$,$$$"),
ROUND(salary N%L(&ommissio'_p&,0))
RO* employees+
-
8/18/2019 Funciones de una Fila.pptx
2/41
Objetivos de la Clase
• Describir las características generales de las Funciones SQL.
• Describir las características de las Funciones SQL que operan con una fila.
• Describir los tipos de Funciones que operan con una sola fila: de
caracteres nu!"ricas de fec#as de conversi$n % generales.
• &sar Funciones de Caracteres en sentencias SQL.• &sar Funciones de '(!eros en sentencias SQL.
• &sar Funciones de Conversi$n en sentencias SQL.
• &sar Funciones de )enerales en sentencias SQL.
-
8/18/2019 Funciones de una Fila.pptx
3/41
RE ULTADO
UNC-N
Funciones SQL
Reali.a 'a a&&i'
Arme'o 1
Arme'o 2
Arme'o N
A&&i'
-
8/18/2019 Funciones de una Fila.pptx
4/41
Funciones SQL
UNCONE
UNCONE DE
UNA LA
UNCONE DE
*3LT4LE
LA
-
8/18/2019 Funciones de una Fila.pptx
5/41
• Sinta*is:
Funciones SQL de una Fila
nombre_función [(argumento1, argumento2 , …)]
Se pueden usar en lascláusulas SELECT,
WE!E " #!$E! %&
'can sobre cada fila*ue la senencia S+L
recupera
'cepan arumenos "reornan un -alor
.anipulan /em de daos 0ueden modificar el ipode daos !eornan un -alor porfila
0ueden ser anidadas
-
8/18/2019 Funciones de una Fila.pptx
6/41
Funciones SQL de una Fila
5ENERAL
CARACTER
ECHA
CON%ER -N
UNCONE 6UE
O4ERAN CON UNA
LA
N3*ERO
-
8/18/2019 Funciones de una Fila.pptx
7/41
Funciones de Caracteres
• +ceptan co!o argu!entos de entrada datos del tipo caracter %retornan datos del tipo caracteres $ n(!eros.
UNCONE DE
CARACTERE
UNCONE DE
CON%ER -N
*A73 CULA O
*N3 CULA
UNCONE DE
TRAN OR*AC-N O
*AN4ULAC-N
-
8/18/2019 Funciones de una Fila.pptx
8/41
Funciones de Caracteres
• Funciones de conversi$n del te*to a !a%(sculas % !in(sculas:
• Funciones de ree!pla,o o !anipulaci$n de caracteres:
L#WE!(columna|expresión) 100E!(columna|expresión)232TC'0(columna|
expresión)
C#3C'T(columna1|expresión1,
columna2|expresión2 )S1%ST!(columna|expresión,m[ ,n ] ) LE34T(columna|expresión)
!T!2.(columna5e6presión )
LT!2.(columna5e6presión )
!E0L'CE(columna|expresión,
texto_a_buscar, texto_reemplazo)T!2.(columna|expresión)
L0'$(columna|expresión,n,‘caracter_de_relleno’ )
!0'$(columna|expresión,n,‘caracter_de_relleno’ )
23ST!(columna|expresión,
‘texto_buscado‘, [,m] ],n] )
T!2.(‘caracter’ 7!#. columna|expresión)
-
8/18/2019 Funciones de una Fila.pptx
9/41
Funciones de Caracteres
• -je!plo:
SELECT las_'ame, U44ER(las_'ame), 8o9_id, LO:ER(8o9_id), NTCA4(8o9_id)RO* employees+
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
-
8/18/2019 Funciones de una Fila.pptx
10/41
………………………………………………………………………………………………………………………………...
………………………………………………………………………………………………………………………………888
Funciones de Caracteres
• -je!plo:
SELECT las_'ame apellido, CONCAT("S salario es ", salary),SU!STR(las_'ame , 2,;), LEN5TH(las_'ame), NSTR(las_'ame, "a")
RO* employees+
-
8/18/2019 Funciones de una Fila.pptx
11/41
Funciones de Caracteres
• -je!plo:
SELECT las_'ame
-
8/18/2019 Funciones de una Fila.pptx
12/41
…………………………………………………….…….......….……… …………………..…..………………...….
……………………………………………………8……8888888…8……… …………………8…88………………888…8
Funciones de Caracteres
• -je!plo:
SELECT las_'ame apellido, RE4LACE(las_'ame, "A", "Hola"), salary salario, L4AD(salary,10,""), R4AD(salary,10,"")RO* employeesORDER !7 las_'ame+
-
8/18/2019 Funciones de una Fila.pptx
13/41
Funciones de '(!eros
• anipulan n(!eros aceptan un valor nu!"rico co!o argu!ento %retornan un valor nu!"rico.
• -je!plo:
SELECT ROUND(12;>@B,2), ROUND(12;>@B), ROUND(12;@>@B, =1),TRUNC(12;>@B,2), TRUNC(12;>@B), TRUNC(12;>@B, =2)
RO* DUAL+
!#13$(columna|expresión,n) T!13C(columna|expresión,n) .#$(m,n)
-
8/18/2019 Funciones de una Fila.pptx
14/41
Funciones de '(!eros
• -je!plo:
SELECT las_'ame, salary, *OD(salary, @000)RO* employees:HERE 8o9_id"ST_*AN"+
-
8/18/2019 Funciones de una Fila.pptx
15/41
Funciones de Fec#a
ECHA
EN
ORACLE
$ebe ir enrecomillas al ser
uili9ada en unasenencia S+L
0or defeco se-isuali9a en el
formao:$$;.#3;!!
Se almacena silo,a
-
8/18/2019 Funciones de una Fila.pptx
16/41
Funciones de Fec#a
• -l for!ato de fec#a // es si!ilar al ele!ento 00 pero se puedeutili,ar para especificar diferentes siglos:
-
8/18/2019 Funciones de una Fila.pptx
17/41
Funciones de Fec#as
• 1odas las funciones de fec#as retornan un tipo de dato Fec#a e*cepto lafunci$n O'12S34-15--' que retorna un valor nu!"rico.
S&S$'TE .#3TS_%ETWEE3(fec=a>,fec=a?)
'$$_.#3TS(fecha,n) 3E@T_$'&(fecha,da)
L'ST_$'&(fecha) !#13$!fecha,["formato"])
T!13C(fec=a,["formato" ])
-
8/18/2019 Funciones de una Fila.pptx
18/41
Funciones de Fec#as
• -je!plo:
• -je!plo 6asu!iendo que la fec#a actual 6S0SD+1-7 es 89;8
-
8/18/2019 Funciones de una Fila.pptx
19/41
Funciones de Fec#as
• Las fec#as en la 4ase de Datos se al!acenan co!o n(!eros por lotanto se pueden reali,ar c>lculos usando operadores arit!"ticos.
• -je!plo:
SELECT las_'ame, Gire_dae, ROUND((S7SDATE = Gire_dae) / )
-
8/18/2019 Funciones de una Fila.pptx
20/41
Conversi$n de 1ipos de Datos
CON%ER -N DE
T4O DE DATO
CON%ER -N DE T4O
DE DATO *4LCTA
CON%ER -N DE T4O
DE DATO EF4LCTA
-
8/18/2019 Funciones de una Fila.pptx
21/41
Conversi$n de 1ipos de Datos ?!plícita
• -je!plo:
SELECT employee_id, Gire_daeRO* employees:HERE Gire_dae I "0@/0;/200"
ORDER !7 Gire_dae+
DE A
B'!C'!? o C'! 31.%E!B'!C'!? o C'! $'TE31.%E! B'!C'!?$'TE B'!C'!?
-
8/18/2019 Funciones de una Fila.pptx
22/41
Conversi$n de 1ipos de Datos -*plícita
N3*ERO CARJCTER ECHA
T#_C'!(nmero5fec=a[, formao_con-ersión ])
T#_31.%E!(caracer [, formao_con-ersión ])
T#_$'TE(caracer[, formao_con-ersión ])
-
8/18/2019 Funciones de una Fila.pptx
23/41
&so de Funci$n 1O3C2+/ con Fec#as
• 1O3C2+/ puede convertir la fec#a desde su for!ato por defecto a unfor!ato especificado por el usuario.
• @rincipales ele!entos de for!atos de fec#as v>lidos:
• @rincipales ele!entos de #oras v>lidos para los for!atos de fec#as:
• Sufijos en los ele!entos de fec#as % #oras para !odificar la for!a devisuali,aci$n:
TO_CHAR(Ke&Ga, " Kormao_&o'ersi'")
&&&& &E'! .. .#3T .#3 $& $'& $$
'. o
0.
.#3 >? ?D .2 SS 8 , Fcaracteres_a_#isuali$ar F
S0S0T o
TS0
-
8/18/2019 Funciones de una Fila.pptx
24/41
…………………………………………………….…….......….…….…………..…………………..…..………………...….
……………………………………………………8……8888888…8……8…………88…………………88…88………………888…
&so de Funci$n 1O3C2+/ con Fec#as
• -je!plo:
SELECT las_'ame
-
8/18/2019 Funciones de una Fila.pptx
25/41
&so de Funci$n 1O3C2+/ con '(!eros
• 1O3C2+/ puede convertir los valores nu!"ricos a una cadena decaracteres en un for!ato especificado por el usuario.
• @rincipales ele!entos de for!atos de n(!eros v>lidos:
TO_CHAR('mero, " Kormao_&o'ersi'")
ELE*ENT
O
DE CR4C-N
EE*4LO
(&o' el alor
12;)
RE ULTADO
G !epresena un nmero8 GGGGGG >?HD
I 7uer9a a *ue se muesre un cero IGGGGG II>?HD
J Coloca un sino dólar8 JGGGGGG J>?HDL Coloca el s/mbolo local de la moneda8 LGGGGGG J>?HD
8 Coloca un puno decimal en la posiciónespecificada8
GGGGGG8GG >?HD8II
, Coloca un separador de miles8 GG,GGG >,?HD
-
8/18/2019 Funciones de una Fila.pptx
26/41
&so de Funci$n 1O3C2+/ con '(!eros
• -je!plo:
SELECT salary, TO_CHAR(salary, "#$$,$$$>00") ormao1,TO_CHAR(salary, "#00$$,$$$>00") ormao2,
TO_CHAR(salary, "#$$5$$$D00") ormao;,TO_CHAR(salary, "#$$$$$%000") ormao
RO* employees:HERE las_'ame "Er's"+
-
8/18/2019 Funciones de una Fila.pptx
27/41
Funciones +nidadas
• Las funciones que operan sobre un fila se pueden anidar sin lí!ites.• Se eval(an desde el nivel !>s interno #asta el nivel !>s e*terno.
• -je!plo:
;( 2( 1(&ol,ar1), ar2), ar;)
SELECT las_'ame, deparme'_id, U44ER(CONCAT(SU!STR(las_'ame, 1, ), "_&Gile"))RO* employees:HERE deparme'_id 9e?ee' 10 AND 0+
-
8/18/2019 Funciones de una Fila.pptx
28/41
Funciones )enerales
• 1rabajan con cualquier tipo de dato % per!iten definir valores a utili,ar en elcaso de que las e*presiones to!en valor nulo.
NVL(expr1, expr2) NVL2(expr1, expr2, expr3))
NULLIF(expr1, expr2) COALESCE(expr1, expr2, …, exprn)
-
8/18/2019 Funciones de una Fila.pptx
29/41
&so de Funci$n 'AL
• Si expr1 es nula devuelve el valor de expr2 . Si e*pr; no es nula lafunci$n retorna el valor de expr1. +!bos deben ser del !is!o tipo dedato.
N%L(ePpr1 , ePpr2 )
T4O DE DATO A E%ALUAR 4OR
LA UNC-N
EE*4LO DE CON%ER -N
31.%E! 3BL(commission_pc,I)
$'TE 3BL(=ire_dae, I>;3#B;IK)
C'! o B'!C'!? 3BL(T#_C'!(manaer_id), 3o posee efe)
-
8/18/2019 Funciones de una Fila.pptx
30/41
………………………………………….…….…………..………………..………………………...….
………………………………………….…….…………..………………..………………………...….
……………………………………….…….…………..…………………..………………………...….
……………………………………….…….…………..…………………..………………………...….
&so de Funci$n 'AL
• -je!plo:
SELECT las_'ame, salary, N%L(&ommissio'_p&, 0)
-
8/18/2019 Funciones de una Fila.pptx
31/41
&so de Funci$n 'AL<
• -val(a expr1. Si "sta no es 'ula la funci$n retorna expr2 . Si expr1 esnula entonces la funci$n retorna la e xpr%.
• -je!plo:
N%L2(ePpr1 , ePpr2 , ePpr; )
SELECT employee_id, salary, &ommissio'_p&,N%L2(&ommissio'_p&, "SALAROQCO*SON", "SOLO SALARO") AS
-
8/18/2019 Funciones de una Fila.pptx
32/41
&so de Funci$n '&LL?F
• Co!para dos e*presiones 6expr1 & expr2 7. Si son iguales la funci$nretorna 'ulo.
• -je!plo:
NULL(ePpr1 , ePpr2 )
SELECT Kirs_'ame, LEN5TH(Kirs_'ame)
-
8/18/2019 Funciones de una Fila.pptx
33/41
&so de Funci$n CO+L-SC-
• /etorna la pri!era e*presi$n no nula de la lista.
• -je!plo:
COALESCE(ePpr1, ePpr2, , ePpr')
SELECT las_'ame, &ommissio'_p&, ma'aer_id, COALESCE(&ommissio'_p&, ma'aer_id, $$$$)
-
8/18/2019 Funciones de una Fila.pptx
34/41
-*presiones Condicionales
EF4RE ONE
CONDCONALE
CA DE
DECODE
-
8/18/2019 Funciones de una Fila.pptx
35/41
&so de -*presiones C+S-
• Facilita las consultas condicionales #aciendo el trabajo de lainstrucci$n ?FB12-'B-LS-.
• -je!plo:
CA E Ppr :HEN Ppr1_&ompara&i0' THEN Ppr1_r s/l(ado
S :HEN Ppr2_&ompara&i0' THEN Ppr2_r s/l(ado
:HEN Ppr'_&ompara&i0' THEN Ppr'_r s/l(ado
EL E Ppr_ ls
END
ELECT employee_id, 8o9_id, deparme'_id, salary,
CA E 8o9_id :HEN "4R_RE4" THEN 1>1@salary
:HEN "*_*AN" THEN 1>20salary
EL E salary END < alario '&reme'ado<
RO* employees
:HERE deparme'_id N(0, 20, 110)+
-
8/18/2019 Funciones de una Fila.pptx
36/41
&so de -*presiones C+S-
• Facilita las consultas condicionales #aciendo el trabajo de lainstrucci$n ?FB12-'B-LS-.
• Sinta*is:
C'SE expr WE3 expr1_comparación TE3 expr1_resultado [ WE3 expr2_comparación TE3 expr2_resultado
WE3 exprn_comparación TE3 exprn_resultado ELSE expr_else ]E3$
-
8/18/2019 Funciones de una Fila.pptx
37/41
&so de -*presiones C+S-
• -je!plo:
ELECT employee_id, 8o9_id, deparme'_id, salary,
CA E 8o9_id :HEN "4R_RE4" THEN 1>1@salary
:HEN "*_*AN" THEN 1>20salary
EL E salary END < alario '&reme'ado<
RO* employees
:HERE deparme'_id N(0, 20, 110)+
-
8/18/2019 Funciones de una Fila.pptx
38/41
&so de -*presiones C+S-
• -je!plo:
ELECT las_'ame, salary,
(CA E :HEN salary V @000 THEN "!a8o"
:HEN salary V 10000 THEN "*edio"
:HEN salary V 20000 THEN "!e'o"
EL E "EP&ele'e" END)
-
8/18/2019 Funciones de una Fila.pptx
39/41
Uso de Función DECODE
• Facilita las consultas condicionales haciendo el trabajo de lainstrucción IF-THEN-ELSE o de las e!resiones C"SE#
• Sintais$
$EC#$E(columna5e6presión, b's(ueda1, resultado1
[, b's(ueda2 , resultado2 … , ][resultado por defecto]
-
8/18/2019 Funciones de una Fila.pptx
40/41
Uso de Función DECODE
• Eje%!lo$
ELECT employee_id, 8o9_id, deparme'_id, salary,
DECODE (8o9_id, "4R_RE4", 1>1@salary,
"*_*AN", 1>20salary,
salary) < alario '&reme'ado<
RO* employees
:HERE deparme'_id N(0, 20, 110)+
-
8/18/2019 Funciones de una Fila.pptx
41/41
/esu!en de la Clase
• Se describieron las características generales de las Funciones SQL.• Se describieron las características de las Funciones SQL que operan con
una fila.
• Se describieron los tipos de Funciones que operan con una sola fila % sus
características particulares
• Se e*plic$ c$!o usar Funciones de Caracteres en sentencias SQL.
• Se e*plic$ c$!o usar Funciones de '(!eros en sentencias SQL.
• Se e*plic$ c$!o usar Funciones de Conversi$n en sentencias SQL.
• Se e*plic$ c$!o usar Funciones de )enerales en sentencias SQL#