En este video, vamos a aprender sobre consultas a BDD relacionales. No nos enfocaremos en las consultas de un lenguaje en especifico, lo veremos después. Sólo vamos a hablar sobre consultas SQL en general. Iniciamos hablando sobre los pasos básicos de creación y uso de BDD relacionales. Por si acaso, debo mencionar que los que trabajan con BDD tienen el habito de dibujar las BDD y los sistemas de BDD como discos gigantes. Yo tengo el mismo hábito Ahora, el primer paso es diseñar el esquema de la BDD y vamos a crear el esquema usando un "lenguaje de definicion de datos" (DDL) Así como comentamos en videos anteriores en una BDD relacional el esquema consiste en la estructura de la relaciones y los atributos de esas relaciones. Así pusimos todo lo anterior en este gran disco. Una vez listo, el siguiente paso es cargar la BDD con los datos iniciales. Es bastante común para las BDD que se carguen inicialmente con datos que provengan de fuentes externas Tal vez los datos sólo se almacene en archivos de algún tipo, y a continuación los datos se pueden cargar a la BDD. Una vez que los datos están cargados, entonces tenemos un montón de tuplas en nuestras relaciones. Ahora estamos listos para la parte divertida de consultas y modificación de datos. Y sucede continuamente con el tiempo siempre y cuando la BDD siga existiendo. Por ahora vamos a decir que tenemos usuarios humanos realizando consultas a la BDD. En realidad, solo ocurre a travez de una aplicación o sitio web. Asi, un usuario llega y nos realiza una consulta de la BDD y obtenemos una respuesta Podría venir nuevamente y realizar otra consulta "Q2! y podriamos recibir otra respuesta. La misma persona y otra podría realizar una modificación de la BDD Asi, ellos podrán querer insertar nuevos datos o actualizar algunos de los datos y la BDD le regresará un mensaje "Ok, ya hice ese cambio para ti". Este es el paradigma básico de consultas y actualización de BDD relacionales. Las BDD relacionales soportan consultas "ad hoc" y lenguajes de alto nivel. por "ad hoc", me refiero a que puedes plantear consultas que no planeaste con antelación No es necesario escribir programas grandes para consultas específicas mas bien el lenguaje puede usarse para representar una consulta cuando piensas sobre que realizarla y cuando mencioné en videos anteriores que los lenguajes soportados por los sistemas relacionales son de alto nivel, significaba que puedes escribir de manera compacta consultas complicadas y sin tener que escribir el algoritmo que devuelvan los datos de la BDD. Veamos un ejemplo de algunas consultas. Vamos nuevamente sobre nuestra BDD de estudiantes que se esta aplicando a Universidades. Aquí vemos 3 ejemplos del tipo de cosas que le podemos pedir a la BDD relacional. Podrías pedir todos los estudiantes cuyo GPA es mayor que 3.7 que sean solamente de Stanford y MIT. Podrías pedir todos departamentos de ingeniería en California con menos de 500 candidatos o podrías pedir la universidad con la media mas alta de tasa de aceptación de los últimos 5 años. Ahora, estas podrían parecer consultas complicadas pero todas ellas pueden escribirse en pocas lineas en digamos: lenguaje SQL ó una simple expresion en álgebra relacional Ahora, algunas consultas son mas fáciles de representar que otras, es cierto. Aunque las 3 consultas que vez aquí son fáciles de plantear. Ahora algunas consultas son más fáciles de ejecutar eficientemente que otras para el sistema de BDD. Y curiosamente no necesariamente estas 2 cosas se relacionan. Hay algunas consultas que son fáciles de generar pero difíciles de ejecutar eficientemente y algunas al contrario. Ahora, un poco de terminología. Frecuentemente, las personas hablan sobre los lenguajes de consulta de los sistemas de BDD Ellos utilizan ordenes de sinónimos con el DML o Lenguaje de Manipulación de Datos, que suelen incluir no sólo consultas sino también manipulación de datos. En todas las consultas de lenguajes relacionales, puedes realizar consultas sobre un conjunto de tablas (relaciones), obteniendo una tabla (relación) como resultado. Ejecutaremos una consulta sobre estas 3 tablas (relaciones) mostradas y que nos devolverá otra tabla (relación). Cuando retorne el mismo tipo de objeto que tu consulta, esto se conoce como el fin del lenguaje Y es una gran caracteristica. Por ejemplo, cuando quiero ejecutar otra consulta, que sea Q2, esa consulta podría sobreponerse sobre la respuesta de mi primera consulta y podría incluso mezclarse la respuesta con alguna tabla (relación) existente en la BDD. Esto se conoce como composicionalidad, la habilidad de ejecutar una consulta sobre el resultado de una consulta previa. Ahora, hablemos brevemente sobre 2 lenguajes de consulta. Aprenderemos estos lenguajes en detalle después, pero sólo vamos a dar los puntos básicos de los lenguajes, aquí El álgebra relacional es un lenguaje formal. Bueno, es un álgebra como lo dice su nombre. Está teóricamente bien fundamentada. SQL por el contrario es lo que llamo un lenguaje actual o un lenguaje implementado. Es lo que vas a ejecutar en una verdadera aplicación de BDD. Pero el lenguaje SQL tiene como su base el álgebra relacional. Es como se define la semántica del lenguaje SQL. Ahora, le daré unos puntos de esos 2 lenguajes y vamos a escribir una consulta en los 2 lenguajes Bien, déjenme borrar esta pequeña linea de aquí. Iniciamos con el álgebra relacional Vamos a buscar para los ID's de estudiante cuyo GPA es mayor que 3.7 y sean de Stanford. En álgebra relacional, el lenguaje básico de operaciones son símbolos griegos. Nuevamente, aprenderemos de detalles después, pero esta expresión particular será escrito por un Phi seguido de un Sigma. El Phi indica que vamos a obtener el ID, el Sigma que queremos los estudiantes cuyos GPA son mayores a 3.7 y la universidad de donde vienen los estudiantes es Stanford. Y luego se opera en lo que se llama la unión natural de la relación de estudiantes con la relación aplicada. Nuevamente, veremos en mas detalle eso en los próximos videos. Ahora, la misma consulta en SQL. Y esto es lo que realmente se ejecuta en un sistema de BDD implementada, y la consulta SQL es, de hecho, una consulta de álgebra relacional Ahora pedagógicamente, se lo recomiendo altamente que aprendas álgebra relacional observando videos de álgebra relacional, antes de pasar a los videos de SQL, pero no es totalmente requerido. Si tienes bastante prisa por aprender SQL, puedes adelantarte hacia los videos de SQL Si te interesan los fundamentos formales y comprensión mas profunda te recomiendo ver el siguiente video de álgebra relacional