uso de operadores set

27
Copyright © 2007, Oracle. All rights reserved. Uso de operadores SET

Upload: laura-beltran

Post on 13-Sep-2015

230 views

Category:

Documents


4 download

DESCRIPTION

SQL

TRANSCRIPT

  • Copyright 2007, Oracle. All rights reserved.

    Uso de operadores SET

  • Copyright 2007, Oracle. All rights reserved.8 - 2

    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

  • Copyright 2007, Oracle. All rights reserved.8 - 3

    Agenda

    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.8 - 4

    Operadores de conjunto

    UNION/UNION ALL

    A B A B

    A B

    INTERSECT

    A B

    MINUS

  • Copyright 2007, Oracle. All rights reserved.8 - 5

    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.

  • Copyright 2007, Oracle. All rights reserved.8 - 6

    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.

  • Copyright 2007, Oracle. All rights reserved.8 - 7

    Agenda

    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.8 - 8

    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.

  • Copyright 2007, Oracle. All rights reserved.8 - 9

    Agenda

    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.8 - 10

    Operador UNION

    A B

    El operador UNION devuelve las filas de ambas consultas tras la

    eliminacin de las dulicaciones.

  • Copyright 2007, Oracle. All rights reserved.8 - 11

    Uso del operador UNION

    Mostrar los detalles del trabajo actual y anteriores de todos los

    empleados. Mostrar cada empleado una sola vez.

    SELECT employee_id, job_id

    FROM employees

    UNION

    SELECT employee_id, job_id

    FROM job_history;

  • Copyright 2007, Oracle. All rights reserved.8 - 12

    Operador UNION ALL

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

    todas las duplicadas.

    A B

  • Copyright 2007, Oracle. All rights reserved.8 - 13

    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;

  • Copyright 2007, Oracle. All rights reserved.8 - 14

    Agenda

    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.8 - 15

    Operador INTERSECT

    A B

    El operador INTERSECT devuelve filas que son comunes a ambas

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

  • Copyright 2007, Oracle. All rights reserved.8 - 16

    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;

  • Copyright 2007, Oracle. All rights reserved.8 - 17

    Agenda

    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.8 - 18

    Operador MINUS

    A B

    El operador MINUS devuelve todas las filas distintas seleccionadas por la

    primera consulta, pero no presentes en la segunda consulta.

  • Copyright 2007, Oracle. All rights reserved.8 - 19

    Uso del operador MINUS

    Muestra el ID de los empleados cuyo cargo actual no lo han

    ocupado anteriormente.

    SELECT employee_id

    FROM employees

    MINUS

    SELECT employee_id

    FROM job_history;

  • Copyright 2007, Oracle. All rights reserved.8 - 20

    Agenda

    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.8 - 21

    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;

  • Copyright 2007, Oracle. All rights reserved.8 - 22

    Coincidencias de sentencias SELECT: Ejemplo

    Usando el operador UNION, muestre el identificador de

    empleado, jod ID, y el salario de todos los empleados.

    SELECT employee_id, job_id,salary

    FROM employees

    UNION

    SELECT employee_id, job_id,0

    FROM job_history;

  • Copyright 2007, Oracle. All rights reserved.8 - 23

    Agenda

    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.8 - 24

    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.

  • Copyright 2007, Oracle. All rights reserved.8 - 25

    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

  • Copyright 2007, Oracle. All rights reserved.8 - 26

    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.

  • Copyright 2007, Oracle. All rights reserved.8 - 27

    Prctica 8: Visin general

    En esta prctica, podr utilizar:

    El operador UNION.

    El operador INTERSECTION.

    El operador MINUS.