You are on page 1of 44

Academy

SENTENCIAS

SQL DE ORACLE

BASES DE DATOS I
CRISTIAN ESPINOZA CUARTO "2"

Academy

ORACLE SQL
OBJETIVOS: 1. Conocer la definicin y aplicaciones de las principales funciones de Oracle SQL, segn sus aplicaciones. 2. Poner en prctica todas estas funciones en la Consola del SQL Command Line para as ganar destreza en su aplicacin. 3. Llegar a un amplio conocimiento de cmo aplicar estas funciones segn sea las necesidades, proyectndonos en un futuro como excelentes DBA (Administradores de Bases de Datos).

Academy

FUNCIONES DE CARACTERES

Academy

Contenido de la leccin: En esta leccin, usted aprender a: Seleccionar y aplicar funciones para el caso de conversin y o manipulacin de caracteres Seleccionar y aplicara funciones para el caso de manipulacin de caracteres como LOWER, UPPER, INITCAP en una consulta de SQL. Escribir consultas sustituyendo las variables.

TABLA DUAL La tabla dual tiene una fila llamada X y una columna llamada DUMMY (TONTA), es usada para crear instrucciones SELECT y ejecutar comandos no directamente relacionados con una tabla de datos especifica. Las consultas usando la tabla DUAL retornan como resultado una fila DUAL puedes ser usado para hacer clculos como en los siguientes ejemplos y tambin para evaluar expresiones que no derivan de una tabla. SELECT (319/29)+12 FROM DUAL;

FUNCIONES CARCTER DE UNA SOLA FILA Estas funciones estn divididas en 2 categoras: Funciones que convierten cadenas de caracteres. Funciones que pueden unir, extraer, mostrar, encontrar, pistar y recortar cadenas de caracteres. Estas funciones pueden ser usadas en SELECT, WHERE y en clausulas ORDER BY. Para el caso de manipulacin de funciones es muy importante ya que uno no puede saber siempre en que caso (maysculas, minsculas o mesclado) estarn los datos registrados en la base de datos.

Academy

Estas funciones te permiten tomar esos datos y mostrarlos en cualquiera de los casos que hayamos escogido.
FuncionesCaracter

Funcionesde Manipulacion deCasos

Funcionesde Manipulacionde Caracteres

LOWER UPPER INITCAP

CONCAT SUBSTR LENGTH INSTR LPAD/RPAD TRIM REPLACE

Para los siguientes ejemplos hemos utilizado el usuario hr de Oracle.

FUNCIONES DE MANIPULACIN DE MAYUSCULAS/MINSCULAS

Utilizamos estas funciones cuando no conocemos como pueden estar guardados los datos , es decir no sabemos si los datos fueron guardados en maysculas, minsculas u otros. 1. LOWER Convierte caracteres alfabticos en minsculas LOWER(NOMBRE_COLUMNA | EXPRESION) SELECT first_name,last_name FROM employees WHERE LOWER(first_name)=david;

Academy

2. UPPER Convierte caracteres alfabticos en maysculas UPPER(NOMBRE_COLUMNA | EXPRESION) SELECT first_name,last_name FROM employees WHERE UPPER(first_name)=DAVID;

3. INITCAP Convierte cadenas con la primera letra en maysculas y el resto en minsculas. INITCAP(NOMBRE_COLUMNA | EXPRESION) SELECT first_name,last_name FROM employees WHERE INITCAP(first_name)=Peter;

NOTA: Estas funciones antes de consultar la informacin deseada convierten el dato (en este caso fue el primer nombre) y lo convierte segn sea el caso a minsculas, MAYSCULAS, o tambin la primera letra MAYSCULA y el resto minsculas, para luego comparar con el dato que estamos buscando que debe estar escrito segn el caso que deseamos buscar.

Academy

FUNCIONES DE MANIPULACIN DE CARACTERES

Son usadas para extraer, cambiar el formato o cambiar en alguna forma una cadena de caracteres. Uno o ms caracteres o palabras son pasados a la funcin y entonces esta se encarga de retornar ya una cadena cambiada, extrada o alterada de valor. 4. CONCAT Une las cadenas que le designemos, pero solo puede admitir 2 argumentos. SELECT CONCAT(first_name,last_name) FROM employees WHERE INITCAP(first_name)=Peter;

5. SUBSTR Devuelve una cadena con una longitud determinada, de los datos que consulto SELECT SUBSTR(CONCAT(CONCAT(first_name,last_name),email),1,8) FROM employees WHERE LOWER(first_name)=john;

6. LENGTH Muestra la longitud de una cadena como valor numrico. SELECT LENGTH(CONCAT(CONCAT(first_name,last_name),email)) FROM employees WHERE LOWER(first_name)=randall;

Academy

7. INSTR Encuentra la posicin numrica de un carcter nombrado. SELECT INSTR(CONCAT(CONCAT(first_name,last_name),email),l) FROM employees WHERE salary = 9500;

8. LPAD Devuelve una cadena con el dato que deseamos y una longitud especifica, pero si este no es suficiente el resto de la cadena se llena con el carcter como valor justificado a la derecha. SELECT LPAD(email,10,-) FROM employees WHERE salary < 2500;

9. RPAD Igual que el LPAD pero con justificado hacia la izquierda. SELECT RPAD(email,10,-) FROM employees WHERE salary < 2500;

Academy

10. TRIM Remueve todos el carcter especificado, ya sea del principio o del final (Para este ejemplo utilizaremos tambin CONCAT para entender mejor) SELECT CONCAT(first_name,last_name) FROM employees WHERE salary < 2500;

SELECT TRIM(e FROM CONCAT(first_name,last_name)) FROM employees WHERE salary < 2500;

Academy

FUNCIONES NUMRICAS

Academy

1. ROUND Puede usarse con nmeros y fechas. Es principalmente usado para redondear un nmero especificado de lugares decimales, pero tambin puede usarse para redondear nmeros de la izquierda del punto decimal o nmeros enteros. Sintaxis ROUND(Columna|Expresion, lugares decimales). Note que si el nmero de lugares decimales no es especificado o es el cero, el nmero redondear a ningn lugar decimal. ROUND(45.926) ROUND(45.926, 0) 46 46

Si el nmero de lugares decimales es un nmero positivo, el nmero se redondea a ese nmero de lugares decimales. ROUND(45.926, 2) 45.93

Si el nmero de lugares decimales es un nmero negativo, los nmeros a la izquierda del decimal son redondeados. ROUND(45.926, -1) 50

Academy

2. TRUNC La funcin de TRUNC puede usarse con nmeros y fechas. Cuando TRUNC se usa, si el nmero de lugares decimales no es especificado, entonces los valores predeterminados del nmero es cero. Sintaxis TRUNC(Columna|Expresion, lugares decimales). TRUNC (45.926, 2) 45.92

Si la expresin de TRUNC no especifica el nmero de lugares decimales o especifica un cero, el nmero se trunca para poner a cero los lugares decimales. TRUNC (45.926, 0) TRUNC (45.926) 45 45

Recuerde que ese TRUNC no redondea el nmero. Termina el nmero simplemente a un punto dado.

Academy

3. MOD MOD funciona para hallar el resto de un valor dividi por otro valor. MOD puede usarse para determinar si un valor es impar o par. Si usted divide un valor por 2 y hay resto, el nmero debe ser un nmero impar. Usando el MOD con 2, como en 12/2 y no hay ningn resto, el nmero debe de haber sido un nmero par. Por ejemplo, el MOD de 5 dividi por 2 = 1. MOD(Columna|Expresion, Columna|Numero).

SELECT MOD(1600,500) FROM DUAL;

100

Nohayresto

Sihayrestoenunos yenotrosnohay.

Academy

FUNCIONES DE FECHA

Academy

Contenido de la leccin: En esta leccin, usted aprender a: Seleccionar y aplicar las funciones de una sola fila MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY, ROUND, y TRUNC que operan en los datos tipo fecha. Explicar cmo las funciones de fecha transforman las fechas de Oracle en los datos de fecha o un valor numrico. Demostrar el uso adecuado de los operadores aritmticos con fechas. Demostrar el uso de las funciones SYSDATE y DATE.

1. FORMATOS DE FECHA DE ORACLE


Funcin de fecha que devuelve la fecha de base de datos del servidor y la hora actuales.

El formato de visualizacin predeterminada de fechas es: DD-MON-RR es decir, 02-diciembre-99.

Sin embargo, las Bases de Datos Oracle almacenan fechas internamente con un formato numrico, lo que representa el siglo, ao, mes, da, hora, minutos y segundos. El formato de visualizacin predeterminada y la entrada para cualquier fecha es DD-MON-RR. Fechas vlidas para Oracle estn entre 1 de enero de 4 712 AC, y 31 de diciembre de 9 999, lo que representa el intervalo de fechas que se pueden almacenar con xito en una Base de Datos Oracle.

SYSDATE Funcin de fecha que devuelve la fecha de base de datos del servidor y la hora actuales. SELECT SYSDATE FROM dual;

Academy

2. OPERACIONES CON FECHAS Los datos tipo DATE siempre almacena la informacin del ao como un nmero de cuatro dgitos internos: dos dgitos para el siglo y dos dgitos para el ao. Por ejemplo, las tiendas de base de datos Oracle el ao 1996 o 2004, no slo como 96 o 04. Aunque el almacenamiento interno no pierde de vista la fecha completa, cuando la columna de fecha se muestra en la pantalla, el componente de siglo no se muestra de forma predeterminada.

SUMA O RESTA DE FECHAS CON ENTEROS Permite sumar o restar a una fecha determinada una cantidad de das representadas por un numero, devolviendo como resultado un numero que representa la cantidad de das de esa operacin. SELECT ([FECHA]+[numero]) SELECT ([FECHA]-[numero])

Academy

SUMA ALGEBRAICA DE 2 FECHAS Permite realizar operaciones de suma o resta entre fechas, devolviendo como resultado un numero que representa la cantidad de das producto de esa operacin. SELECT ([FECHA_1]+[FECHA_2]) SELECT ([FECHA_1]-[FECHA_2])

Adems, permite combinar esta suma algebraica de fechas con otras operaciones como multiplicacin, divisin y aplicar funciones numricas como ROUND, TRUNC, ETC. SELECT (([FECHA_1]+[ FECHA_2])*10) SELECT (([FECHA_1]+[ FECHA_2])/365) SELECT (ROUND([FECHA_1]+[FECHA_2])) SELECT (TRUNC([FECHA_1]+[FECHA_2]))

Academy

FUNCIONES DE FECHA
FUNCION DESCRIPCION DATO

MONTHS_BETWEEN ADD_MONTHS NEXT_DAY LAST_DAY ROUND TRUNC

Nmero de meses entre dos fechas Suma meses calendario a una fecha Siguiente da de una fecha especifica ltimo da del mes Redondea la fecha, por mes o ao Trunca la fecha, por mes o ao

Numrico Date Date Date Date Date

MONTHS_BETWEEN Permite obtener la cantidad de meses calendario (con decimales) entre dos fechas especificas, devolviendo la cantidad de meses como un nmero. SELECT MONTHS_BETWEEN([FECHA_1],[FECHA_2])

ADD_MONTHS Permite sumar una cantidad de meses a una fecha determinada, obteniendo como resultado una nueva fecha. SELECT ADD_MONTHS([FECHA],[MESES])

Academy

LAST_DAY Permite obtener la fecha del ltimo da del mes de una fecha de referencia. SELECT LAST_DAY([FECHA])

NEXT_DAY Permite obtener la fecha de siguiente da de la semana especificado a partir de una fecha de referencia. SELECT LAST_DAY([FECHA],['DIA']) Las opciones para DIA son: SUN, MON, TUE, WED, THU, FRI y SAT (Configuracin Regional en Ingles) LUN, MAR, MIE, JUE, VIE, SAB y DOM (Configuracin Regional en Espaol)

Academy

ROUND Permite redondear (aproximar) la fecha por mes o por ao a su valor inmediato superior o inferior (depende del valor ms cercano). SELECT ROUND([FECHA],['MONTH'])

SELECT ROUND([FECHA],['YEAR'])

Academy

TRUNC Permite truncar (recortarr) la fecha por mes o por ao a su valor inmediato inferior. SELECT TRUNC([FECHA],['MONTH'])

SELECT TRUNC([FECHA],['YEAR'])

Academy

FUNCIONES DE CONVERSIN

Academy

Contenido de la leccin: En esta leccin, usted aprender a: Ejemplos de una conversin explcita de tipos de datos y una conversin implcita de tipos de datos. Explicar por qu es importante, desde una perspectiva empresarial, que un lenguaje se han incorporado en las capacidades de conversin de datos Construir una consulta SQL que aplique correctamente TO_CHAR, TO_NUMBER TO_DATE y funciones de una sola fila para producir un resultado deseado. Aplicar la fecha apropiada y/o modelo de formato de caracteres para producir un resultado deseado. Explicar y aplicar el uso de YYYY y RRRR para volver el ao correcto segn los datos almacenados en la base de datos. Cuando se crea una tabla de una base de datos, el programador de SQL debe definir qu tipo de datos sern almacenados en cada campo de la tabla. En SQL, hay varios tipos de datos diferentes. Estos tipos de datos definen el dominio de los valores que cada columna puede contener.

TIPOS DE DATOS VARCHAR2: Se utiliza para datos de caracteres de longitud variable, incluidos los nmeros, caracteres especiales y guiones. CHAR: Se utiliza para datos de texto y caracteres de longitud fija, incluidos los nmeros, guiones y caracteres especiales. NUMBER: Se utiliza para almacenar datos de longitud variable numrica. Sin guiones, textos, u otros datos numricos estn permitidos. De divisas se almacena como un tipo de nmero de datos. DATE: Se utiliza para valores de fecha y hora. Internamente, Oracle almacena las fechas como nmeros y por la informacin de fecha predeterminado se muestra en forma de DD-MON-YY (por ejemplo, 19-JUN-04).

Academy

El servidor de Oracle internamente puede convertir los datos VARCHAR2 y CHAR al nmero y tipos de datos FECHA. Se puede convertir los datos NUMBER y se remontan a tipo de datos CARCTER. Aunque esta es una caracterstica conveniente, siempre es mejor hacer explcita conversiones de tipos de fecha y para garantizar la fiabilidad en las instrucciones SQL. Las cuatro funciones de conversin de tipo de datos que usted aprender son: Convertir datos tipo DATE a datos tipo CHAR. Convertir datos tipo NUMBER a datos tipo CHAR. Convertir datos tipo CHAR a datos tipo NUMBER. Convertir datos tipo CHAR a datos tipo DATE.

CONVERTIR DATOS TIPO DATE A DATOS TIPO CHAR A menudo es deseable para convertir fechas almacenadas en una base de datos por defecto en el formato DD-MON-YY a otro formato especificado por usted. La funcin para realizar esta tarea es: TO_CHAR ([COLUMNA TIPO DATE], ['FORMATO DE FECHA]) El "modelo de formato debe estar encerrado entre comillas simples y distingue entre maysculas y minsculas. Separe el valor de fecha a partir del modelo de formato con una coma. Cualquier elemento de formato de fecha vlido puede ser incluido. Utilice un elemento fm para quitar los espacios en blanco o quitar ceros a la izquierda de la salida. Utilice sp para precisar un nmero.

Academy

Utilice th a tener el nmero de aparecer como un ordinal. (1 , 2 , 3 y as sucesivamente) Utilice las comillas doble para agregar cadenas de caracteres a los modelos de formato. Las tablas muestran los modelos de formato diferente que se puede utilizar. Al especificar los elementos de tiempo, tenga en cuenta que las horas (HH), minutos (MI), segundos (SS), y AM o PM tambin puede ser formateado.

Academy

FECHA Y MODELOS DE FORMATO DE HORA Si una fecha de contratacin de los empleados fue el 04-MAY-04, el modelo de formato con fm habra regresado 04 de mayo 2004, la supresin de la cero a la izquierda TO_CHAR([FECHA],[Formato])

CONVERTIR DATOS TIPO NUMBER A DATOS TIPO CHAR(VARCHAR2) Nmeros almacenados en la base de datos no tienen el formato. Esto significa que no hay signos de moneda y smbolos, comas, ni decimales u otro formato. Para agregar formato, primero tiene que convertir el nmero a un formato de carcter. Esta conversin es especialmente til con la concatenacin. La funcin de SQL que se utiliza para convertir las columnas de datos a un formato de nmero deseado: TO_CHAR(NUMERO, 'MODELO DE FORMATO') La tabla muestra algunos de los elementos de formato disponibles para su uso con funciones TO_CHAR.

Academy

CONVERTIR DATOS TIPO CHAR A DATOS TIPO NUMBER A menudo es deseable para convertir una cadena de caracteres en un nmero. La funcin de esta conversin es la siguiente: TO_NUMBER(CARACTER STRING, 'MODELO DE FORMATO') Esto convierte a un valor no numrico, tales como "450" a un nmero, sin las comillas simples. Las comillas simples son caracteres. El "450" se almacenan en la base de datos como datos de caracteres, y la siguiente consulta se convierte en un nmero para que las operaciones aritmticas se pueden realizar. No se puede realizar clculos con datos de caracteres.

Academy

SQL Plus muestra una cadena de signos de almohadilla (#) en lugar de un nmero entero cuyos dgitos mayor que el nmero de dgitos proporcionados en el modelo y el formato de nmero se redondea a dos decimales siempre en el modelo de formato. Oracle Application Express Oracle devuelve un error - NMERO NO VLIDO, si el modelo de formato no coincide con el nmero real devuelto por la base de datos. CONVERTIR DATOS TIPO CHAR A DATOS TIPO DATE. Para convertir una cadena de caracteres en un formato de fecha, utilice: TO_DATE ('CADENA DE CARACTERES', 'MODELO DE FECHA') Esta conversin tiene un valor NONDATE tipo STRING como "3 de noviembre de 2001 " y lo convierte en un valor de fecha. El modelo de formato indica al servidor que la cadena de caracteres "se parece":

Al hacer un personaje a la conversin, la fecha, el FX (formato exacto) modificador especifica la concordancia exacta para el argumento de la fuente y el modelo de formato de fecha. En el ejemplo siguiente, tenga en cuenta que "May10" no tiene espacio entre''de mayo "y "10 ". El modelo de formato FX coincide con el argumento de carcter, ya que tambin no tiene ningn espacio entre"Mon "y" DD ".

Academy

REGLAS DEL MODIFICADOR FX

Puntuacin y el texto se cita en el argumento de caracteres debe coincidir con las partes correspondientes del modelo de formato exactamente (excepto para el caso). El argumento de carcter no puede tener espacios en blanco adicionales. Sin fx, el Servidor de Oracle ignora los espacios en blanco extra. Los datos numricos en el argumento personaje debe tener el mismo nmero de dgitos que el elemento correspondiente en el modelo de formato. Sin fx, los nmeros en el argumento caracteres se pueden omitir los ceros iniciales.

FORMATOS DE FECHA: RR Y YY No ha pasado tanto tiempo desde el siglo pasado de 1900 a 2000. Junto con este cambio se produjo una considerable confusin en cuanto a si una fecha escrita en el 02-ENE-00 se interpretara como 02 de enero 1900 o enero 2, 2000. Afortunadamente, Oracle tiene una forma de mantener estas fechas almacenada y recuperable con el siglo correcto. Algunas reglas: Si el formato de fecha se especifica con el formato AA o AAAA, el valor de retorno ser en el mismo siglo en el siglo actual. Por lo tanto, si el ao es 1995 y se utiliza el formato AA o AAAA, todo est bien y las fechas sern en el 1900. Sin embargo, si el ao es 2004 y se utiliza el formato AA o AAAA para una fecha como 1989, obtendr 2.089. Tal vez no lo que pretende. Si el formato de fecha se especifica con el RR o el formato de RRRR, el valor de retorno tiene dos posibilidades. Si el ao es de entre 00 - 49: Fechas 0-49: La fecha ser en el siglo actual Fechas 50-99: La fecha ser en el siglo pasado Si el ao es de entre 50 - 99: Fechas 0-49: La fecha ser en el prximo siglo Fechas 50-99: La fecha ser en el siglo actual

Academy

Academy

EXPRESIONES CONDICIONALES

Academy

Contenido de la leccin: En esta leccin, usted aprender a: Comparar y constatar las funciones DECODE Y CASE Construir y ejecutar una consulta SQL que utilice correctamente las funciones DECODE y CASE Construir y ejecutar dos mtodos para la aplicacin de la lgica condicional IF-THEN-ELSE

EXPRESIONES CONDICIONALES Las dos expresiones condicionales son CASE and DECODE. Tu ya tienes estudios de NULL IF, que es lgicamente equivalente a la expresin CASE en que el CASE comparas dos expresiones. Si las dos expresiones son iguales, entonces devuelve nulo; si ellos no son iguales entonces devuelven la primera expresin. 1. CASE La expresin CASE bsicamente hace el trabajo de un IF-THEN-ELSE. Los tipos de datos de el CASE, WHEN and ELSE expresiones deben ser las mismas Sintaxis: CASE expresion WHEN expression_comparacion THEN return_expresion [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr] END

Academy

2. DECODE La funcin DECODE evala una expresin en una forma similar a la lgica IFTHEN-ELSE. DECODE compara una expresin con cada uno de los valores de bsqueda Sintaxis: DECODE (column1|expression, busqueda1, resultado1 [,busqueda2, resultado2,., [,default]) Si por defecto el valor se omite, un valor nulo se retorna en un valor de bsqueda no coincide con ninguno de los valores

Academy

CLAUSULAS DE UNION

Academy

Contenido de la leccin: En esta leccin, usted aprender a: Construir y ejecutar clusulas USING y ON de la ANSI-99. Construir y ejecutar consultas ANSI-99 que une tres tablas. CLAUSULA USING En una unin natural, si las columnas tienen el mismo nombre, pero diferente tipo de dato, la causa de unin produce un error. Para evitar esta situacin esta situacin, la clausula de unin puede ser modificada por una clausula USING. La clausula USING especifica las columnas que deberan ser usadas para la igualdad de unin. La consulta nos muestra un ejemplo de la clausula USING. Las columnas de referencia en la clusula USING no debera tener un calificador (nombre de la tabla o alias) en cualquier lugar de la instruccin SQL.

1. USING L a clausula USING nos sirve para indicar el nombre del campo que comparten que en este caso es JOB_ID y EMPLOYEE_ID. SELECT EMPLOYEE_ID AS EMPLEADO,FIRST_NAME AS NOMBRE,LAST_NAME AS APELLIDO,START_DATE AS DIA_INICIO FROM EMPLOYEES JOIN JOB_HISTORY USING(EMPLOYEE_ID)

Academy

La clausula USING nos permite utilizar la clausula WHERE para restringir datos ya sea de una tabla o de la otra SELECT EMPLOYEE_ID AS EMPLEADO,FIRST_NAME AS NOMBRE,LAST_NAME AS APELLIDO,START_DATE AS DIA_INICIO FROM EMPLOYEES JOIN JOB_HISTORY USING(EMPLOYEE_ID) WHERE EMPLOYEE_ID<200

CLAUSULA ON Y si las columnas que se unirn tienen nombres diferentes, o si la combinacin usa operadores de comparacin que no son de igualdad como son <,> o BETWEEN? No podemos usar USING, as que utilizamos una clusula ON. Esto permite una mayor variedad de condiciones de combinacin que se determine. La clusula ON tambin nos permite utilizar WHERE para restringir las filas de una o dos tablas

2. ON L a clausula ON nos permite presentar datos de tablas pudiendo tener mayor variedad de condiciones en la unin de esas tablas. SELECT e.last_name as "EMPLEADO", m.last_name as "GERENTE" FROM employees e JOIN employees m ON (e.manager_id = m.employee_id)

Academy

La misma consulta con una clausula WHERE para restringir filas seleccionadas. SELECT e.last_name as "EMPLEADO", m.last_name as "GERENTE" FROM employees e JOIN employees m ON (e.manager_id = m.employee_id) WHERE e.last_name like 'H%'

UNIENDO TRES TABLAS SELECT EMPLOYEE_ID AS COD_EMPLEADO, FIRST_NAME AS NOMBRE, LAST_NAME AS APELLIDO, J.START_DATE AS DIA_INI, D.DEPARTMENT_NAME AS NOM_DEPAR FROM EMPLOYEES E JOIN JOB_HISTORY J USING(EMPLOYEE_ID) JOIN DEPARTMENTS D ON (E.MANAGER_ID=D.MANAGER_ID);

Academy

FUNCIONES NULL

Academy

Contenido de la leccin: En esta leccin, usted aprender a: Demostrar y explicar la evaluacin de una funcin anidada Lista de por lo menos cuatro funciones generales que funcionan con cualquier tipo de datos y se refieren a la manipulacin de los valores nulos Explicar el uso de la COALESCE y las funciones NVL Explicar el uso de las funciones generales para hacer frente a los valores nulos en los datos Construir y ejecutar una consulta SQL que aplica correctamente NVL, NVL2, NULLIF y COALESCE funciones de una sola fila

Hasta ahora, solo tuvimos aplicado una lnea simple de cdigo con una funcin en declaraciones simples. Sin embargo es posible el anidado de funciones difciles. Es importante conocer como son evaluadas estas funciones anidadas. El siguiente ejemplo es una funcin anidada. El proceso de evaluacin de la funcin empieza desde el nivel interior hasta el exterior.

Paso 1. La fecha de contratacin ser aadida seis meses a este. Paso 2. El primer viernes del siguiente da sern identificados. Paso 3. El formato de fecha predeterminado ser el formato que se leer y se mostrar en pantalla el viernes en un formato similar a: Viernes, 18 de diciembre, 1987, y deber aparecer en el salida bajo la columna de Prxima evaluacin.

FUNCIONES RELACIONADAS A UN VALOR NULO Al inicio del curso, el trmino nulo fue introducido. Si ustedes recuerdan el valor de este trmino no evaluado, desconocido, no asignado o inaplicado. Nosotros no podemos buscar estos trminos para saber si es el mismo u otro valor, porque no sabes qu valor tiene este trmino.

Academy

Estas funciones no son iguales a nada, ni siquiera a cero, pero aunque estas no sean iguales a nada no dejan de ser importantes. Imaginemos esta pregunta: es verdad qu x=y?. Para saber la respuesta tendramos que conocer los valores de x y y. Oracle tiene 4 funciones generales para resolver estas funciones pertenecientes al uso de valores nulos. Estas son: NVL NVL2 NULLIF COALESCE

FUNCION NVL La funcin NVL convierte a un valor nulo en un valor conocido de un tipo de dato fijo, alguna fecha, carcter o nmero. Los tipos de datos de la columna valor nulo y del nuevo tipo de dato debe ser el mismo. La funcin NVL es: NVL (valor o columna que contiene el nulo, valor a reemplazar el nulo) La siguiente consulta utiliza la funcin NVL con datos de tipo carcter: SELECT NVL(comments, 'no comment') FROM D_PLAY_LIST_ITEMS; Los tipos de datos de la columna de valores nulos y la de nuevos valores muestran lo mismo que esta explicado en el siguiente ejemplo: NVL(auth_expense_amt,0) NVL(hire_date,01-JAN-97) NVL(speciality, None Yet)

Academy

Nosotros podemos utilizar las funciones NVL para convertir columnas que contienen valores nulos a nmeros antes de hacer clculos. Cuando un clculo aritmtico es interpretado como nulo, el resultado es nulo. La funcin NVL puede convertir el valor nulo a un nmero antes del clculo aritmtico evitando el resultado nulo.

FUNCIONES NVL2 Las funciones NVL2 se evalan con una expresin de 3 valores. El primer valor es no nulo, cuando la funcin NVL2 devuelve la segunda expresin. El primer valor es nulo cuando devuelve la tercera expresin. El primer valor tambin puede tener algn tipo de dato. La expresin 2 y 3 pueden tener cualquier valor excepto LONG. El tipo de dato del valor de retorno es siempre el mismo tipo de dato de la expresin 2, a menos que el dato de la expresin 2 sea un carcter, en tal caso el valor de retorno ser VARCHAR2. La funcin NVL es: NVL2(expresin 1 este valor puede ser nulo, expresin 2 es el valor de retorno si la expresin 1 no es nulo, expresin 3 valor a remplazar si la expresin 1 es nula) Un camino fcil para recordar la funcin NVL2 es repasando si la expresin 1 tiene un valor, se sustituye la expresin 2; si la expresin 1 es nula, se substituye la expresin 3. La funcin NVL2 muestra un dato nmero para la expresin 1 y un dato carcter para las expresiones 2 y 3.

Academy

FUNCIN NULLIF La funcin NULLIF compara dos funciones. Si estas son iguales, la funcin retorna nulo. Si estas no son iguales, la funcin retorna la primera expresin. La funcin NULLIF es:

FUNCIN COALESCE La funcin COALESCE es una extensin de la funcin NVL, excepto que COALESCE puede tomar mltiples valores. La palabra COALESCE significa TRABAJAR JUNTOS y esto significa lo que sucede. Si la primera expresin es nula, la funcin contina bajando la lnea hasta que una funcin no nula este funcionando. De acuerdo, si la primera expresin tiene un valor, la funcin retorna la primera expresin y la parada de la funcin.

La funcin COALESCE es: COALESCE (expresin 1, expresin 2, . Expresin n) Al examinar la expresin SELECT de la tabla empleados mostramos lo correcto. Qu empleados no reciben comisin?, cmo se llaman?, est aqu alguno que no recibe ningn porcentaje de comisin ni un salario?

Academy

Academy

CONCLUSIONES Como conclusin, podemos decir: 1. Es importante conocer que las funciones del SQL de Oracle cumplen diversas funciones y trabajan con distintos tipos de datos, as las funciones nos permiten trabajar de la mejor manera con cada tipo de dato, san estos nmeros ,fechas o caracteres. Asimismo permiten una combinacin de cada una de estas funciones (funciones anidadas) y convertir tipos de dato de uno a otro segn sean las necesidades del DBA. An ms all, tambin nos permiten evaluar funciones que en cierto modo podran darnos errores en los Querys, como por ejemplo las Funciones NULL y realizar distintos tipos de operaciones ms avanzadas que la simple conversin de datos.

2. El estudio prctico de estas funciones permite un correcto aprendizaje del SQL, conocer los posibles errores y poner en prctica las posibles combinaciones. No es posible aprender correctamente el Oracle SQL sin realizar muchos Querys donde nosotros podamos poner en prctica en una Base de Datos real (para el caso utilizamos el usuario Hr) y ver cules son los resultados y variaciones de cada una de las funciones estudiadas. 3. En nuestra formacin como futuros profesionales de la Informtica, es claro que el manejo de Bases de Datos es una parte esencial, as que la practica constante en el SQL, el Modelamiento y otros aspectos, nos llevaran a ser excelentes DBA y desarrollar perfectamente cualquier aplicacin que se nos encomiende en un futuro.

You might also like