[go: up one dir, main page]

Academia.eduAcademia.edu

Día 4

2021, Fundamentos de bases de datos

algebra relacional, fundamentos de joins sql server, operador relacional

Db Basics Programación de Base de Datos Álgebra Relacional 1 2 2 Operaciones creadas específicamente para Bd Relacionales: Seleccionar, Proyectar, Unión (Acople) Contiene operaciones Corrientes de la Teoría Matemática de Conjuntos: Unión, Diferencia, Intersección, Producto Cartesiano Operación Seleccionar > Sirve para seleccionar un subconjunto de tuplas de la relación que satisface una condición de selección > Seleccionar los empleados que trabajan con la extensión 3453, seleccionar los empleados cuyo país es UK > σ<condición>(<Nombre de la Relación>) > σ Ext = 3453(EMPLEADO) > Select * from Employees em where Extension=3453 > σ Country = UK(EMPLEADO) > Select * from Employees em where Country='UK' 3 Operación Proyección > Proyección (Π) Permite extraer columnas (atributos) de una relación, dando como resultado un subconjunto vertical de atributos de la relación > La operación proyectar elimina implícitamente cualquier tupla repetida > La relación resultante solo tendrá los atributos especificados en la lista de atributos y en el mismo orden en que aparecen en la lista. > ΠA1, A2,…, An(R) > Por Ej: ΠEmployeeId, LastName, FirstName(Employees) > Select EmployeeId, LastName, FirstName from Employees 4 Unión > Retorna el conjunto de tuplas que estan en R, o en S, o en ambas. R y S deben ser relaciones compatibles > Dos relaciones R(A1,...,An) y S(B1,...,Bm) son compatibles con la unión si: tienen el mismo grado, n = m dom (Ai) = dom (Bi), i entre 1 y n > o sea, si tienen el mismo número de atributos y cada par de atributos correspondientes tiene el mismo dominio. > RUS select Address, city, region from Suppliers union Select address, city, region from Employees 5 Diferencia > Entrega todas aquellas tuplas que están en R, pero no en S. R y S deben ser relaciones compatibles: > No es conmutativa : R-S diferente S-R > R–S select * from Customers where CustomerID not in (select CustomerID from Orders) Select * from Customers c where not exists (select CustomerID from orders o where o.CustomerID=c.CustomerID) Select * from Customersc left join orders o on o.CustomerID=c.CustomerID where o.CustomerID is null select * from orders o right join Customers c on c.CustomerID=o.CustomerID where o.CustomerID is null 6 Intersección > Entrega todas aquellas tuplas que están en R, pero no en S. R y S deben ser relaciones compatibles: > 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 > Son conmutativas: R∩S = S ∩R > Son Asociativas: R∩(S∩T) = (R∩S) ∩T > Orders ∩ [Order Details] select * from Orders O INNER JOIN [Order Details] OD ON OD.OrderID=O.OrderID 7 Producto Cartesiano > Es un operador binario, las relaciones que intervienen no tienen que ser compatibles con la unión. Las relación resultante tiene n+m atributos o sea Q (A1,...An,B1,...Bm) y en este orden. > Sin cláusula WHERE el motor SQL realiza el producto cartesiano de todas las tablas. > Es posible establecer alias o sobrenombres de tabla, con intención de agilizar la construcción de la consulta, y usar ese alias para indicar a que tabla pertenece cada campo. > R(A1,...,An)XS(B1,...,Bm) > Select * from region, Shippers 8 FUNDAMENTOS DE JOINS EN SQL SERVER > SQL Server implementa operaciones de unión lógica, según lo determinado por la sintaxis de Transact-SQL > Las inner join se pueden especificar en las cláusulas FROM o WHERE. Las outer joins y cross joins solo se pueden especificar en la cláusula FROM. > Los diferentes tipos de JOIN combinan el producto cartesiano con una condición de selección 9 Tipos de Joins en SQL Server > Entre los tipos de sentencias JOIN de SQL más importantes se encuentran: > INNER JOIN: INNER JOIN hace referencia a una forma filtrada de CROSS JOIN en la que solo se incluyen en el conjunto resultante las tuplas de las tablas originarias que cumplen la condición de selección definida por el usuario. > OUTER JOIN: OUTER JOIN es una extensión de INNER JOIN. El conjunto de resultados de una sentencia OUTER JOIN contiene las tuplas de que cumplen la condición de selección definida por el usuario, así como el resto de tuplas de la primera tabla, de la segunda o de ambas tablas. Las sentencias OUTER JOIN pueden clasificarse en 3 tipos: LEFT OUTER JOIN, RIGHT OUTER JOIN o FULL OUTER JOIN. 10 Tipos de Joins en SQL Server 11 INNER JOINS de SQL Server devuelve todas las filas de varias tablas donde se cumple INNER JOIN > La sentencia LEFT JOIN retorna la pareja de todos los valores de la tabla izquierda con los valores de la tabla de la derecha correspondientes, si los hay, o retorna un valor nulo NULL en los campos de la tabla derecha cuando no haya correspondencia. select * from Orders O INNER JOIN [Order Details] OD ON OD.OrderID=O.OrderID 12 LEFT OUTER JOIN > La sentencia LEFT JOIN retorna la pareja de todos los valores de la tabla izquierda con los valores de la tabla de la derecha correspondientes, si los hay, o retorna un valor nulo NULL en los campos de la tabla derecha cuando no haya correspondencia. > En algunas bases de datos, las palabras clave LEFT OUTER JOIN se reemplazan por LEFT JOIN > SELECT OrderID, C.CustomerID, CompanyName, OrderDate > FROM Customers C LEFT JOIN Orders O ON 13 C.CustomerID = O.CustomerID RIGHT OUTER JOIN > La sentencia RIGHT OUTER JOIN retorna todos los valores de la tabla derecha con los valores de la tabla de la izquierda correspondientes, si los hay, o retorna un valor nulo NULL en los campos de la tabla izquierda cuando no haya correspondencia. > SELECT Orders.OrderID, Employees.LastName, Employees.FirstName FROM Orders RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID ORDER BY Orders.OrderID 14 FULL OUTER JOIN (Combinación Completa) > Esta operación presenta los resultados de tabla izquierda y tabla derecha aunque alguna no tengan correspondencia en la otra tabla. La tabla combinada contendrá, entonces, todos los registros de ambas tablas y presentará valores nulos NULLs para registros sin pareja. > SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName 15 CROSS JOIN (Combinación Cruzada) > Las combinaciones cruzadas (cross join) muestran todas las combinaciones de todos los registros de las tablas combinadas. Para este tipo de join no se incluye una condición de enlace. Se genera el producto cartesiano en el que el número de filas del resultado es igual al número de registros de la primera tabla multiplicado por el número de registros de la segunda tabla, es decir, si hay 5 registros en una tabla y 6 en la otra, retorna 30 filas. > SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName 16 Tipos de Joins 17 Sentencia Group by > La declaración GROUP BY agrupa las filas que tienen los mismos valores en filas de resumen > La instrucción GROUP BY se usa a menudo con funciones agregadas (COUNT (), MAX (), MIN (), SUM (), AVG ()) para agrupar el conjunto de resultados por una o más columnas. > SELECT Customers.CustomerName, Orders.OrderID FROM Customers FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CustomerName > > > SELECT Shippers.CompanyName, COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders LEFT JOIN Shippers ON Orders.ShipVia = Shippers.ShipperID GROUP BY CompanyName 18 Operador Relacional 19