RESUMEN

funciones

SUBSTR = encontrar cadenas de caraceteres en una cadena de carqacteres

SELECT SUBSTR('ABCGATODEF',4,4) as "Subcadena" FROM DUAL;

SELECT

 REPLACE( SUBSTR(first_name,1,1) || '. '|| LAST_NAME ,'E','F')

FROM EMPLOYEES;

length = medir el tamaño de una cadena de caracteres ej gato = 4

SELECT e.*, LENGTH (e.FIRST_NAME) FROM EMPLOYEES e WHERE LENGTH (e.FIRST_NAME) = 5;

LPAD = Rellena todos los Campos de el lado izquierdo hasta completar el valor especificado

SELECT LPAD(salary,15,' ') "EJEMPLO", LPAD(FIRST_NAME,15,'.') "Nombre" FROM EMPLOYEES;

RPAD = Rellena todos los Campos de el lado izquierdo hasta completar el valor especificado

SELECT RPAD(salary,15,' ') "EJEMPLO", RPAD(FIRST_NAME,15,'.') "Nombre" FROM EMPLOYEES;

USO DE RPAD Y LPAD SIMULTANEAMNETE

SELECT LPAD(salary,15,' ') "EJEMPLO", RPAD(FIRST_NAME,15,'.') "Nombre" FROM EMPLOYEES;

REPLACE = Remplasa el caracter elegido por uno seleccionado asi

SELECT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(lower(first_name), 'a' ,'8'),'e','6'),'i','5'),'o','x'),'u','2') FROM employees;

/ FUNCIONES MATEMATICAS /

ABS = da el valor absoluto de un numero

SELECT ABS(-20) FROM dual;

CEIL redondea los valores hacia arriba

SELECT CEIL(10.8) FROM dual;

FLOOR redonde el valor hacia abajo

SELECT FLOOR(10.8) FROM dual;

MOD(x,y) devuelve el residuo de una divicion de x divido entre y

SELECT MOD(7,4) FROM dual;

POWER(X,Y) ptencia X a la Y veces

SELECT POWER(3,2) FROM dual;

-- ROUND(n,d) redondea n en d numero de decimales

SELECT round(123.899,0) FROM dual;

SING(x) devuelve 1 cuando x es positivo -1 cuando es negativo y 0 cuado el valor es 0

SELECT sign(-120) from dual;

SQRT(x) raiz cuadrda de x

SELECT SQRT(9) FROM dual;

TRUNC(N,D) trunca un número a la cantidad de decimales especificada por el segundo parametro

SELECT trunc(1234.5678,2) FROM
dual;

TO_CHAR de formato a los datos de la tabla

SELECT sysdate,TO_CHAR(sysdate,'HH:MI AM'),'SON LAS '|| TO_CHAR(sysdate,'HH:MM:SS DD/MM/YYYY') FROM DUAL;

HIRE_DATE da la fecha de ingreso al sistema

SELECT LAST_NAME,HIRE_DATE from EMPLOYEES where TO_CHAR(hire_date,'yyyy')Between 2008 and 2010;

#SEGUNDO EXPO
##NATURAL JOIN

Toma todas la columnas que tengan el mismo nombre en las taablas a comparar por ejemplo en las tablas EMPLOYEERS y DEPARTMENS como tienen las columnas MANAGAER_ID y DEPARTAMENT_ID tomara las dos columnas para que sean iguales en tal caso de no serlo no mostrar los datos

SELECT COUNT(e.DEPARTMENT_ID), d.DEPARTMENT_NAME FROM EMPLOYEES e NATURAL JOIN DEPARTMENTS d

GROUP BY e.DEPARTMENT_ID, d.DEPARTMENT_NAME;

LEFT OUTER JOIN

el resultado contendra todos los datos de la tabla izquierda sin importar si existen o no en la tabla derecha

*

SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, JH.END_DATE FROM EMPLOYEES E LEFT OUTER JOIN JOB_HISTORY JH ON E.EMPLOYEE_ID = JH.EMPLOYEE_ID;

-- ejemplo comun

SELECT E.EMPLOYEE_ID, D.DEPARTMENT_ID,d.DEPARTMENT_NAME FROM EMPLOYEES e LEFT JOIN DEPARTMENTS d ON (e.DEPARTMENT_ID = D.DEPARTMENT_ID);

RIGHT OUTER JOIN

el resultado contendra todos los datos de la tabla derecha sin importar si existen o no en la tabla izquierda

SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, JH.END_DATE FROM EMPLOYEES E RIGHT OUTER JOIN JOB_HISTORY JH ON E.EMPLOYEE_ID = JH.EMPLOYEE_ID;

--ejemplo comun

SELECT E.EMPLOYEE_ID, D.DEPARTMENT_ID,d.DEPARTMENT_NAME FROM EMPLOYEES e RIGHT JOIN DEPARTMENTS d ON (e.DEPARTMENT_ID = D.DEPARTMENT_ID);

INTERSECT

es el operador que permite realizar la interseccion entre dos consultas ejemplo

SELECT FROM EMPLEADOS where EMPLOYEE_ID< 110 INTERSECT SELECT FROM EMPLOYEES where EMPLOYEE_ID> 104;