Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
SQL Nivel 224/9/2020 Guillermo Villanueva - guillermovil@Gmail.com 1 SQL Nivel 2 ▪ Subconsultas en ▪ INSERT, ▪ UPDATE, ▪ DELETE ▪ Diferentes tipos de reunión ▪ UPDATE con reunión ▪ DELETE con reunión 24/9/2020 Guillermo Villanueva - guillermovil@Gmail.com Agenda clase 3 2 SQL Nivel 2 Subconsultas en INSERT En el caso de insert se utiliza directamente una consulta que devuelve las filas que se desean insertar. Ejemplo: Agregar a la tabla de historial de clientes sus datos de ordenes previas al 01/05/2004 insert into cust_hist select customerid, orderid, prod_id from orders inner join orderlines using(orderid) where orders.orderdate < '2004-05-01'; 24/9/2020 Guillermo Villanueva - guillermovil@Gmail.com Subconsultas en INSERT, UPDATE, DELETE 3 SQL Nivel 2 Subconsultas en UPDATE Cada una de las expresiones del set pueden ser subconsultas como así también se pueden utilizar en el where con las mismas reglas ya vistas en SELECT. Ejemplo: Actualizar la fecha redundante de la tabla orderlines, con el dato que figura en orders, en todas aquellas filas de productos de categoría 8. update orderlines as ol set orderdate = ( select orderdate from orders as ord where ord.orderid = ol.orderid ) where ol.prod_id in ( select p.prod_id from products p where p.category = 8 ); 24/9/2020 Guillermo Villanueva - guillermovil@Gmail.com Subconsultas en INSERT, UPDATE, DELETE 4 SQL Nivel 2 Subconsultas en DELETE Se pueden utilizar subconsultas en el where con las mismas reglas ya vistas en SELECT. Ejemplo: Eliminar todos los clientes que nunca ordenaron productos. delete from customers c where customerid not in ( select customerid from orders ); 24/9/2020 Guillermo Villanueva - guillermovil@Gmail.com Subconsultas en INSERT, UPDATE, DELETE 5 SQL Nivel 224/9/2020 Guillermo Villanueva - guillermovil@Gmail.com Diferentes tipos de reunión 6 basket_bbasket_a basket_a INNER JOIN basket_b ON fruit_a = fruit_b basket_a LEFT JOIN basket_b ON fruit_a = fruit_b basket_a RIGHT JOIN basket_b ON fruit_a = fruit_b; Fuente: https://www.postgresqltutorial.com/postgresql-joins/ SQL Nivel 224/9/2020 Guillermo Villanueva - guillermovil@Gmail.com 7 basket_a FULL OUTER JOIN basket_b ON fruit_a = fruit_b; Fuente: https://www.postgresqltutorial.com/postgresql-joins/ SQL Nivel 2 La sentencia UPDATE modifica datos de una sola tabla pero admite reunión con el fin de obtener valores de otras tablas para las columnas que tiene que actualizar, la sintáxis es la siguiente: UPDATE tabla [AS alias] SET column_name = <expr> | DEFAULT column_name = (sub consulta) ... [FROM <lista de tablas>] [WHERE <condición de reunión> <condición de filtro>] Ejemplo: Actualizar la fecha redundante de la tabla orderlines, con el dato que figura en orders, en todas aquellas filas de productos de categoría 8. update orderlines as ol set orderdate = ord.orderdate from products as pr, orders as ord where ol.prod_id = pr.prod_id and ol.orderid = ord.orderid and pr.category = 8; 24/9/2020 Guillermo Villanueva - guillermovil@Gmail.com UPDATE con reunión 8 SQL Nivel 2 La sentencia delete permite borrar filas de una única tabla, pero es posible reunir con otras tablas para obtener información de filtros. DELETE FROM tabl [AS alias] [USING <lista de tablas> ] [WHERE <condición de reunión> <condición de filtro>] Ejemplo: eliminar historia de clientes-productos para los clientes de ‘Chile’ delete from cust_hist as ch using customers as cu where cu.customerid = ch.customerid and cu.country = 'Chile'; 24/9/2020 Guillermo Villanueva - guillermovil@Gmail.com DELETE con reunión 9
Compartir