Vous êtes sur la page 1sur 27

Uso de operadores SET

Copyright 2007, Oracle. All rights reserved.

Objectivos
Despus de completar esta leccin, usted debera ser capaz
de hacer lo siguiente:
Describir los operadores de conjunto.
Utilizar un operador de conjunto para combinar varias
consultas en una sola consulta.
Controlar el orden de las filas devueltas

8-2

Copyright 2007, Oracle. All rights reserved.

Agenda

8-3

Operadores de conjunto: Tipos y directrices.


Tablas utilizadas.
Operador UNION y UNION ALL.
Operador INTERSECT.
Operador MINUS.
Coincidencia de sentencias SELECT.
Uso de la clusula ORDER BY en operaciones de conjunto.

Copyright 2007, Oracle. All rights reserved.

Operadores de conjunto
A

UNION/UNION ALL

INTERSECT

MINUS

8-4

Copyright 2007, Oracle. All rights reserved.

Operadores de conjunto directrices


El nmero de columnas debe coincidir en las sentencias
SELECT.
El tipo de datos de cada columna en la segunda consulta
debe coincidir con el tipo de datos de su columna
correspondiente en la primera consulta.
Se puede utilizar parntesis para alterar la secuencia de
ejecucin.
La clusula ORDER BY debe aparecer al final de la sentencia.

8-5

Copyright 2007, Oracle. All rights reserved.

Servidor Oracle y operadores de conjunto


Las filas duplicas son eliminadas automticamente excepto
en la UNION ALL.
Los nombres de columnas de la primera consulta
aparecern en el resultado.
La salida se ordena en orden ascendente cogiendo la
primera columna de la primera cabecera, por defecto,
excepto en UNION ALL.

El tamao del tipo de la salida ser el del tamao del ms


grande.

8-6

Copyright 2007, Oracle. All rights reserved.

Agenda

8-7

Operadores de conjunto: Tipos y directrices.


Tablas utilizadas.
Operador UNION y UNION ALL.
Operador INTERSECT.
Operador MINUS.
Coincidencia de sentencias SELECT.
Uso de la clusula ORDER BY en operaciones de conjunto.

Copyright 2007, Oracle. All rights reserved.

Tablas utilizadas en esta leccin


Las tablas utilizadas en esta leccin son:
EMPLOYEES: Proporciona informacin detallada sobre todos
los empleados actuales.
JOB_HISTORY: Registra los detalles de la fecha de inicio y
final del trabajo anterior, y el nmero de identificacin de
trabajo y departamento, cuando un empleado cambia
puestos de trabajo.

8-8

Copyright 2007, Oracle. All rights reserved.

Agenda

8-9

Operadores de conjunto: Tipos y directrices.


Tablas utilizadas.
Operador UNION y UNION ALL.
Operador INTERSECT.
Operador MINUS.
Coincidencia de sentencias SELECT.
Uso de la clusula ORDER BY en operaciones de conjunto.

Copyright 2007, Oracle. All rights reserved.

Operador UNION

El operador UNION devuelve las filas de ambas consultas tras la


eliminacin de las dulicaciones.

8 - 10

Copyright 2007, Oracle. All rights reserved.

Uso del operador UNION


Mostrar los detalles del trabajo actual y anteriores de todos los
empleados. Mostrar cada empleado una sola vez.
SELECT
FROM
UNION
SELECT
FROM

employee_id, job_id
employees
employee_id, job_id
job_history;

8 - 11

Copyright 2007, Oracle. All rights reserved.

Operador UNION ALL

El operador UNION ALL devuelve las filas de ambas consultas, incluidas


todas las duplicadas.

8 - 12

Copyright 2007, Oracle. All rights reserved.

Uso del operador UNION ALL


Mostrar los actuales y previos departmentos de todos los emp.
SELECT employee_id, job_id, department_id
FROM
employees
UNION ALL
SELECT employee_id, job_id, department_id
FROM
job_history
ORDER BY employee_id;

8 - 13

Copyright 2007, Oracle. All rights reserved.

Agenda

8 - 14

Operadores de conjunto: Tipos y directrices.


Tablas utilizadas.
Operador UNION y UNION ALL.
Operador INTERSECT.
Operador MINUS.
Coincidencia de sentencias SELECT.
Uso de la clusula ORDER BY en operaciones de conjunto.

Copyright 2007, Oracle. All rights reserved.

Operador INTERSECT

El operador INTERSECT devuelve filas que son comunes a ambas


cosultas. El orden de las consultas no altera el resultado.

8 - 15

Copyright 2007, Oracle. All rights reserved.

Uso del operador INTERSECT


Muestra el ID de los empleados y los identificadores de trabajo
de aquellos empleados que actualmente tienen un puesto de
trabajo que es lo mismo que su anterior (es decir, se cambi de
trabajo, pero ahora han vuelto a hacer el mismo trabajo que
hicieron previamente).
SELECT employee_id, job_id
FROM
employees
INTERSECT
SELECT employee_id, job_id
FROM
job_history;

8 - 16

Copyright 2007, Oracle. All rights reserved.

Agenda

8 - 17

Operadores de conjunto: Tipos y directrices.


Tablas utilizadas.
Operador UNION y UNION ALL.
Operador INTERSECT.
Operador MINUS.
Coincidencia de sentencias SELECT.
Uso de la clusula ORDER BY en operaciones de conjunto.

Copyright 2007, Oracle. All rights reserved.

Operador MINUS

El operador MINUS devuelve todas las filas distintas seleccionadas por la


primera consulta, pero no presentes en la segunda consulta.

8 - 18

Copyright 2007, Oracle. All rights reserved.

Uso del operador MINUS


Muestra el ID de los empleados cuyo cargo actual no lo han
ocupado anteriormente.
SELECT
FROM
MINUS
SELECT
FROM

employee_id
employees
employee_id
job_history;

8 - 19

Copyright 2007, Oracle. All rights reserved.

Agenda

8 - 20

Operadores de conjunto: Tipos y directrices.


Tablas utilizadas.
Operador UNION y UNION ALL.
Operador INTERSECT.
Operador MINUS.
Coincidencia de sentencias SELECT.
Uso de la clusula ORDER BY en operaciones de conjunto.

Copyright 2007, Oracle. All rights reserved.

Coincidencias de sentencias SELECT


Usando el operador UNION, muestre el identificador de
localizacin, nombre de departamento, y el estado donde
est localizado.
Usted debe coincidir con el tipo de datos (mediante
funciones de conversin o de cualquier otro tipo) cuando las
columnas no existen en una o la otra tabla.
SELECT location_id, department_name "Department",
TO_CHAR(NULL) "Warehouse location"
FROM departments
UNION
SELECT location_id, TO_CHAR(NULL) "Department",
state_province
FROM locations;

8 - 21

Copyright 2007, Oracle. All rights reserved.

Coincidencias de sentencias SELECT: Ejemplo


Usando el operador UNION, muestre el identificador de
empleado, jod ID, y el salario de todos los empleados.
SELECT
FROM
UNION
SELECT
FROM

employee_id, job_id,salary
employees

employee_id, job_id,0
job_history;

8 - 22

Copyright 2007, Oracle. All rights reserved.

Agenda

8 - 23

Operadores de conjunto: Tipos y directrices.


Tablas utilizadas.
Operador UNION y UNION ALL.
Operador INTERSECT.
Operador MINUS.
Coincidencia de sentencias SELECT.
Uso de la clusula ORDER BY en operaciones de conjunto.

Copyright 2007, Oracle. All rights reserved.

Uso de la clusula ORDER BY en operaciones de


conjunto
La clusula ORDER BY slo puede aparecer una vez al final
de la consulta compuesta.
Las consultas componentes no pueden tener una clusla
ORDER BY individual.
La clusula ORDER BY slo reconoce las columnas de la
primera consulta SELECT.
Por defecto, la primera columna de la primera consulta
SELECT se utiliza para ordenar la salida de forma
ascendente.

8 - 24

Copyright 2007, Oracle. All rights reserved.

Uso de la clusula ORDER BY en operaciones de


conjunto
Si se quiere ordenar el resultado cuando se tiene ms de dos
conjuntos no se pueden utilizar las columnas de la primera
consulta sino que debemos utilizar el nmero de la columna.
Adems podemos ordenar por conjuntos primero y luego por
columna, para hacer esto podemos inventarnos una columna
ficticia.
SELECT columna1, columna2, columna3, 2
FROM
T1
UNION
SELECT columna1, columna2, columna3, 1
FROM
T2
UNION
SELECT columna1, columna2, columna3, 3
FROM
T3
ORDER BY 4,2

8 - 25

Copyright 2007, Oracle. All rights reserved.

Resumen
En esta leccin, usted debe haber aprendido a utilizar:
UNION para devolver todas las filas distintas.
UNION ALL para devolver todas las filas, includas las
duplicadas.
INTERSECT para devolver todas las filas que son
compartidos por ambas consultas.
MINUS para devolver todas las filas distintas que son
seleccionados por la primera consulta, pero no por la
segunda.
ORDER BY se coloca al final de la sentencia.

8 - 26

Copyright 2007, Oracle. All rights reserved.

Prctica 8: Visin general


En esta prctica, podr utilizar:
El operador UNION.
El operador INTERSECTION.
El operador MINUS.

8 - 27

Copyright 2007, Oracle. All rights reserved.

Vous aimerez peut-être aussi