Logo Studenta

SQL Nivel 2 - Clase 2

¡Estudia con miles de materiales!

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

Continuar navegando

Materiales relacionados

368 pag.
microsoft-sql-server-es

SIN SIGLA

User badge image

Krmen G

38 pag.
Clase 05 - Sublenguaje SQL DML

SIN SIGLA

User badge image

Sergio de los Santos