Está en la página 1de 8

CUARTA CLASE DE SQL IMPLEMENTACION

--Consultas de dos o mas tablas


use BDMegagis
---Que tabla(s)
--unir las tablas (2x2)
--habilitar las columnas en comun
--Que columnas
--Que condicion
--Que orden/agrupamiento

--1. Crear un reporte de nombre del producto, precio y el nombre de la categoria a


la que pertenece
---Que tabla(s)
Categorias, Productos
--unir las tablas (2x2)
select
from Categorias
inner join Productos
--habilitar las columnas en comun
select
from Categorias
inner join Productos
on Categorias.CodCat=Productos.CodCat
--Que columnas
select ProductName, PrecioUnitario, NombreCategoria
from Productos
inner join Categorias
on Categorias.CodCat=Productos.CodCat

--2. Mostrar el codigo de la venta, el nombre del cliente y la fecha de venta


---de todas las ventas que realizaron el año 2014
--DRAFT
select *
from Venta

select *
from Clientes
--Que tabla(s)
Ventas, Clientes
--unir las tablas (2x2) CodCli
select
from Venta
inner join Clientes
--habilitar las columnas en comun
select
from Venta
inner join Clientes
on Ventas.CodCli=Clientes.CodCli
--Que columnas
select CodVen, Empresa, FechaVenta
from Venta
inner join Clientes
on Venta.CodCli=Clientes.CodCli
--Que condicion
where year(FechaVenta) = 2014
--dia, mes, anio
--Funcion
--Extaer solo el año de una columna tipo fecha
select year(getdate()) as Fechita
--3. Mostrar que nombre de productos, el nombre y apellido del empleado que
participo
--en la venta 11111
--Que tabla(s)
Empleados, Ventas, VentaDetalle, Producto
--Unir las tablas (2x2)
select
from Empleados
inner join Venta
--habilitar las columnas en comun
on Empleados.CodEmp=Venta.CodEmp
inner join VentaDetalle
--habilitar las columnas en comun
on Venta.CodVen=VentaDetalle.CodVen
inner join Productos
--habilitar las columnas en comun
on VentaDetalle.CodPro=Productos.CodPro
--inner join QuintaTabla
--habilitar las columnas en comun
--on QuintaTabla.CC=Producto.CC
--inner join SextaTabla
--habilitar las columnas en comun
---on SextaTabla.CCC=QuintaTabla.CCC
--inner join SeptimaTabla
--on SeptimaTabla.CCCC=Empleados.CCCC

--Que columnas
select ProductName as Producto, (Nombre+' '+Apellido) as Empleado
from Empleados
inner join Venta
--habilitar las columnas en comun
on Empleados.CodEmp=Venta.CodEmp
inner join VentaDetalle
--habilitar las columnas en comun
on Venta.CodVen=VentaDetalle.CodVen
inner join Productos
--habilitar las columnas en comun
on VentaDetalle.CodPro=Productos.CodPro
--Que condicion
where VentaDetalle.CodVen=11110

--4. Mostrar el nombre del Producto, el nombre del proveedor, el nombre de la


categoria
--y el nombre del cliente que participaron en la venta de codigo 10253

--Que tabla(s)
Categorias, Productos, VentasDetalle, Venta, Cliente,
Proveedor
--unir las tablas (2x2)
select ProductName, Proveedores.Empresa as Proveeedor,
NombreCategoria,Clientes.Empresa as Cliente
from Categorias
inner join Productos
on Categorias.CodCat=Productos.CodCat
inner join VentaDetalle
on VentaDetalle.CodPro=Productos.CodPro
inner join Venta
on Venta.CodVen=VentaDetalle.CodVen
inner join Clientes
on Clientes.CodCli=Venta.CodCli
inner join Proveedores
on Proveedores.CodPrv=Productos.CodPrv
--Que condicion
where VentaDetalle.CodVen=10253

--DML II
select *
from Productos
order by 4

--Que objeto
--Que accion
--Que condicion

--Actualizar el producto de codigo 73 asignando su nueva categoria a 8


update Productos--Que objeto
set CodCat=8--Que accion SET: Asignar GET :
Capturar
where CodPro=73-- OJO Que condicion

--Mostrar
select *
from Productos
where CodPro=73

--Actualizar los datos del Producto de codigo 41 asignando un nnuevo nombre


--a Queso de Cajamarca adicionar 20 y el nuevo proveedor es 10
update Productos--Que objeto
set ProductName='Queso de Cajamarca', Stock=(Stock+20),CodPrv=10 --Que
accion
where CodPro=41--Que condicion

select *
from Productos
where CodPro=41

--Por invierno realizar un descuento del 30% a todas la bebidas


select *
from Productos
where CodCat=1

--Agua de Mesa San Mateo botella de 1.5L --15.99


--Gaseosa COCA COLA Botella 1L --2.99
--Gaseosa SPRITE Botella 3L --4.59
--Vino SANTIAGO QUEIROLO Gran Vino Borgoña Botella 750ml --11.99
--Cerveza CUSQUEÑA Lata 355ml --25.90
--TV AOC LED 65" 5 2599.99

update Productos--Que objeto


set PrecioUnitario=PrecioUnitario*0.7--Que accion
where CodCat in (1, 5, 7)--Que condicion
---(24 rows affected)
select *
from Productos
where CodCat in (1, 5, 7)

select *
from Clientes

--Actualizar la ciudad del Cliente de codigo BONAP a Tarma

update Clientes--Que objeto


set Ciudad='Tarma'--Que accion
--where CodCli='BONAP'--Que Condicion OJO

select *
from Productos

--Comandos con Proteccion


--Actualizar el producto de codigo 40 a el nuevo nombre
--Queso Suizo
begin tran T001
update Productos---Que objeto
set ProductName='Queso Suizo'---Que accion
--where CodPro=40--Que condicion

---(78 rows affected)


select *
from Productos

--CTR+Z de las BD
rollback tran T001

--Mostrar
select *
from Productos

---Eliminar
--que objeto
--que accion

--Eliminar el producto de codigo 78 y 18


delete Productos--Que objeto
where CodPro=78--Que accion

--Mostrar
select *
from Productos

delete Productos--que objeto


where CodPro=18--que accion
--The DELETE statement conflicted with the REFERENCE constraint
"FK_Order_Details_Productos". The conflict occurred in database "BDMegagis", table
"dbo.VentaDetalle", column 'CodPro'.
--The statement has been terminated.

--PRIMERO DONDE ESTA SIENDO UTILIZADO


select *
from VentaDetalle
where CodPro=18

delete VentaDetalle--Que objeto


where CodPro=18--Que accion

--SEGUNDO EN LA TABLA ORIGINAL


delete Productos--que objeto
where CodPro=18--que accion
-- (1 row affected)

SELECT *
FROM Productos

---Eliminar en Venta detalles las ventas del prodcuto de codigo 25


begin tran ABC
delete VentaDetalle
---where CodPro=25

select count(*)
from VentaDetalle
--4235
---(4235 rows affected)

select *
from VentaDetalle

--Crtl+Z
rollback tran ABC

--PA
---PA sin parametros
--Crear un PA que permita mostrar la lista de los Clientes
create proc PA_LClientes
--Parametros
as
begin
--accion
select *
from Clientes
end

---ejecucion
exec PA_LClientes

PA_LCLientes
--LP ExecuteQuery('PA_LClientes')

--Crear un PA que permita listar solo los prodcutos de Categoria 5


create proc PA_LCat
--parametros
as
begin
select *
from Productos
where CodCat=5
end

--Ejecutar
exec PA_LCat

---Con Parametros

---MOdificar el PA anterior para ingresar por parametro la categoria


alter proc PA_LCat
@cat int --parametros
as
begin
select *
from Productos
where CodCat=5
end

--Ejecutando
exec PA_LCat 1

--Nuevamente modificamos
alter proc PA_LCat
@cat int --parametros
as
begin
select *
from Productos
where CodCat=@cat
end

--Ejecutando
exec PA_LCat 5

--Crear un PA que inserte un producto, envie un mensaje y finalmente muestre el


prodcuto ingresado

create proc PAFinal


--parametros
@nom varchar(100),
@cat int,
@pre money,
@stk int
as
begin
--Insertar
insert Productos(ProductName, CodCat, PrecioUnitario, Stock)
values(@nom,@cat,@pre,@stk)---INgresar como parametro'Sapolio', 7,
20,200)
--Enviar Mensaje
--Listar los productos llamando a otro pa

end

--Test
exec PAFinal 'Paneton en Bolsa',6, 5, 100

select *
from Productos

---Modificando el PA Anterior
alter proc PAFinal
--parametros
@nom varchar(100),
@cat int,
@pre money,
@stk int
as
begin
--Insertar
insert Productos(ProductName, CodCat, PrecioUnitario, Stock)
values(@nom,@cat,@pre,@stk)---INgresar como parametro'Sapolio', 7,
20,200)
--Enviar Mensaje
print 'Feliz 28 de Julio!!!! Salu2'
---Listar los productos llamando a otro pa
exec PA_LCat @cat
end

--Ejecutamos
exec PAFinal 'TV 50" LG SmartTV', 5, 2000.99,20

--XML JSON
--Crear un XML listando los productos
select *
from Productos
for XML auto

--Craer un xml listando lo prodcutos en unidad de c/producto


--y ademas que se pueda aperturar en cualquier aplicacion y ruta
select *
from Productos
for XML path('Producto'), root('Productos')

select *
from Productos
for json auto