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;