Sie sind auf Seite 1von 22

Visualizacin de Datos de Varias Tablas

4
Objetivos

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Al finalizar esta leccin, debera estar capacitado para:

Escribir sentencias SELECT para acceder a datos de ms de una tabla utilizando uniones de igualdad y de no igualdad Visualizar datos que generalmente no cumplen una condicin de unin utilizando uniones externas Unir una tabla consigo misma utilizando una autounin

4-2

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-1

Obtencin de Datos de Varias Tablas


EMPLOYEES DEPARTMENTS

4-3

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Productos Cartesianos

Un producto Cartesiano se forma cuando: Una condicin de unin est omitida. Una condicin de unin no es vlida. Todas las filas de la primera tabla se unen a todas las filas de la segunda tabla.

Para evitar un producto Cartesiano, incluya siempre una condicin de unin vlida en una clusula WHERE.

4-4

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-2

Generacin de un Producto Cartesiano


EMPLOYEES (20 filas) DEPARTMENTS (8 filas)

Producto Cartesiano: 20x8=160 filas

4-5

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Tipos de Uniones
Uniones de Propiedad de Oracle (8i y anterior): Uniones que cumplen con SQL: 1999:

Unin de igualdad Unin de no igualdad Unin externa Autounin

Uniones cruzadas Uniones naturales Clusula USING Uniones externas completas o de dos lados Condiciones de unin arbitrarias para uniones externas

4-6

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-3

Unin de Tablas Utilizando la Sintaxis Oracle


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.

4-7

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Qu Es una Unin de Igualdad?


EMPLOYEES DEPARTMENTS

Clave ajena Clave primaria


4-8 Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-4

Recuperacin de Registros con Uniones de Igualdad


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;

4-9

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Condiciones de Bsqueda Adicionales Utilizando el Operador AND


EMPLOYEES DEPARTMENTS

4-10

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-5

Cualificacin de Nombres de Columna Ambiguos



Utilice prefijos de tabla para cualificar nombres de columna que estn en varias tablas. Mejore el rendimiento utilizando prefijos de tabla. Distinga las columnas que tengan nombres idnticos pero que residan en tablas diferentes utilizando alias de columna.

4-11

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Uso de Alias de Tabla


Simplifique las consultas utilizando alias de tabla. Mejore el rendimiento utilizando prefijos de tabla.

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;

4-12

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-6

Unin de Ms de Dos Tablas


EMPLOYEES DEPARTMENTS LOCATIONS

Para unir n tablas, necesita un mnimo de n-1 condiciones de unin. Por ejemplo, para unir tres tablas, se requiere un mnimo de dos uniones.
Copyright Oracle Corporation, 2001. Todos los derechos reservados.

4-13

Uniones de No Igualdad
EMPLOYEES JOB_GRADES

El salario de la tabla EMPLOYEES debe estar entre el salario menor y el mayor de la tabla JOB_GRADES.

4-14

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-7

Recuperacin de Registros con Uniones de No Igualdad


SELECT e.last_name, e.salary, j.grade_level FROM employees e, job_grades j WHERE e.salary BETWEEN j.lowest_sal AND j.highest_sal;

4-15

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Uniones Externas

DEPARTMENTS

EMPLOYEES

No hay empleados en el departamento 190.


4-16 Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-8

Sintaxis de Uniones Externas


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(+);

4-17

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Uso de Uniones Externas

SELECT e.last_name, e.department_id, d.department_name FROM employees e, departments d WHERE e.department_id(+) = d.department_id ;

4-18

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-9

Autouniones

EMPLOYEES (WORKER)

EMPLOYEES (MANAGER)

MANAGER_ID en la tabla WORKER es igual a EMPLOYEE_ID en la tabla MANAGER.


4-19 Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Unin de una Tabla Consigo Misma


SELECT worker.last_name || ' works for ' || manager.last_name FROM employees worker, employees manager WHERE worker.manager_id = manager.employee_id ;

4-20

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-10

Prctica 4, Parte Uno: Visin General


Esta prctica cubre la escritura de consultas para unir tablas utilizando la sintaxis Oracle.

4-21

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Unin de Tablas Utilizando la Sintaxis SQL: 1999


Utilice una unin para consultar datos de ms de una tabla.
SELECT table1.column, table2.column FROM table1 [CROSS JOIN table2] | [NATURAL JOIN table2] | [JOIN table2 USING (column_name)] | [JOIN table2 ON(table1.column_name = table2.column_name)] | [LEFT|RIGHT|FULL OUTER JOIN table2 ON (table1.column_name = table2.column_name)];

4-22

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-11

Creacin de Uniones Cruzadas


La clusula CROSS JOIN produce varios productos entre dos tablas. Es lo mismo que un producto Cartesiano entre las dos tablas.

SELECT last_name, department_name FROM employees CROSS JOIN departments ;

4-23

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Creacin de Uniones Naturales


La clusula NATURAL JOIN se basa en todas las columnas de las dos tablas que tienen el mismo nombre. Selecciona filas de las dos tablas que tienen los mismos valores en todas las columnas coincidentes. Si las columnas que tienen el mismo nombre tienen distintos tipos de dato, se devuelve un error.

4-24

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-12

Recuperacin de Registros con Uniones Naturales


SELECT department_id, department_name, location_id, city FROM departments NATURAL JOIN locations ;

4-25

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Creacin de Uniones con la Clusula USING

Si varias columnas tienen los mismos nombres pero los tipos de dato no coinciden, la clusula NATURAL JOIN se puede modificar con la clusula USING para especificar las columnas que se deben utilizar para una unin de igualdad. Utilice la clusula USING para hacer coincidir solamente una columna cuando coincidan varias. No utilice un nombre o alias de tabla en las columnas de referencia. Las clusulas NATURAL JOIN y USING son mutuamente excluyentes.

4-26

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-13

Recuperacin de Registros con la Clusula USING


SELECT e.employee_id, e.last_name, d.location_id FROM employees e JOIN departments d USING (department_id) ;

4-27

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Creacin de Uniones con la Clusula ON

La condicin de unin para la unin natural es bsicamente una unin de igualdad de todas las columnas con el mismo nombre. Para especificar condiciones arbitrarias o especificar columnas para unir, se utiliza la clusula ON. La condicin de unin se separa de otras condiciones de bsqueda. La clusula ON facilita la comprensin del cdigo.

4-28

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-14

Recuperacin de Registros con la Clusula ON


SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e JOIN departments d ON (e.department_id = d.department_id);

4-29

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Creacin de Uniones en Tres Sentidos con la Clusula ON


SELECT FROM JOIN ON JOIN ON employee_id, city, department_name employees e departments d d.department_id = e.department_id locations l d.location_id = l.location_id;

4-30

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-15

Uniones INNER frente a OUTER

En SQL: 1999, la unin de dos tablas que devuelve solamente las filas coincidentes es una unin interna. Una unin entre dos tablas que devuelve los resultados de la unin interna as como las tablas izquierda (o derecha) de filas no coincidentes es una unin externa izquierda (o derecha). Una unin entre dos tablas que devuelve los resultados de una unin interna as como los de una unin izquierda y derecha es una unin externa completa.

4-31

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

LEFT OUTER JOIN

SELECT e.last_name, e.department_id, d.department_name FROM employees e LEFT OUTER JOIN departments d ON (e.department_id = d.department_id) ;

4-32

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-16

RIGHT OUTER JOIN

SELECT e.last_name, e.department_id, d.department_name FROM employees e RIGHT OUTER JOIN departments d ON (e.department_id = d.department_id) ;

4-33

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

FULL OUTER JOIN

SELECT e.last_name, e.department_id, d.department_name FROM employees e FULL OUTER JOIN departments d ON (e.department_id = d.department_id) ;

4-34

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-17

Condiciones Adicionales
SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e JOIN departments d ON (e.department_id = d.department_id) AND e.manager_id = 149 ;

4-35

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

Resumen
En esta leccin, debera haber aprendido a utilizar uniones para visualizar datos de varias tablas en:

Sintaxis de propiedad de Oracle para las versiones 8i y anteriores Sintaxis conforme con SQL: 1999 para la versin 9i

4-36

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-18

Prctica 4, Parte Dos: Visin General


Esta prctica cubre los siguientes temas: Unin de tablas utilizando una unin de igualdad Realizacin de uniones externas y autouniones Adicin de condiciones

4-37

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

4-38

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-19

4-39

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

4-40

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-20

4-41

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

4-42

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-21

4-43

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

4-44

Copyright Oracle Corporation, 2001. Todos los derechos reservados.

<Nombre del curso> <Nmero de leccin>-22

Das könnte Ihnen auch gefallen