Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Marzo 2004
Definicin de Instancia
Cuando una BD de Oracle se arranca en un servidor (Unix,
Windows), Oracle crear un rea de memoria llamada System Global Area (SGA), y arranca varios procesos Oracle. La combinacin entre la SGA y los procesos, forman una Instancia de Oracle.
System Global Area (SGA)
Context Areas
Oracle Processes 2
DMR Consulting
Definicin de un Esquema
Un esquema es una coleccin de objetos de BD, que son accesibles por un usuario. Los objetos de un esquema, son estructuras lgicas que hacen referencia a datos de la BD. Los objetos de un esquema, pueden ser: tablas, vistas, secuencias, PLs No hay una relacin directa entre un tablespace y un esquema. Son entidades lgicas que no tienen nada que ver. Los objetos de un esquema, pueden pertenecer a diferentes tablespaces, y un tablespace puede almacenar objetos de diferentes esquemas. Normalmente los nombres de los esquemas, se llaman igual que el nombre de los usuario.
3
DMR Consulting
Los ms comunes son: select, insert, update, delete sobre tablas, alter session, para que un usuario se puede conectar a Oracle, y create o modify.
4
DMR Consulting
5
DMR Consulting
SPALINK01
6
DMR Consulting
Sentencias SQL
SELECT INSERT UPDATE DELETE MERGE
8
DMR Consulting
SELECT FROM
9
DMR Consulting
10
DMR Consulting
11
DMR Consulting
SELECT FROM
12
DMR Consulting
13
DMR Consulting
14
DMR Consulting
15
DMR Consulting
Las cadenas de caracteres y los valores de fechas se escriben entre comillas simples. Los valores de caracteres son sensibles a maysculas/minsculas y los de fecha, al formato.
16
DMR Consulting
Condiciones de comparacin
Significado Igual que Mayor que Mayor o igual que Menor que Menor o igual que No igual a
17
DMR Consulting
Condiciones de comparacin
Operador
Significado
BETWEEN ...AND...
IN(set) LIKE IS NULL
Coincide con cualquiera de una lista de valores Coincide con un patrn de caracteres Es un valor nulo
18
DMR Consulting
Condiciones lgicas
Operador
Significado
AND
OR
NOT
19
DMR Consulting
Clusula de ordenacin
Ordene filas con la clusula ORDER BY
20
DMR Consulting
21
DMR Consulting
22
DMR Consulting
LENGTH('HelloWorld')
INSTR('HelloWorld', 'W') LPAD(salary,10,'*') RPAD(salary, 10, '*') TRIM('H' FROM 'HelloWorld')
23
DMR Consulting
10
6 *****24000 24000***** elloWorld
Funciones de Fecha
Descripcin Nmero de meses entre dos fechas Suma meses de calendario a una fecha Siguiente da de la fecha especificada ltimo da del mes Redondea la fecha Trunca la fecha
'28-FEB-95'
26
DMR Consulting
1 SELECT last_name, salary, NVL(commission_pct, 0), (salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL FROM employees;
1
27
DMR Consulting
SELECT last_name, job_id, salary, DECODE(job_id, 'IT_PROG', 1.10*salary, 'ST_CLERK', 1.15*salary, 'SA_REP', 1.20*salary, salary) REVISED_SALARY FROM employees;
28
DMR Consulting
29
DMR Consulting
30
DMR Consulting
Sintaxis JOIN
Utilice una unin para consultar datos de ms de una tabla. SELECT FROM WHERE table1.column, table2.column table1, table2 table1.column1 = table2.column2;
Escriba la condicin de unin en la clusula WHERE. Escriba en el nombre de columna el nombre de tabla como prefijo si aparece el mismo nombre de columna en ms de una tabla.
31
DMR Consulting
Uso de JOIN
SELECT employees.employee_id, employees.last_name, employees.department_id, departments.department_id, departments.location_id FROM employees, departments WHERE employees.department_id = departments.department_id;
32
DMR Consulting
SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e , departments d WHERE e.department_id = d.department_id;
33
DMR Consulting
DEPARTMENTS
EMPLOYEES
Tambin puede utilizar una unin externa para ver filas que no cumplen la condicin de unin.
El operador de unin externa es el signo ms (+).
SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column(+) = table2.column; SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column = table2.column(+);
35
DMR Consulting
WHERE
e.department_id(+) = d.department_id ;
36
DMR Consulting
37
DMR Consulting
EMPLOYEES
38
DMR Consulting
AVG
COUNT MAX MIN STDDEV SUM VARIANCE
39
DMR Consulting
40
DMR Consulting
41
DMR Consulting
Subconsultas
42
DMR Consulting
Sintaxis de Subconsulta
select_list table);
La subconsulta (consulta interna) se ejecuta una vez antes de la consulta principal. El resultado de la subconsulta lo utiliza la consulta principal (consulta externa).
43
DMR Consulting
Uso de Subconsulta
SELECT last_name FROM employees 11000 WHERE salary > (SELECT salary FROM employees WHERE last_name = 'Abel');
44
DMR Consulting
Visualice los detalles de los empleados dirigidos por el mismo director y que trabajen en el mismo departamento que los empleados cuyo EMPLOYEE_ID sea 178 o 174.
SELECT employee_id, manager_id, department_id FROM employees WHERE (manager_id, department_id) IN (SELECT manager_id, department_id FROM employees WHERE employee_id IN (178,174)) AND employee_id NOT IN (178,174);
45
DMR Consulting
SELECT
FROM
WHERE AND
a.last_name, a.salary, a.department_id, b.salavg employees a, (SELECT department_id, AVG(salary) salavg FROM employees GROUP BY department_id) b a.department_id = b.department_id a.salary > b.salavg;
46
DMR Consulting
Subconsultas Correlacionadas
SELECT column1, column2, ... outer FROM table1 WHERE column1 operator (SELECT FROM WHERE
47
DMR Consulting
48
DMR Consulting
Manipulacin de Datos
49
DMR Consulting
50
DMR Consulting
Inserte una fila nueva que contenga valores para cada columna.
INSERT INTO departments(department_id, department_name, manager_id, location_id) VALUES (70, 'Public Relations', 100, 1700); 1 row created.
No utilice la clusula VALUES. Haga coincidir el nmero de columnas de la clusula INSERT con el de la subconsulta.
52
DMR Consulting
53
DMR Consulting
55
DMR Consulting
56
DMR Consulting
Anexo
57
DMR Consulting
Best Practices
En consultas de tipo UNION utilizar UNION ALL si no es necesario eliminar duplicados o si las consultas que participan de la UNION no devolvern duplicados (UNION elimina filas duplicadas y UNION ALL no). Evitar el uso de criterios de filtro NOT IN en subconsultas. Ej. WHERE A.CAMPO1 NOT IN (SELECT CAMPO1 FROM B)
ALTERNATIVAS SELECT A.CAMPO1 FROM A,B WHERE A.CAMPO1=B.CAMPO1(+) AND B.CAMPO1 IS NULL SELECT A.CAMPO1 FROM A WHERE 0<(SELECT COUNT(*) FROM B) WHERE A.CAMPO1=B.CAMPO1)
SELECT A.CAMPO1 FROM A WHERE NOT EXISTS (SELECT X FROM B) WHERE A.CAMPO1=B.CAMPO1)
En las sentencias de insercin especificar todos los campos que van a ser informados:
CORRECTO INSERT INTO A (C1,C2,C3) VALUES(A,B,SYSDATE); INCORRECTO INSERT INTO A VALUES(A,B,SYSDATE);
(si se aade una columna a la tabla esta sentencia deja de ser vlida. Lo que significa que si aadimos una columna a la tabla se tienen que revisar todos los programas para modificar las SQL que insertan en la tabla)
58
DMR Consulting
Best Practices
Evitar la conversin implcita. La comparacin de campos en la clusula WHERE ha de ser entre mismo tipo de datos. Ejemplo: (suponiendo que el campo C1 es VARCHAR2) SELECT *
FROM A WHERE C1=500;
Evitar el uso de funciones en la clusula WHERE sobre campos indexados (ya que impiden que se pueda usar el ndice) Ejemplo (supongamos que el campo FECHA_NACIMIENTO est indexado)
(INCORRECTO) SELECT * FROM EMPLEADOS WHERE TO_CHAR(FECHA_NACIMIENTO,dd/mm/yyyy)=01/01/2005; (CORRECTO) SELECT * FROM EMPLEADOS WHERE FECHA_NACIMIENTO=TO_DATE(01/01/2005,dd/mm/yyyy);
59
DMR Consulting
Best Practices
Utilizacin de Alias para denominar las tablas. As evitaremos problemas de ambigedad y facilitaremos el trabajo a Oracle. Uso de EXIST en vez de IN. Comprobar que tenemos (N de tablas -1) condiciones en el where antes de lanzar una consulta.
60
DMR Consulting