Sistemas de Datos Curso: Ernesto Chinkes SQL Básico – Algebra Relacional Sistemas de Datos Curso: Ernesto Chinkes Modelo Relacional Conceptos Relación Esquema Operaciones del Algebra Relacional Selección Proyección Unión Diferencia Producto Cartesiano Sistemas de Datos Curso: Ernesto Chinkes Algebra Relacional Selección (σ) Permite seleccionar un subconjunto de tuplas de una relación (R), todas aquellas que cumplan la(s) condición(es) P: σP(R) Por Ej: σApellido=Gomez(Alumno) Sistemas de Datos Curso: Ernesto Chinkes Algebra Relacional Proyección (Π) Permite extraer columnas (atributos) de una relación, dando como resultado un subconjunto vertical de atributos de la relación ΠA , A 1 (R) 2,…, An Por Ej: ΠApellido, Nombre, Numero_Registro(Alumno) Sistemas de Datos Curso: Ernesto Chinkes Algebra Relacional Unión (U) Retorna el conjunto de tuplas que estan en R, o en S, o en ambas. R y S deben ser relaciones compatibles: RUS Por Ej: Alumno U Profesor Sistemas de Datos Curso: Ernesto Chinkes Algebra Relacional Diferencia (-) Entrega todas aquellas tuplas que estan en R, pero no en S. R y S deben ser relaciones compatibles: R-S Por Ej: Alumno - Profesor Sistemas de Datos Curso: Ernesto Chinkes Algebra Relacional Producto cartesiano (x) Entrega una relación, cuyo esquema corresponde a una combinación de todas las tuplas de R con cada una de las tuplas de S, y sus atributos corresponden a los de R seguidos por los de S: RxS Por Ej: Alumno x Profesor Sistemas de Datos Curso: Ernesto Chinkes Algebra Relacional Otras Operaciones Intersección de Conjuntos Reunión natural Sistemas de Datos Curso: Ernesto Chinkes Otras Operaciones Intersección (∩) La intersección, como en Teoría de conjuntos, corresponde al conjunto de todas las tuplas que estan en R y en S, siendo R y S relaciones compatibles: R∩S Por Ej: Alumno ∩ Profesor Sistemas de Datos Curso: Ernesto Chinkes Otras Operaciones Reunión Natural (⋈): Hace un producto cartesiano de sus dos argumentos y realiza una selección forzando la igualdad de atributos que aparecen en ambas relaciones, eliminando repetidos: R⋈S Por Ej: Alumno ⋈ (Alumno.DNI=Profesor.DNI) Profesor Sistemas de Datos Curso: Ernesto Chinkes Algebra Relacional Operaciones del álgebra relacional extendida Agregación (Count, Sum, Avg, Etc) Reunión externa Reunión externa completa Reunión externa por la derecha Reunión externa por la izquierda Sistemas de Datos Curso: Ernesto Chinkes Modelo de Ejemplo - Casas Trabajamos con tres relaciones: Sistemas de Datos Curso: Ernesto Chinkes Selección Listar la calle y el número de las casas. En algebra relacional, hacemos la proyección de Calle y Numero de la relación Casa En SQL, escribimos: SELECT Calle, Numero FROM Casa La tabla luego del FROM representa la relación sobre la que hacemos la proyección La lista que sigue al SELECT nos marca los atributos que proyectamos Sistemas de Datos Curso: Ernesto Chinkes Selección Listar todas las casas de la calle Moreno En algebra relacional, hacemos la selección en la relación Casa donde Calle=“Moreno” En SQL, escribimos: SELECT * FROM Casa WHERE Calle=‘Moreno’ Π Calle, Numero, Valor (Casa) La tabla luego del FROM representa la relación sobre la que hacemos la proyección La condición que sigue al WHERE representa el predicado de la selección Sistemas de Datos Curso: Ernesto Chinkes Selección Listar los numeros de las casas de la calle Moreno En algebra relacional, hacemos la selección en la relación Casa donde Calle=“Moreno” y la proyección del atributo Numero En SQL, escribimos: SELECT Numero FROM Casa WHERE Calle=‘Moreno’ σ Calle=“Moreno” (Casa) La tabla luego del FROM representa la relación sobre la que hacemos la selección y la proyección La condición que sigue al WHERE representa el predicado de la selección, y la lista luego del SELECT los atributos a proyectar Sistemas de Datos Curso: Ernesto Chinkes Inserción Agregar una casa en Moreno al 325, por valor de 25000 En algebra relacional, agregamos una tupla a la relación Casa En SQL: INSERT INTO Casa (Calle, Numero, Valor) VALUES (‘Moreno’, 325, 25000) La tabla luego del INTO indica la relación a la cual le agregamos la tupla La lista luego del VALUES contiene los datos de la tupla a agregar Sistemas de Datos Curso: Ernesto Chinkes Inserción Agregar a Casas los datos de la tabla Otras_Casas En algebra relacional, Agregamos a la relación Casas un conjunto de tuplas Producto de una selección En SQL: INSERT INTO Casas SELECT * FROM Otras_Casas Luego del INTO tenemos la relación sobre la que vamos a agregar la Información. A continuación tenemos la expresión del algebra relacional que indica el conjunto de tuplas a agregar. En este caso una selección. Sistemas de Datos Curso: Ernesto Chinkes Modificación Aumentar en 10 % el valor de las propiedades de la calle Moreno En algebra relacional, realizamos una selección de tuplas y modificamos el valor de algún atributo En SQL: UPDATE Casa SET Valor = Valor * 1.1 WHERE Calle=‘Moreno’ Luego del UPDATE tenemos la relación a modificar. Luego del SET, los atributos que se modificarán Luego del WHERE, tenemos las condiciones de la operación de selección. Si no seleccionamos, modificaremos todas las tuplas de la relación. Sistemas de Datos Curso: Ernesto Chinkes Eliminación Queremos borrar todas las casas de la calle Azurduy En algebra relacional, realizamos una selección de tuplas y las eliminamos En SQL: DELETE FROM Casa WHERE Calle=‘Azurduy’ Luego del DELETE FROM tenemos la relación de la cual borraremos Luego del WHERE, tenemos las condiciones de la operación de selección. Si no seleccionamos, borraremos todas las tuplas de la relación Sistemas de Datos Curso: Ernesto Chinkes Consultas Multitabla Queremos mostrar los teléfonos de las casas de la calle Pedraza En algebra relacional, realizamos una reunión natural. Comprende un producto cartesiano y una selección En SQL: SELECT c.Calle, c.Numero, tc.Telefono FROM Casa c INNER JOIN Telefono_Casa tc ON (c.Calle = tc.Calle AND c.Numero = tc.Numero) WHERE Calle=‘Pedraza’ σ c.Calle=tc.Calle; c.Numero=tc.Numero (Casa c X Telefono_Casa tc) Luego del ON identificamos los atributos repetidos en ambos esquemas Luego del WHERE, tenemos las condiciones de la operación de selección.