1.22k likes | 1.39k Views
SICI-4030 Base de Datos. Prof. Nelliud D. Torres SQL - Avanzado– DML DIRECTIVA SELECT. CONTENIDO. UNIÓN DE DOS O MÁS TABLAS HACIENDO JOIN CON IN Y EXITS UNIENDO MÚLTIPLES TABLAS RELATIONAL SET OPERATORS UNION UNION ALL INTERSECT MINUS JOIN OPERATORS INNER JOIN (Natural) OUTER JOIN
E N D
SICI-4030Base de Datos Prof. Nelliud D. Torres SQL - Avanzado– DML DIRECTIVA SELECT
CONTENIDO • UNIÓN DE DOS O MÁS TABLAS • HACIENDO JOIN CON IN Y EXITS • UNIENDO MÚLTIPLES TABLAS • RELATIONAL SET OPERATORS • UNION • UNION ALL • INTERSECT • MINUS • JOIN OPERATORS • INNER JOIN (Natural) • OUTER JOIN • Left Outer Join • Right Outer Join • Full Outer Join • CROSS JOIN • Ejemplos de Left, Right y Full Join • CONCEPTOS AVANZADOS MISCELÁNEOS • SELF JOIN • PRODUCT • SQL PLUS • FUNCIONES DE SQL • Date & Time • Numeric • String • Conversion • VIEWS • EJERCICIOS DE PRÁCTICA
UNIÓN DE DOS O MÁS TABLAS Volver a los Objetivos
Haciendo Consultas de Múltiples Tablas • Cuando hacemos consultas de más de una tabla, estas tienen que unirse (Join). • Se unen (join) las tablas al encontrar columnas que pareen (match) los datos. • Las tablas que se unen suelen utilizar una condición con la cláusula WHERE que limitan la cantidad de filas que se van a mostrar.
Unión (Joining) de Dos Tablas • En la clausula SELECT se listan todas las columnas que se desean mostrar. • En la clausula FROM se listan todas las tablas a las que se les hace referencia en el query. • En la clausula WHERE se mencionan las filas que tienen valores comunes de acuerdo a ciertas columnas.
Cuatro tablas se utilizan para este join Cada par de tablas requieren una condición de cotejo en la cláusula WHERE en donde se parean los Primary Keys con los Foreign Keys Otro Ejemplo de Unión de Multiples Tablas • Muestra toda la información necesária para crear un invoice para la orden número 1006 SELECT CUSTOMER_T.CUSTOMER_ID, CUSTOMER_NAME, CUSTOMER_ADDRESS, CITY, SATE, POSTAL_CODE, ORDER_T.ORDER_ID, ORDER_DATE, QUANTITY, PRODUCT_DESCRIPTION, STANDARD_PRICE, (QUANTITY * UNIT_PRICE) FROM CUSTOMER_T, ORDER_T, ORDER_LINE_T, PRODUCT_T WHERE CUSTOMER_T.CUSTOMER_ID = ORDER_LINE.CUSTOMER_ID AND ORDER_T.ORDER_ID = ORDER_LINE_T.ORDER_ID AND ORDER_LINE_T.PRODUCT_ID = PRODUCT_PRODUCT_ID AND ORDER_T.ORDER_ID = 1006; Pag: 340
De la tabla CUSTOMER_T De la tabla PRODUCT_T De la tabla ORDER_T Figure 8-2 El resultado que se obtiene al buscar entre las cuatro tablas Pag: 340
JOIN, IN, EXITS Volver a los Objetivos
Haciendo JOIN con IN y EXISTS • Las tablas pueden ser unidas utilizando las clausulas IN o EXISTS • Utilice el operador IN dentro de un sub-query • Utilice el operador EXISTS para obtener datos de más de una tabla
Restrición al Unir (Join) Tablas (utilizando el IN) Se obtiene el mismo resultado, sin embargo en este ejemplo no se coteja directamente el PK de una tabla contra el FK de la otra.
Uso del operador IN para obtener información de una orden Pag: 341
Uso del operador EXISTS para obtener información de una orden En el próximo slide se comparan ambos formatos. Pag: 343
Comparación IN y EXITS Se obtiene el mismo resultado,
UNIENDO MÚLTIPLES TABLAS Volver a los Objetivos
Uniendo (Join) Múltiples Tablas • Las condiciones muestran como las columnas se relacionan por cada dos tablas
Uniendo Múltiples Tablas Paso a Paso - 1 • En la clausula SELECT hay que nombrar todas las columnas que queremos mostrar • Cualificar el nombre de la columna si hace falta (alias) • En la clausula FROM, nombrar todas las tablas afectadas • Incluir las tablas que se utilizan en la cláusula WHERE (definidas en el FROM), aún si no se mencionan en la cláusula SELECT
Uniendo Múltiples Tablas Paso a Paso - 2 • Tomar un par de tablas y relacionarlas • Indicar en la cláusula WHERE, la condición que relaciona las tablas • Unir (Join) las condiciones con el operador AND • Incluir cualquier condición adicional en la cláusula WHERE • Conectarlas con el operador AND
RELATIONAL SET OPERATORS Volver a los Objetivos
SET OPERATIONS • SET OPERATIONS - Se utilizan para fomar la unión (union), intersección, (intersection) o diferencias (differences ) de dos tablas. • UNION – Une dos tablas que contienen cada fila que está en la primera tabla, en la segunda tabla o en ambas. No duplica aquellas filas que se encuentren en ambas tablas.
SET OPERATIONS • INTERSECT – Muestratodas las filas que se duplican en ambas tablas únicamente. • MINUS – Muestratodas las filas que están en la primera tabla, pero que no aparecen en la segunda tabla.
RESTRICCIONES A LOS SET OPERATIONS • Requiere que las tablas sean compatibles en su unión. • Deben tener el mismo número de columnas Y • Sus correspondientes columnas deben tener los mismos tipos de datos y el mismo largo.
UNION • Ejemplo en una consulta: SELECT cus_lname, cus_fname, cus_initial, cus_areacode, cus_phone FROM customer UNION SELECT cus_lname, cus_fname, cus_initial, cus_areacode, cus_phone FROM customer_2; Pag: 346
EJEMPLO DE UNION Une dos tablas que contienen cada fila que está en la primera tabla, en la segunda tabla o en ambas. No duplica aquellas filas que se encuentren en ambas tablas cvc cvc cvc cvc UNION descarta las filas repetidas. Una tabla tiene 10 filas y la otra 7, pero al final se crean solo 15 porque hay dos repetidas. Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
UNION ALL • Incluye las filas duplicadas. Ejemplo: SELECT cus_lname, cus_fname, cus_initial, cus_areacode, cus_phoneFROM customer UNION ALL SELECT cus_lname, cus_fname, cus_initial, cus_areacode, cus_phoneFROM customer_2; Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
UNION ALL (continuación) UNION ALL incluye lad 17 filas producto de la primera tabla de 10 y la segunda de 7. Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
INTERSECT Muestratodas las filas que se duplican en ambas tablas únicamente. Se explica en el próximo slide. Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
INTERSECT con DISTINCT Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
MINUS Muestratodas las filas que están en la primera tabla, pero que no aparecen en la segunda tabla. Se explica en el próximo slide. Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
MINUS con DISTINCT Muestratodas las filas que están en la primera tabla, pero que no aparecen en la segunda tabla. Ninguno de estos códigos está en la tabla INVOICE Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
JOIN OPERATORS Volver a los Objetivos
DIFERENTES TIPOS DE JOINS - 1 • Join – Una operación relacional que causa que dos o más tablas con un dominio común se combinen en una sola tabla o view. • Equi-join – Una unión en donde la condición de unión se basa en igualdades entre valores en las columnas comunes. Las columnas comunes aparecen redundantemente en el resultado. • Natural join – Es un Equi-join en el cual una de las columnas duplicadas se elimina en el resultado. Pag: 335 Pag: 336
DIFERENTES TIPOS DE JOINS - 2 • Outer join – Una unión en donde las filas que no tienen valores que pareen en columnas comunes se incluyen como quiera en el resultado (lo opuesto a inner join en donde las filas deben tener valores que pareen para que puedan aparecer en el resultado) • Union join – Incluye todas las columnas de cada tabla en la union y una instancia de cada fila de cada tabla. Pag: 337 Pag: 339 Las columnas comunes en las tablas que se unen son usualmente el primary key de la tabla dominante y el foreign key de la tabla dependiente en relaciones uno a muchos
SQL Join Operators - RESUMEN Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
SPECIAL OPERATIONS • Inner Join • Una unión que compara las tablas en la cláusula FROM y muestra aquellas filas que satisfagan la condición en la clausula WHERE • Outer Join • Una unión que muestra todas filas de una de las tablas independientemente del par • Cross Join • Una unión que muestra todas filas de una tabla multiplicada por la combinación de la otra tabla.
Join implica dos o más tablas en el FROM La cláusula ON ejecuta el cotejo de igualdad para columnas comunes de las dos tablas. Ejemplo de Natural Join (Fig 8-1) • Por cada cliente que puso una orden, ¿Cuál es su nombre y el número de la orden? SELECT CUSTOMER_T.CUSTOMER_ID, CUSTOMER_NAME, ORDER_ID FROM CUSTOMER_T NATURAL JOIN ORDER_T ON CUSTOMER_T.CUSTOMER_ID = ORDER_T.CUSTOMER_ID; Nota: En la Fig. 1, se ve que solo 10 clientes tienen ordenes emitidas Sólo 10 filas deben devolverse de este INNER join. Pag: 336
Otro Ejemplo de Natural Join Nota: Curiosamente no incluye la directiva ON Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
JOIN USING Clause La cláusula USING permite hacer las conexiones entre las relaciones de las tablas afectadas Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
JOIN ON Clause Similar al JOIN del libro de texto que se explicó de la fig 8-1. Observe que la cláusula ON requiere comparar el Primary Key de una tabla contra el Foreign Key de la otra. Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
Outer Joins • Devuelven no solamente las filas que parean, sino también las filas con atributos que no parean ya sea de una tabla o de ambas. • Hay tres tipos: • Left outer join: Todas las filas de la tabla de la izquierda (la primera que se menciona en el query) se parean con las filas de la tabla a la derecha. Estas son las que se van a incluir. • Right outer join: Todas las filas de la tabla de la derecha (la segunda que se menciona en el query) se parean con las filas de la tabla a la izquierda. Estas son las que se van a incluir. • Full outer join: Todas las filas de ambas tablas se van a incluir independientemente del pareo. Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel