introducci n a base de datos y sql n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
INTRODUcción a base de datos y sql PowerPoint Presentation
Download Presentation
INTRODUcción a base de datos y sql

Loading in 2 Seconds...

play fullscreen
1 / 81

INTRODUcción a base de datos y sql - PowerPoint PPT Presentation


  • 205 Views
  • Uploaded on

INTRODUcción a base de datos y sql. RANGEL ALVARADO. INTRODUCCIÓN. ¿ Cúando sabemos o qué es exactamente una base de datos ?. En todo momento tenemos que interactuar con base de datos . BASE DE DATOS.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

INTRODUcción a base de datos y sql


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
    Presentation Transcript
    1. INTRODUcción a base de datos y sql RANGEL ALVARADO

    2. INTRODUCCIÓN ¿Cúandosabemos o quéesexactamenteuna base de datos? En todomomentotenemosqueinteractuar con base de datos.

    3. BASE DE DATOS • No se debeconfundir la base de datos con el software de administración, por lo general se utilizaeste software (DBMS) paraacceder a la base de datoscorrespondienteporud. Colección de datos almacenados de una manera elegante. Ejm: • Por extensión, se llama oráculo al propio lugar en que se hace la consulta y se recibe la respuesta (el oráculo) - Wikipedia • Base de datos: Contenedor (archivos o lista de estos) de manera ordenada. • DBMS:DataBase Management System, software de administración de base de datos.

    4. TABLAS • Archivos de base de datos = tablas • Archivo estructurado que puede alojar datos de una manera en específica. Una lista de datos estructurada de una manera en específica. • En la misma base de datoscada nombre de tabla es único. Cuando se almacena información no se tira en el cajón, sino que se crea un archivo relacionado con archivos específicos. Ejm: • Schema o Esquema: Información de cómo se relacionan la base de datos con las capas de tablas y sus propiedades

    5. COLUMNAS Y TIPO DE DATOS • Columnas: Un campo sencillo de una tabla • Todas las tablas están constituidas de una o más columnas • Es importante en una base de datos desmenuzar la información para que después sea posible ordenar o filtrar Las tablas estan hechas u organizadas en columnas. Las columnas contienen información particular de las tablas Ejm: • Cada columna tiene un tipo de dato asociado permitido. • Cada columna de tabla tiene un tipo de dato que restringe (o acepta) datos específicos a esta columna • Nos permite realizar ordenamiento de la base de datos y optimización de espacio en disco • La compatibilidad de tipo de datos es el principal fuente de error a la hora de realizar aplicaciones de usuario.

    6. FILAS • Fila: Un registro en una tabla • ¿Registros o filas?. Ambos son significados válidos, pero el propio a referir es filas. Los datos en las tablas de la base de datos se almacenan en filas y cada registro guardado se almacena en esta fila Ejm:

    7. LLAVES PRIMARIAS • Llave primaria: una columna o grupo de estas cuyo valor es único e identifica cada fila en la tabla • Son necesarias para realizar más fácilmente el trabajo de actualización de filas o borrado en las tablas y base de datos • Las llaves primarias no son requeridas, pero se DEBE definir una llave primaria para que la información sea administrable. Las llaves primarias son identificadores únicos. Para una tabla puede haber más de una llave primaria • Condiciones de llave primaria: • Dos filas no pueden tener el mismo valor si es llave primaria. • Cada fila debe poseer una llave primaria con valor (no nulo). • Valores de las llaves primarias no pueden ser alterados. • La llave primaria no debe ser reutilizada. No puede ser utilizada una llave primaria en el futuro para otro registro.

    8. SQL • SQL o StructuredQueryLanguage es un lenguaje diseñado específicamente para comunicación a base de datos. • A diferencia de otros lenguajes (hablado o de programación) SQL se basa en pocas palabras. • Ventajas: • SQL es no propietario. Aprender SQL te permite interactuar con casi todas las bases de datos asi utilicemos un DBMS. • Fácil de aprender. Se deriva del inglés y son instrucciones básicas • A pesar de ser sencillo, permite construir instrucciones complejas para conocer información y operación de base de datos específica. • Extensiones de SQL: muchas son propietarias desarrolladas por vendedores de DBMS, pero procuraremos estilar ANSI SQL, que es un estándar.

    9. SENTENCIA “SELECT” Keyword o palabras claves son palabras reservadas que no se pueden utilizar, en este caso, para nombrar bases de datos, columnas, tipos. • SINTAXIS PARA COLUMNA SIMPLE: • SELECT <columna> FROM<tabla>; • La información se muestra en el orden agregado • La información no es filtrada • La sentencia SQL se puede romper en varias líneas para un mejor entendimiento • Muchos softwares de DBMSs no importa si se terminan con “;” • Las palabras claves son insensibles a su uso, es decir, aceptan mayúsculas o minúsculas

    10. SENTENCIA “SELECT” La única diferencia es que la sentencia SELECT para múltiples casos es que las columnas son separadas por comas. • SINTAXIS PARA MULTIPLES COLUMNAS: • SELECT <columna1>,<columna2>, …, <columnaN>FROM<tabla>; • Las sentecias SQL retornan datos sin formatear (ver columna “phone”) • La aplicación de usuario es la que se encarga de obtener la información desplegada. • La última columna no debe llevar coma!

    11. SENTENCIA “SELECT” El asterisco (*) comunmente se le conoce como “wildcard”. • SINTAXIS PARA TODAS LAS COLUMNAS: • SELECT *FROM<tabla>; • Cuando se especifíca el wildcard TODAS las columnas son listadas • No necesariamente están en el orden que se ve en el esquema (schema) • Traer todas las columnas dismuniye el tiempo de la aplicación!!! • La gran ventaja de utilizar wildcards es que se puede listar el nombre de columnas desconocidas

    12. ORDENAR DATOS DE QUERIES Como la información que se despliega no tiene un orden particular, las cláusulas de SQL nos pueden ayudar a filtrar de una manera organizada la información • SINTAXIS : • SELECT <columna>FROM<tabla> ORDER BY <columna>; • La cláusula ORDER BY, es una cláusula opcional de la sentencia SELECT que debe de ir al final. • Adicionalmente se puede ordenar por columnas no listadas, esta es una práctica muy común

    13. ORDENAR DATOS DE QUERIES • SINTAXIS : • SELECT <columna1>,<columna2>, …, <columnaN>FROM<tabla>; • ORDER BY <columna1>, …, <columnaN>; • En esta sección, primero se ordena por telefono y luego por nombre de cliente

    14. ORDENAR DATOS DE QUERIES Esta técnica NO se puede utilizar para columnas que no aparecen listadas en la sentencia de SQL • SINTAXIS : • SELECT <columna>FROM<tabla> ORDER BY <num_col1>,<num_col2>; • Es el mismo resultado de la filmina anterior • La ventaja de esta técnica es el no tener que repetir el nombre de las columnas • ORDER BY 3, 2 significa ordenar por telefono y nombre de cliente

    15. ORDENAR DATOS DE QUERIES El ordenamiento de información por defecto en SQL es estilo A - Z • SINTAXIS : • SELECT <columna>FROM<tabla> ORDER BY <columna> [ASC|DESC] • Ordenamiento ascendente por defecto • Para ordenar múltiples columnas en forma descendente o ascendente, en cada columna debe de tener la palabra reservada DESC o ASC • Así como en un archivador ‘a’ se ordena con ‘A’, esto es más dependiente del ajuste en la base de datos y para las bases de datos más complejas esto se ajusta con el administrador de base de datos.

    16. FILTRANDO INFORMACIÓN Las bases de datos contienen gran cúmulo de información y generalmente se requiere información específica para generar reportes. • SINTAXIS : • SELECT <columna(s)>FROM<tabla>WHERE <columna operador valor>; • En este caso se filtra por cantidades mayor a B/. 70,000.00 • El filtro también puede ser aplicado en la capa de aplicación (API) • No recomendable debido a que las bases de datos fueron creadas para enviar información concisa • Se envía tráfico innecesario por la red • Traducido en pérdida de ancho de banda • Si se utiliza ORDER BY debe ir después de WHERE

    17. FILTRANDO INFORMACIÓN Las bases de datos contienen gran cúmulo de información y generalmente se requiere información específica para generar reportes. • OPERADORES:

    18. FILTRADO AVANZADO Para ejecutra filtros avanzados nos ayudamos de otras palabras reservadas como AND y OR • SINTAXIS : • SELECT <columna(s)>FROM<tabla>WHERE <columna operador valor> [AND|OR] <columna operador valor>; • Se debe tener especial cuidado al realizar filtrados!!!

    19. FILTRADO AVANZADO • Se desea de la tabla de productos las líneas de productos de motocicletas o modelos clásicos de carros y que estén en escala de 1:10 • SQL como muchos lenguajes de programación procesan AND antes que OR • ¿Qué entendió?: Escala de producto de 1:10 para Motocicletas ó cualquier producto que sea modelo clásico de automóviles. • ¿Cómo resolver?: Utilizando paréntesis • Los paréntesis tienen prioridad más alta que la sentencias AND y OR • Es recomendable en todo caso utilizar paréntesis para eliminar ambiguedades.

    20. FILTRADO AVANZADO El operador IN se utiliza para especificar un rango de condiciones de la misma columna • SINTAXIS : • SELECT <columna(s)>FROM<tabla>WHERE <columna> IN (<valor 1>, …, <valor N>); • Es equivalente a: SELECT * FROM employees WHERE firstname=‘Barry’ OR firstname=‘Larry’ OR firstname=‘Leslie’ OR firstname=‘Peter’; • Ventajas de uso del operador IN • Cuando se posee una lista de opciones válidas es prólijo al leer. • El orden de evaluación es fácil de administrar • IN ejecuta más rápido el query que los operadores OR • Lo más notable de utilizar IN es que dentro de esta puede haber otra sentencia de SQL realizando operaciones dinámicas de filtrado

    21. FILTRADO AVANZADO El operador NOT solamente niega la condición a la cual le sigue • SINTAXIS : • SELECT <columna(s)>FROM<tabla>WHERENOT <columna operador valor>; • Este query es equivalente a: SELECT * FROM orderdetails WHERE orderLineNumber <> 1 OR … OR orderLineNumber <> 9 • A diferencia de otros operadores, NOT puede ser utilizado antes de la columna a filtrar • En la base de datos MySQL, NOT se utiliza (como en este caso) para negar la existencia de datos.

    22. USO DE COMODINES Los filtros anteriores eran de valores conocidos, en esta sección se estudia cuando no se conoce exactamente este valor. • SINTAXIS : • SELECT <columna(s)>FROM<tabla>WHERE <columna> LIKE <valor>; • Wildcards (comodines): carácter especial para comparar partes de un valor. • Patrón de búsqueda: condición de búsqueda construida de texto, comodines o combinación de ambos • Predicados: LIKE es un predicado, no un operador • El símbolo ‘%’ simboliza el comodín de “cualquier numero de ocurrencias de cualquier carácter”. • En microsoftaccess, el wildcard equivalente a % es *

    23. USO DE COMODINES • SINTAXIS : • SELECT <columna(s)>FROM<tabla>WHERE <columna> LIKE <valor>; • Se puede utilizar más de una vez el wildcard • El query simboliza: resultados de cualquier nombre de empleado que contengan internamente las iniciales ‘ar’ • Igualmente se pueden utilizar entre oraciones, pero es muy raro verlo. • Cuidado con los espacios luego de las cadenas!!! • En algunas DBMSs, por ejemplo, en la columna lastName, puede que haya espacios luego del último carácter, para llenar la fila, así, es recomendable filtrar al final por % • El comodín [] no es soportado en MySQL, y se utiliza para listar un grupo de caracters en común, por ejemplo Larry, Barry serían [LB]

    24. USO DE COMODINES El comodín _ se utilizaparaespecificar SOLAMENTE un caractér • SINTAXIS : • SELECT <columna(s)>FROM<tabla>WHERE <columna> LIKE <valor>; • Solamente lista un carácter en vez de todos los caracteres anteriores • Cuidado con los espacios luego de las cadenas!!! • SIEMPRE el comodín _ encuentra solo y solamente un caractér • Existe otro comodín [], por ejemplo, en una sentencia como SELECT * FROM employees WHERE lastName LIKE ‘[PB]%’ listaría los apellidos que empiecen con Patterson y Bolt • NO TODAS las DBMSs soportan [] • Para negar un carácter se utiliza ^, por ejemplo SELECT * FROM employees WHERE lastName LIKE ‘[^PB]%’ solamente listaría Bolt

    25. USO DE COMODINES • Los comodines son sentencias que utilizan mucho tiempo de procesamiento • No se deben sobreutilizar los comodines si existe otra opción • Cuando se utilicen los comodines, NO se deben utilizar antes del patrón de búsqueda por lo general, consumen más tiempo de ejecución • Si se especifican mal, pueden retornar más datos de los que ud. necesita.

    26. CREAR CAMPOS CALCULADOS Se procede a la creación de campos calculados pues la información proveniente de la DB no necesariamente es la salida que buscamos • Desplegar campos de manera conjunta que existen en tablas y columnas separadas • La información en las columnas está en formato mixto de mayúsculas y minúsculas, pero se necesita en mayúsculas • Se tienen precios y cantidades, pero no totales por cada item y mucho menos el gran total • Se necesita el promedio de un grupo de datos • Los campos calculados no existen en las tablas de la base de datos!!! • Cualquiér cálculo debe ser realizado en el nivel de base de datos, son eficientes

    27. CREAR CAMPOS CALCULADOS Para algunas DB, el concatenar campos se utiliza el caractér ‘+’ o ‘||’. Sin embargo, en MySQL se utiliza la función CONCAT() • SINTAXIS : • SELECT CONCAT(<columna1> ,<columna2>, …, <columnaN>) [AS <alias>]FROM<tabla>; • Concatenar: unir dos valores (adjuntar) para formar uno mas largo. • MySQL no soporta || o +, en su caso, utiliza CONCAT() • En MySQL || es equivalente a OR y && es equivalente a AND • Recordar que muchas DB retornan caracteres a la derecha que deben ser eliminados con la función RTRIM() • El uso del alias es un nombre el cual se quira dar. • Se usan alias cuando los nombres de las columnas son difíciles de interpretar. • Para usar un alias con espacios debe ir entre ‘ ‘ • A los Alias se les conoce como: • Alias = Columnas derivadas

    28. CREAR CAMPOS CALCULADOS También podemos generar columnas calculadas, p.e., cantidades totales de un producto u Orden de Compra • Del siguiente ejemplo podríamos calcular las cantidades totales por producto • Lo haremos en una columna de ‘totalPerQty’ • Otros operadores soportados son: • + • - • * • / • Sin embargo no son las unicasoperandos soportados

    29. FUNCIONES En programación, las funciones tienen al menos un valor de retorno, puede o no tener un argumento de entrada. • El uso de funciones se da cuando se quiere manipular datos para facilitar su comprensión • No todo código en SQL sirve en la misma aplicación desarrollada, depende de la DB • Problemas de portabilidad • Dependiendo de las DB, las funciones pueden llamarse de manera diferente • Ejms. MID() en Access, SUBSTR() en PostgreSQL • ¿Se debe de usar funciones? • Depende del programador • Si se utilizan FAVOR comentar ( -- ) para que otro programador sepa que se hizo.

    30. FUNCIONES También podemos generar columnas calculadas, p.e., cantidades totales de un producto u Orden de Compra • La mayoría de las implementaciones en SQL soportan las funciones: • De texto o cadenas de texto • Numéricas para operaciones matemáticas • Fecha y hora, p.e. adjuntar una estampa de tiempo o diferencia • Funciones de sistema (saber si se ejecuto un query) • Las funciones de tiempo son una de las mas utilizadas, sin embargo son las menos portables

    31. RESUMIENDO INFORMACIÓN No necesariamente podemos listar la información, sino llevar un resumen. Funciones Agregadas: Funciones que operan con un grupo de filas para calcular o retornar un valor. • Se usan estas funciones especiales (funciones agregadas) para resumir y analizar datos provenientes de la DB, algunas de estas son: • Determinar el numero de filas (o aquellas que se somentan a una condición especial) • Obtener el total de datos • Tomar los valores máximo, mínimo y promedio de una muestra • Funciones de sistema (saber si se ejecuto un query) Promedio de toda la data Promedio de un grupo específico

    32. RESUMIENDO INFORMACIÓN Contar todos los clientes Todos los clientes con dirección alternativa • Modos de uso de COUNT() • COUNT(*): Para determinar TODOS los valores, incluso los nulos • COUNT(columna): Para determinar el número de valores en filas ignorando los NULL (nulos) • Usar MIN() con datos no numéricos, p.e., fechas, retorna el valor de menor. • Cuando es utilizado con datos de texto, MIN() debería retornar el primer campo insertado (el más viejo). • Todo lo anterior depende de la DBMS que se esté utilizando.

    33. RESUMIENDO INFORMACIÓN Orden 10104 Suma individual de la orden 10104 Precio Total de la orden 10104 • Importante!!! Los valores nulos no son considerados con SUM()!!!!

    34. RESUMIENDO INFORMACIÓN • Las funciones agregadas pueden utilizarse de dos formas: • Para administrar calculos en todas las filas especificando o no el argumento ALL (porque ALL es el argumento por defecto) • Para incluir calculos de campos únicos con DISTINCT Total de cantidades únicas Orden 10122 • MS Access NO soporta DISTINCT • Solo usar DISTINCT con COUNT() si se especifica la columna • No tiene uso usar DISTINCT con MIN() o MAX() pues es un solo valor • Otras DBMSs soportan funciones agredadas como TOP PERCENT para el cálculo de porcentajes

    35. RESUMIENDO INFORMACIÓN Es una recomendación al utilizar funciones, renombrar por un ALIAS a la columna que posee la función, es más claro al visualizar • Las funciones agregadas pueden ser utilizadas de forma combinada Orden 10122 Resumen de Funciones

    36. GRUPOS DE DATOS Las funciones agregadas nos sirven para realizar un resumen de datos. Los grupos de datos para presentar un resumen de los datos individuales. • Se aprendió a sumarizar datos para • Contar filas • Buscar máximos, mínimos y promedios • Se utiliza de por medio la clausula WHERE • ¿Qué sucedería si necesitaramos los numeros de totales de productos por cada orden de compra? • Se debe usar grupos!!!! • Los grupos te permiten dividir datos en diferentes grupos individuales pero reuniendo todos los datos en un solo resultado.

    37. GRUPOS DE DATOS En el siguiente ejemplo realizamos los resumenes por orden de cantidades totales por orden y el numero de items. • GROUP BY se puede filtrar por columna relativa (GROUP BY 2,3) • Algunas implementaciones de SQL soportan ALL en GROUP BY • No se debe evaluar cada producto para ser calculado, la DBMs lo realiza de manera individual y eficiente • Comentarios acerca de la cláusula GROUP BY • GROUP BY contiene cuantas columnas ud. requiera y se puede anidar • GROUP BY agrupa todos los datos o registros, no las funciones. • La columna utilizada en GROUP BY debe estar presente en SELECT • La mayoría de sentencias SQL GROUP BY no funcionan bien con tipos de datos variables en largo (texto) • Si uno o más registros contienen NULL, NULL se retornará. • GROUP BY deber de estar seguido de WHERE y antes de ORDER BY

    38. GRUPOS DE DATOS Podemos realizar filtros de cuales incluir y excluir, p.e., incluir todas las ordenes que tuvieron mas de “n” cantidad de items. • Anteriormente se utilizó WHERE parafiltrarfilas • HAVING filtra por grupos • WHERE no tiene idea de quées un grupo • HAVING soporta los operadores de WHERE • WHERE filtracolumnas antes de ser agrupados los datos. Al usar HAVING, no se utilizarántodaslascolumnas y se afectará el cálculo. • Ejemplo: Filtramos del anterior, grupos de ordenes con items > $120 • Usar HAVING y WHERE HAVING en algunas DBMSs es lo mismo usando WHERE si GROUP BY no se especifica • Usar HAVING solo en conjunto con GROUP BY!!!!

    39. GRUPOS DE DATOS Como práctica común se debe utilizar ORDER BY, no confiar en GROUP BY para ordenar los datos. Agrupar y Ordenar Cláusula SELECT

    40. SUBQUERIES Query: Una sentencia SQL, generalmente las personas la asocian a SELECT Subqueries: Peticiones embebidas o indexadas dentro de otras peticiones MySQL 4.1 o mayor soporta subqueries • Hasta ahora se han visto queries que son de una sola tabla pidiendo datos de tablas individuales… SELECT comments FROM Orders; • Supongamos que quisiéramos el nombre y apellido de los clientes que ordenaron un producto en específico, el ‘S18_1749’, lo correcto sería • Buscar los número de orden de los productos S18_1749 • Buscar los números de cliente basado en el número de orden del producto encontrado anteriormente • Buscar el nombre y apellido de los clientes basados en el número de cliente del query anterior basados en el número de cliente • Finalmente, cada query por separado puede ser unido • Es recomendable anidar SubQueries para mejor comprensión • Los queries internos solo deben retornar una columna • No es la forma más eficiente (mas adelante se usara “join”)

    41. SUBQUERIES Buscar los número de orden de los productos S18_1749 Buscar los números de cliente basado en el número de orden del producto encontrado anteriormente (existen más datos) Buscar el nombre y apellido de los clientes basados en el número de cliente del query anterior basados en el número de cliente

    42. SUBQUERIES También se puede utilizar subqueries en campos calculados. El ejemplo presentado es funcional, pero puede que no sea la solución óptima. • Queremos desplegar el número total de ordenes por cada cliente de la tabla de clientes Como para cada orden existen “N” clientes, listamos los totales en una columna. Veamos el ejemplo individual: Vinculamos el query anterior por numero de cliente en el filtro para cada tabla, pero de la tabla clientes listamos los campos buscados.

    43. JUNTURAS (JOINS) JOINS: Se utilizan para unir diferentes tablas al vuelo Es la operación más poderosa para SELECT y su uso debe entenderse específicamente con bases de datos relacionales. • Bases de Datos Relacionales - Tablas Base de datos No Relacional Base de datos Relacional • Data inconsistente es difícil para realizar un reporte • Con bases de datos relacionales… • Evitamos múltiples ocurrencias de la misma información (fácil actualizar) • La información está dividida en múltiples tablas y relacionadas por un valor común (llave primaria) • ¿Porqué usar JOIN entonces? • Ventaja: información almacenada en múltiples tablas • Desventaja: no se puede unir en una sola SENTENCIA. • SOLUCIÓN: JOINS!!! • Nota: Los JOINS no crean tablas físicas (no existe como archivo), solo se crea y persiste durante la ejecución de la sentencia

    44. JUNTURAS (JOINS) • SINTAXIS PARA JOIN: • SELECT <columna1>, …, <columnaN> FROM<tabla1>, <tabla2> WHERE<tabla1>.<llaveprimaria1>=<tabla2>.<llaveprimaria2>; • La llave primaria listada como columna debe especificar la tabla de la cual se extrae, sino abrá un error en el query!!!! • Es común usar WHERE para juntar las tablas, sin la condición de WHERE listará todos los datos sin filtrar e incurrira en errores de datos

    45. JUNTURAS (JOINS) Equijoin: Uniones basadas en igualdades entre tablas. Se puede usar igualmente la sentencia INNER JOIN • SINTAXIS PARA JOIN: • SELECT <columna1>, …, <columnaN> FROM<tabla1> INNER JOIN <tabla2> ON<tabla1>.<llaveprim1>=<tabla2>.<llaveprim2>; • Exactamente el mismo resultado anterior • Existen RIGHT y LEFT JOIN respectivamente, pero INNER JOIN es la sentencia ANSI recomendada

    46. JUNTURAS (JOINS) • También podemos unir más de dos tablas (multiples junturas de tablas) • El siguiente ejemplo une valores únicos de diferentes tablas • Consideraciones de desempeño: las junturas son realizadas en tiempo real y el proceso puede consumir muchos recursos. • A mayor cantitad de tablas que se unifique mayor será la degradación de desempeño! • No existe tamaño máximo para límite de tablas a juntar, sin embargo, esto depende del software de DBMS que se use

    47. JUNTURAS (JOINS) • De la sección de subqueries, se observó que probablemente habría una forma más eficiente de hacer el query • Ejemplo en subqueries: Nombre y apellido de los clientes que ordenaron un producto en específico, el ‘S18_1749’ • Subqueries requieren unir multiplesqueries • Joins utiliza un query para realizar el trabajo • Existe siempre más de una solución posible

    48. CREANDO JUNTURAS (AVANZADAS) • ¿Porqué usamos los Alias? • Acortar sentencias SQL • Habilitar a múltiples usos con una sola sentencia SELECT Anteriormente utilizamos Alias para columnas Sin embargo SQL permite igualmente Alias para tablas • Oracle no soporta la cláusula AS • MySQL = Orders AS O • Oracle DB = Orders O • Alias de tablas solo son por ejecución, no se retorna al cliente

    49. CREANDO JUNTURAS (AVANZADAS) Cada INNER JOIN creado anteriormente es un NATURAL JOIN y probablemente NUNCA JAMÁS se necesite alguno que no sea NATURAL JOIN. • Junturas propias (SelfJoins) • Usar alias promueve la reusabilidad en la sentencia SQL • Utilizar siempre SelfJoins en vez de subqueries debido a que es más eficiente cuando se necesite traer datos de la misma tabla • Junturas naturales (Natural Joins) • El Joincomun arroja todas las columnas aún si existen repetidas • Las junturas naturales eliminan esta información repetida, es decir, selecciona la información que es única

    50. CREANDO JUNTURAS (AVANZADAS) Los JOIN relacionan columnas de una tabla con otra, pero a veces necesitamos incluir filas aunque no estén relacionadas Nota: FULL OUTER JOIN relaciona todos los datos de ambas tablas especificadas, sin embargo, no es soportado por MySQL • OuterJoin (Junturas Externas) • Queremos contar cuantas ordenes cada cliente, incluyendo aquellos que no han puesto una orden • A diferencia del JOIN común que relaciona las filas de las tablas, OUTER JOIN incluye incluso las filas no relacionadas • RIGHT OUTER JOIN lista en este caso toma todas las filas que guarden o no relación de la tabla Orders • LEFT OUTER JOIN lista en este caso toma todas las filas que guarden o no relación de la tabla Customers