6 sql funciones-defilas

473 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
473
On SlideShare
0
From Embeds
0
Number of Embeds
99
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

6 sql funciones-defilas

  1. 1. Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Funciones a Nivel de FilaFunciones a Nivel de Fila
  2. 2. 1-91 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002ObjetivosObjetivosAl completar esta lección, debería sercapaz de hacer lo siguiente:Al completar esta lecciAl completar esta leccióón, debern, deberíía sera sercapaz de hacer lo siguiente:capaz de hacer lo siguiente:•• Explicar los diversos tipos deExplicar los diversos tipos defunciones disponibles en SQL.funciones disponibles en SQL.•• Incluir una variedad de funciones deIncluir una variedad de funciones decaracteres, numcaracteres, numééricas y de datos enricas y de datos ensentencias SELECT.sentencias SELECT.•• Explicar las funciones de conversiExplicar las funciones de conversióón yn yla manera en que podrla manera en que podríían ser usadas.an ser usadas.
  3. 3. 1-92 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Funciones SQLFunciones SQLFunciFuncióónnEntradaEntradaargarg 11argarg 22argarg nnLas FuncionesLas FuncionesRealizanRealizanAccionesAccionesSalidaSalidaValorValorResultadoResultado
  4. 4. 1-93 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Dos Tipos de Funciones SQLDos Tipos de Funciones SQLFuncionesFuncionesFunciones aFunciones aNivel de FilaNivel de FilaFunciones aFunciones aNivel deNivel deMMúúltiples Filasltiples Filas
  5. 5. 1-94 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Funciones a Nivel de Fila:SintaxisFunciones a Nivel de Fila:Sintaxis•• ManipulanManipulan íítems de datos.tems de datos.•• Aceptan argumentos y devuelven un valor.Aceptan argumentos y devuelven un valor.•• ActActúúan sobre cada fila retornada.an sobre cada fila retornada.•• Devuelven un resultado por fila.Devuelven un resultado por fila.•• Modifican el tipo de datos.Modifican el tipo de datos.•• Pueden estar anidadas.Pueden estar anidadas.Sintaxis:Sintaxis:function_name (column|expression, [arg1, arg2,...])function_name (column|expression, [arg1, arg2,...])
  6. 6. 1-95 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Funciones a Nivel de FilaFunciones a Nivel de FilaConversionConversionCharacterCharacterNumberNumberDateDateGeneralGeneralSingleSingle--rowrowfunctionsfunctions
  7. 7. 1-96 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Funciones de CaracteresFunciones de CaracteresFunciones deFunciones deCaracteresCaracteresLOWERLOWERUPPERUPPERINITCAPINITCAPCONCATCONCATSUBSTRSUBSTRLENGTHLENGTHINSTRINSTRLPADLPADFunciones de ConversiFunciones de ConversióónnFunciones deFunciones deManipulaciManipulacióón de Caracteresn de Caracteres
  8. 8. 1-97 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Función ResultadoFunciones de ConversiónFunciones de ConversiónConversión de cadenas de caracteresConversiConversióón de cadenas de caracteresn de cadenas de caracteresLOWER(Curso SQL)UPPER (Curso SQL)INITCAP(Curso SQL)curso sqlCURSO SQLCurso Sql
  9. 9. 1-98 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Uso de Funciones de ConversiónUso de Funciones de ConversiónVisualizar el número de empleado,nombre y nº de departamento de “Blake”.Visualizar el nVisualizar el núúmero de empleado,mero de empleado,nombre y nnombre y nºº de departamento dede departamento de ““BlakeBlake””..SQL> SELECT empno, ename, deptno2 FROM emp3 WHERE ename = blake;no rows selectedSQL> SELECT empno, ename, deptno2 FROM emp3 WHERE ename = blake;nono rowsrows selectedselectedEMPNO ENAME DEPTNO--------- ---------- ---------7698 BLAKE 30EMPNO ENAME DEPTNO--------- ---------- ---------7698 BLAKE 30SQL> SELECT empno, ename, deptno2 FROM emp3 WHERE LOWER(ename) = blake;
  10. 10. 1-99 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002CONCAT(Good, String)SUBSTR(String,1,3)LENGTH(String)INSTR(String, r)LPAD(sal,10,*)GoodStringStr63******5000Función ResultadoFunciones de Manipulación deCaracteresFunciones de Manipulación deCaracteresManipulación de cadenas de caracteresManipulaciManipulacióón de cadenas de caracteresn de cadenas de caracteres
  11. 11. 1-100 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Uso de Funciones deManipulación de CaracteresUso de Funciones deManipulación de CaracteresSQL> SELECT ename, CONCAT (ename, job), LENGTH(ename),2 INSTR(ename, A)3 FROM emp4 WHERE SUBSTR(job,1,5) = SALES;ENAME CONCAT(ENAME,JOB) LENGTH(ENAME) INSTR(ENAME,A)---------- ------------------- ------------- ----------------MARTIN MARTINSALESMAN 6 2ALLEN ALLENSALESMAN 5 1TURNER TURNERSALESMAN 6 0WARD WARDSALESMAN 4 2
  12. 12. 1-101 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Funciones NuméricasFunciones Numéricas• ROUND: Redondea un valor al decimalespecificadoROUND(45.926, 2) 45.93• TRUNC: Trunca un valor en el decimalespecificadoTRUNC(45.926, 2) 45.92• MOD: Devuelve el resto de la divisiónMOD(1600, 300) 100• ROUND: Redondea un valor al decimalespecificadoROUND(45.926, 2) 45.93• TRUNC: Trunca un valor en el decimalespecificadoTRUNC(45.926, 2) 45.92• MOD: Devuelve el resto de la divisiónMOD(1600, 300) 100
  13. 13. 1-102 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Uso de la Función ROUNDUso de la Función ROUNDVisualizar el valor 45.923 redondeado acentenas, 0, y 10 posiciones decimales.Visualizar el valor 45.923 redondeado aVisualizar el valor 45.923 redondeado acentenas,centenas, 00, y 10 posiciones decimales., y 10 posiciones decimales.SQL> SELECT ROUND(45.923,2), ROUND(45.923,0),2 ROUND(45.923,-1)3 FROM SYS.DUAL;ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1)--------------- -------------- -----------------45.92 46 50
  14. 14. 1-103 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002SQL> SELECT TRUNC(45.923,2), TRUNC(45.923),2 TRUNC(45.923,-1)3 FROM SYS.DUAL;TRUNC(45.923,2) TRUNC(45.923) TRUNC(45.923,-1)--------------- ------------- ---------------45.92 45 40Uso de la Función TRUNCUso de la Función TRUNCVisualizar el valor 45.923 con TRUNC acentenas, 0, y 10 posiciones decimales.Visualizar el valor 45.923 con TRUNC aVisualizar el valor 45.923 con TRUNC acentenas,centenas, 00, y 10 posiciones decimales., y 10 posiciones decimales.
  15. 15. 1-104 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Uso de la Función MODUso de la Función MODCalcular el resto de dividir el salario entrela comisión de cada empleado, cuyotrabajo sea “VENDEDOR”.Calcular el resto de dividir el salario entreCalcular el resto de dividir el salario entrela comisila comisióón de cada empleado, cuyon de cada empleado, cuyotrabajo seatrabajo sea ““VENDEDORVENDEDOR””..SQL> SELECT ename, sal, comm, MOD(sal, comm)2 FROM emp3 WHERE job = SALESMAN;ENAME SAL COMM MOD(SAL,COMM)---------- --------- --------- -------------MARTIN 1250 1400 1250ALLEN 1600 300 100TURNER 1500 0 1500WARD 1250 500 250
  16. 16. 1-105 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Trabajando con FechasTrabajando con Fechas•• Oracle almacena fechas en un formato numOracle almacena fechas en un formato numééricoricointerno.interno.–– Siglo, aSiglo, añño, mes, do, mes, díía, horas, minutos,a, horas, minutos,segundos.segundos.•• El formato de fecha por defecto es DDEl formato de fecha por defecto es DD--MONMON--YY.YY.•• SYSDATE es una funciSYSDATE es una funcióón que devuelve fecha yn que devuelve fecha yhora.hora.•• DUAL es una tabla virtual de la Base de Datos,DUAL es una tabla virtual de la Base de Datos,que puede ser usada para inspeccionarque puede ser usada para inspeccionarSYSDATE.SYSDATE.
  17. 17. 1-106 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Operadores Aritméticos deFechasOperadores Aritméticos deFechas•• Sumar o restar un nSumar o restar un núúmero amero a óó de unade unafecha da por resultado unafecha da por resultado una fechafecha..•• Restar dos fechas para encontrar laRestar dos fechas para encontrar lacantidadcantidad de dde díías entre esas fechas.as entre esas fechas.•• SumarSumar horashoras a una fecha dividiendo laa una fecha dividiendo lacantidad de horas por 24.cantidad de horas por 24.
  18. 18. 1-107 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Uso de Operadores Aritméticosen FechasUso de Operadores Aritméticosen FechasSQL> SELECT ename, (SYSDATE-hiredate)/7 WEEKS2 FROM emp3 WHERE deptno = 10;ENAME WEEKS---------- ---------KING 830.93709CLARK 853.93709MILLER 821.36566
  19. 19. 1-108 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Funciones de FechaFunciones de FechaNúmero de meses entre dosfechasMONTHS_BETWEENADD_MONTHSNEXT_DAYLAST_DAYROUNDTRUNCAgregar meses segúncalendario, a una fechaPróximo día de la fechaespecificadaUltimo día del mesRedondea una fechaTrunca una fechaFUNCION DESCRIPCION
  20. 20. 1-109 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002•• MONTHS_BETWEEN (01MONTHS_BETWEEN (01--SEPSEP--95,1195,11--JANJAN--94)94)Uso de Funciones de FechaUso de Funciones de Fecha•• ADD_MONTHS (11ADD_MONTHS (11--JANJAN--94,6)94,6)•• NEXT_DAY (01NEXT_DAY (01--SEPSEP--95,FRIDAY)95,FRIDAY)•• LAST_DAY(01LAST_DAY(01--SEPSEP--95)95)19.677419419.67741941111--JULJUL--94940808--SEPSEP--95953030--SEPSEP--9595
  21. 21. 1-110 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Uso de Funciones de FechaUso de Funciones de Fecha•• ROUND(25ROUND(25--JULJUL--95,MONTH)95,MONTH)•• ROUND(25ROUND(25--JULJUL--95,YEAR)95,YEAR)•• TRUNC(25TRUNC(25--JULJUL--95,MONTH)95,MONTH)•• TRUNC(25TRUNC(25--JULJUL--95,YEAR)95,YEAR)0101--AUGAUG--95950101--JANJAN--96960101--JULJUL--95950101--JANJAN--9595
  22. 22. 1-111 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Funciones de ConversiónFunciones de ConversiónConversiConversióónnImplImplíícitacitaConversiConversióónnExplExplíícitacitaConversiConversióón den deTipos de DatosTipos de Datos
  23. 23. 1-112 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Conversión Implícita del Tipo deDatoConversión Implícita del Tipo deDatoPara asignaciones, Oracle automáticamentepuede convertir:Para asignaciones, Oracle automPara asignaciones, Oracle automááticamenteticamentepuede convertir:puede convertir:VARCHAR2 o CHARDe AVARCHAR2 o CHARNUMBERDATENUMBERDATEVARCHAR2VARCHAR2
  24. 24. 1-113 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Conversión Explícita del Tipo deDatoConversión Explícita del Tipo deDatoPara evaluar una expresión, Oracleautomáticamente puede convertir:Para evaluar una expresiPara evaluar una expresióón, Oraclen, Oracleautomautomááticamente puede convertir:ticamente puede convertir:VARCHAR2 o CHARDe AVARCHAR2 o CHARNUMBERDATE
  25. 25. 1-114 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Conversión Explícita del Tipo deDatoConversión Explícita del Tipo deDatoNUMBERNUMBER CHARACTERCHARACTERTO_CHARTO_CHARTO_NUMBERTO_NUMBERDATEDATETO_CHARTO_CHARTO_DATETO_DATE
  26. 26. 1-115 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Función TO_CHAR con FechasFunción TO_CHAR con FechasEl formato:El formato:•• Debe estar encerrado entre comillas simples yDebe estar encerrado entre comillas simples yes sensible a mayes sensible a mayúúsculas/minsculas/minúúsculas.sculas.•• Puede incluir cualquier elemento de formatoPuede incluir cualquier elemento de formatode fecha vde fecha váálido.lido.•• Tiene un elementoTiene un elemento fmfm ((fillfill modemode)) para eliminarpara eliminarespacios en blanco de relleno o suprimir cerosespacios en blanco de relleno o suprimir cerosa la izquierda.a la izquierda.•• EstEstáá separado de la fecha por una coma.separado de la fecha por una coma.TO_CHAR(date, fmt)TO_CHAR(date, fmt)
  27. 27. 1-116 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002YYYYElementos del Modelo Formato de FechaElementos del Modelo Formato de FechaYEARMMMONTHDYDAYAño completo en númeroAño en letrasNº del mes con dos dígitosAbreviatura de tres letras deldía de la semanaNombre completo del díaNombre completo del mes
  28. 28. 1-117 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Elementos del Formato deFechasElementos del Formato deFechas• Obtención de la hora:• Añadir cadenas de caracteres encerrándolasentre dobles comillas.• Sufijo que permita obtener el nº del día en letra.•• ObtenciObtencióón de la hora:n de la hora:•• AAññadir cadenas de caracteres encerradir cadenas de caracteres encerráándolasndolasentre dobles comillas.entre dobles comillas.•• Sufijo que permita obtener el nSufijo que permita obtener el nºº del ddel díía en letra.a en letra.HH24:MI:SS AM 15:45:32 PMDD "of" MONTH 12 of OCTOBERddspth fourteenth
  29. 29. 1-118 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Formato de Fecha RRFormato de Fecha RRAAñño Actualo Actual19951995199519952001200120012001FechaFecha EspecEspecííficadaficada2727--OCTOCT--95952727--OCTOCT--17172727--OCTOCT--17172727--OCTOCT--9595Formato RRFormato RR19951995201720172017201719951995FormatoYYFormatoYY19951995191719172017201720952095Si los 2 dSi los 2 díígitos especificados del agitos especificados del añño esto estáánnSi los 2Si los 2ddíígitos delgitos delaaññoocorrientecorrienteestestáánn00--494900--4949 5050--99995050--9999La fecha devueltaLa fecha devueltacorresponde alcorresponde alsiglo corriente.siglo corriente.La fecha devueltaLa fecha devueltacorresponde alcorresponde alsiglo posterior alsiglo posterior alcorriente.corriente.La fecha devueltaLa fecha devueltacorresponde al siglocorresponde al sigloanterior al corriente.anterior al corriente.La fecha devueltaLa fecha devueltacorresponde al siglocorresponde al siglocorriente.corriente.
  30. 30. 1-119 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Función TO_CHAR con FechasFunción TO_CHAR con FechasSQL> SELECT ename,2 TO CHAR(hiredate, fmDD Month YYYY) HIREDATE3 FROM emp;ENAME HIREDATE---------- -----------------KING 17 November 1981BLAKE 1 May 1981CLARK 9 June 1981JONES 2 April 1981MARTIN 28 September 1981ALLEN 20 February 1981...14 rows selected.
  31. 31. 1-120 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Función TO_CHAR con NúmerosFunción TO_CHAR con NúmerosUse estos formatos con la funciónTO_CHAR para mostrar un carácter comoun número.Use estos formatos con la funciUse estos formatos con la funcióónnTO_CHAR para mostrar un carTO_CHAR para mostrar un caráácter comocter comoun nun núúmero.mero.TO_CHAR(number, fmt)TO_CHAR(number, fmt)90$L.,Representa un númeroFuerza a que se muestre el 0 (cero)Signo del dólarUsa el símbolo de moneda localImprime el punto decimalImprime el indicador de millar
  32. 32. 1-121 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002SQL> SELECT TO_CHAR(sal,$99,999) SALARY2 FROM emp3 WHERE ename = SCOTT;SALARY--------$3,000Uso de laFunción TO_CHAR con NúmerosUso de laFunción TO_CHAR con Números
  33. 33. 1-122 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002FuncionesTO_NUMBER y TO_DATEFuncionesTO_NUMBER y TO_DATE• Convierte una cadena de caracteres aun formato numérico usando la funciónTO_NUMBER• Convierte una cadena de caracteres aun formato numérico usando la funciónTO_NUMBERTO_NUMBER(char)TO_NUMBER(char)• Convierte una cadena de caracteres aun formato de fecha usando la funciónTO_DATE• Convierte una cadena de caracteres aun formato de fecha usando la funciónTO_DATETO_DATE(char[, fmt])TO_DATE(char[, fmt])
  34. 34. 1-123 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002NVL FunctionNVL FunctionConvierte un nulo a un valor.• Los tipos de datos pueden ser de fecha,cadenas de caracteres y números.• Los tipos de datos deben coincidir:– NVL(comm,0)– NVL(hiredate,01-JAN-97)– NVL(job,No Job Yet)Convierte un nulo a un valor.Convierte un nulo a un valor.• Los tipos de datos pueden ser de fecha,cadenas de caracteres y números.• Los tipos de datos deben coincidir:– NVL(comm,0)– NVL(hiredate,01-JAN-97)– NVL(job,No Job Yet)
  35. 35. 1-124 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002SQL> SELECT ename, sal, comm, (sal*12)+NVL(comm,0)2 FROM emp;Uso de la Función NVLUso de la Función NVLENAME SAL COMM (SAL*12)+NVL(COMM,0)---------- --------- --------- --------------------KING 5000 60000BLAKE 2850 34200CLARK 2450 29400JONES 2975 35700MARTIN 1250 1400 16400ALLEN 1600 300 19500...14 rows selected.
  36. 36. 1-125 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002La Función DECODELa Función DECODEHace las veces de sentecias CASE oIF-THEN-ELSE, para facilitar consultascondicionales.Hace las veces deHace las veces de senteciassentecias CASECASE ooIFIF--THENTHEN--ELSEELSE, para facilitar consultas, para facilitar consultascondicionales.condicionales.DECODE(col/expression, search1, result1[, search2, result2,...,][, default])DECODE(col/expression, search1, result1[, search2, result2,...,][, default])
  37. 37. 1-126 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Uso de la Función DECODEUso de la Función DECODESQL> SELECT job, sal,2 DECODE(job, ANALYST SAL*1.1,3 CLERK, SAL*1.15,4 MANAGER, SAL*1.20,5 SAL)6 REVISED_SALARY7 FROM emp;JOB SAL REVISED_SALARY--------- --------- --------------PRESIDENT 5000 5000MANAGER 2850 3420MANAGER 2450 2940...14 rows selected.
  38. 38. 1-127 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Anudamiento de FuncionesAnudamiento de Funciones•• Las funciones a nivel de fila pueden serLas funciones a nivel de fila pueden seranidadas hasta cualquier nivel.anidadas hasta cualquier nivel.•• Las funciones anidadas son evaluadas desdeLas funciones anidadas son evaluadas desdeel nivel mel nivel máás profundo al nivel menoss profundo al nivel menosprofundo.profundo.F3(F2(F1(col,arg1),arg2),arg3)Paso 1 = Resultado 1Paso 2 = Resultado 2Paso 3 = Resultado 3
  39. 39. 1-128 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Funciones AnidadasFunciones AnidadasSQL> SELECT ename,2 NVL(TO_CHAR(mgr),No Manager)3 FROM emp4 WHERE mgr IS NULL;ENAME NVL(TO_CHAR(MGR),NOMANAGER)---------- -----------------------------KING No Manager
  40. 40. 1-129 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002ResumenResumenUse funciones para:• Realizar cáculos sobre los datos• Modificar datos de forma individual• Manipular la salida de grupos deregistros• Alterar formatos de fecha en suvisualización• Convertir tipos de datos de columnasUse funciones para:Use funciones para:• Realizar cáculos sobre los datos• Modificar datos de forma individual• Manipular la salida de grupos deregistros• Alterar formatos de fecha en suvisualización• Convertir tipos de datos de columnas
  41. 41. 1-130 Javier Balbuena / José Manuel Ferrer. Curso 2.001 / 2.002Visión General de la PrácticaVisión General de la Práctica•• Crear consultas que requieran el uso deCrear consultas que requieran el uso defunciones numfunciones numééricas, de caracteres y dericas, de caracteres y defechas.fechas.•• Usar concatenaciUsar concatenacióón con funciones.n con funciones.•• Escribir consultas caseEscribir consultas case insensitiveinsensitive para probarpara probarla utilidad de las funciones de caracteres.la utilidad de las funciones de caracteres.•• Ejecutar cEjecutar cáálculos sobre alculos sobre añños y meses deos y meses deservicio para un empleado.servicio para un empleado.•• Determinar la fecha de revisiDeterminar la fecha de revisióón para unn para unempleado.empleado.

×