/* create database DRamos3 comentario de on (name='dramos3_data1', varias lineas filename='e:\disco1\dramos3_1.mdf', */ size=3, filegrowth=1, maxsize=unlimited), filegroup [apoyo1](name='dramos3_data2', /* filename='e:\disco2\dramos3_2.ndf', sentencias transact, las cuales estan definidas size=2, filegrowth=1, maxsize=unlimited), en un estandar filegroup [apoyo2](name='dramos3_data3', denominado ANSI-SQL-92. filename='e:\disco3\dramos3_3.ndf', size=2, filegrowth=1, maxsize=unlimited), SQL ==> Structure Query Language (Lenguaje filegroup [apoyo3](name='dramos3_data4', Estructurado de Consulta) filename='e:\disco4\dramos3_4.ndf', size=2, filegrowth=1, maxsize=unlimited) DDL (Data Definition Language) log on (name='dramos3_log', * CREATE -> crea un objeto filename='e:\disco5\dramos3.ldf', * ALTER -> modifica un objeto size=2, filegrowth=10%, maxsize=100) * DROP -> elimina un objeto go DML (Data Manipulation Language) exec sp_helpdb dramos3 * SELECT -> recupera datos de una tabla go * INSERT -> inserta una fila de datos a una tabla --ingresando a una BD * UPDATE -> modifica los datos de una use daniel_Ramos2 fila go * DELETE -> elimina una fila de datos --verificando q estamos dentro de la BD DCL (Data Control Language) select DB_NAME() *GRANT -> agrega privilegios a un go usuario sp_helpdb daniel_ramos2 *DENY -> niega privilegios a un go usuario --creando una tabla */ create table datos1( codigo int identity primary key, -- sentencias basicas cod2 uniqueidentifier default newid(), --nombre del servidor conectado usuario char(80) default suser_sname(), select @@SERVERNAME fecha datetime default getdate(), go equipo char(80) default host_name() ) --nombre del usuario go select SUSER_SNAME() --ingresando datos go declare @n int --nombre de la PC desde donde nos conectamos al set @n=1 Servidor BD while @n<=70000 select HOST_NAME() begin go insert datos1 default values --fecha y hora del servidor set @n=@n+1 select GETDATE() end go go --lista de BD existentes en el servidor --probando select * from sys.databases select * from datos1 go go --tambien podemos hacer uso de un procedimiento almacenado --ingresando a la BD con filegroups exec sp_helpdb use DRamos3 go go --este permite ver la composicion de una BD en --creando una tabla particular create table datos31( exec sp_helpdb model codigo int identity primary key, go cod2 uniqueidentifier default newid(), --creando una BD usuario char(80) default suser_sname(), create database Daniel_Ramos fecha datetime default getdate(), go equipo char(80) default host_name() ) exec sp_helpdb daniel_ramos go go --creando una tabla -- create table datos32( create database daniel_Ramos2 codigo int identity primary key, on (name='daniel_ramos2_data', cod2 uniqueidentifier default newid(), filename='e:\disco1\danielramos.mdf', usuario char(80) default suser_sname(), size=3, filegrowth=1, maxsize=unlimited) fecha datetime default getdate(), log on (name='daniel_ramos2_log', equipo char(80) default host_name() ) on apoyo2 filename='e:\disco2\danielramos.ldf', go size=2, filegrowth=10%, maxsize=100) --ingresando datos go declare @n int set @n=1 create type tdu_direcion while @n<=70000 from varchar(200) begin null insert datos32 default values go set @n=@n+1 create type tdu_email end from varchar(120) go null --probando go select * from datos31 --utilizando el tipo de dato go create table Amigos2 ( exec sp_helpdb dramos3 codigo int, go nombre varchar(80), sexo char(1), --creando schemas nacimiento date, create schema ventas direccion tdu_direcion, go telefono varchar(40), create schema logistica email tdu_email ) go go create table ventas.datos33( --ingresando datos a todos los campos codigo int identity, insert Amigos2 values(1,'julio valor char(80) ) yupanqui','m','1972-08-12','jr. desconocido', go '992-789-654','julioyupanqui@sistemasuni.edu.pe') create table logistica.datos34( --ingresando datos solo a algunos campos codigo int identity, insert Amigos2(codigo,nombre,sexo,email) valor char(80) ) values(2,'Eliana','f','eliana@gmail.com') go go --ingresando datos select * from Amigos2 insert ventas.datos33 values('yuca') go insert ventas.datos33 values('camote') --borrando el tipo de dato insert ventas.datos33 values('papa') drop type tdu_email go go select * from ventas.datos33 ------------ go create table Amigos3 ( select * from datos33 codigo int, nombre varchar(80) not null, sexo char(1), nacimiento date, /* direccion varchar(200), jueves 09 ago 2012 telefono varchar(40), */ email varchar(120) not null ) select * from sys.databases go go --probando create database clase2 insert Amigos3 values(1,'julio go yupanqui','m','1972-08-12','jr. desconocido', use clase2 '992-789-654','julioyupanqui@sistemasuni.edu.pe') go --ingresando datos solo a algunos campos --verificando insert Amigos3(codigo,nombre,sexo,email) select DB_NAME() values(2,'Eliana','f','eliana@gmail.com') go go --creando una tabla insert Amigos3(nombre,sexo) values('sofia create table Amigos1 ( franco','f') codigo int, insert Amigos3(codigo,nombre,sexo,email) nombre varchar(80), values(3,'sofia franco','f','sofiaf@gmail.com') sexo char(1), go nacimiento date, select * from Amigos3 direccion varchar(200), go telefono varchar(40), --agregando un campo email varchar(120) ) alter table amigos3 go add estadoCivil char(1) --ingresando datos a todos los campos go insert Amigos1 values(1,'henry chavez','m','1972- --eliminando una columna 08-12','jr. desconocido', alter table amigos3 '992-789-654','henrychavez@sistemasuni.edu.pe') drop column direccion --ingresando datos solo a algunos campos go insert Amigos1(codigo,nombre,sexo,email) --borrando una fila values(2,'Eliana','f','eliana@gmail.com') delete Amigos3 where nombre='sofia franco' go delete Amigos3 where codigo=3 select * from Amigos1 go select codigo,nombre,email from Amigos1 ------------ go create table Amigos4 ( --creando tipos de datos codigo int identity, nombre varchar(80) not null, sexo char(1), go nacimiento date, --creando una tabla con 2 indices direccion varchar(200), create table distrito3( telefono varchar(40), coddis char(3) primary key, email varchar(120) not null ) nomdis varchar(50) unique) go go --probando insert distrito3 values('L01','Lima Cercado') insert Amigos4 values('julio yupanqui','m','1972- insert distrito3 values('L25','Rimac') 08-12','jr. desconocido', insert distrito3 values('L18','Miraflores') '992-789-654','julioyupanqui@sistemasuni.edu.pe') insert distrito3 values('L27','San Isidro') --ingresando datos solo a algunos campos insert distrito3 values('L02','Ancón') insert Amigos4(nombre,sexo,email) insert distrito3 values('L03','Breña') values('Eliana','f','eliana@gmail.com') go go -- uso del clustered y nonclustered insert Amigos4(nombre,sexo,email) values('sofia create table distrito4( franco','f','sofiaf@gmail.com') coddis char(3) primary key clustered, go nomdis varchar(50) unique nonclustered) select * from Amigos4 go go insert distrito4 values('L01','Lima Cercado') delete Amigos4 where codigo>4 insert distrito4 values('L25','Rimac') go insert distrito4 values('L18','Miraflores') --usando restricciones insert distrito4 values('L27','San Isidro') create table Amigos5 ( insert distrito4 values('L02','Ancón') codigo int identity(1001,1) primary key, insert distrito4 values('L03','Breña') nombre varchar(80) unique not null, go sexo char(1) check(sexo in('f','m')) default 'f', --usando nonclustered nacimiento date, create table distrito5( direccion varchar(200) default 'sin direccion', coddis char(3) primary key nonclustered, telefono varchar(40), nomdis varchar(50) unique nonclustered) email varchar(120) not null ) go go insert distrito5 values('L01','Lima Cercado') insert Amigos5 values('manuel cruz','m','1969-07- insert distrito5 values('L25','Rimac') 27','jr.las coralinas 555', insert distrito5 values('L18','Miraflores') '999-888-777','manuelcruz@hotmail.com') insert distrito5 values('L27','San Isidro') go insert distrito5 values('L02','Ancón') insert Amigos5(nombre,email) insert distrito5 values('L03','Breña') values('nataly','naty@gmail.com') go go -- insert Amigos5(nombre,sexo,email) values('carlos select * from distrito1 cacho','i','cacho@gmail.com') select * from distrito2 go select * from distrito3 insert Amigos5(nombre,email) values('nataly select * from distrito4 briceño','naty@gmail.com') select * from distrito1 order by coddis go select * from distrito2 order by coddis select * from Amigos5 select * from distrito3 order by coddis go select * from distrito4 order by coddis /* select * from distrito5 order by coddis trabajando tablas con indices select * from distrito1 where coddis='L03' */ select * from distrito2 where coddis='L03' --tabla sin indices select * from distrito1 order by nomdis create table distrito1( select * from distrito2 order by nomdis coddis char(3), select * from distrito3 order by nomdis nomdis varchar(50) ) select * from distrito1 where nomdis='breña' go go insert distrito1 values('L01','Lima Cercado') -- insert distrito1 values('L25','Rimac') create table distrito6( insert distrito1 values('L18','Miraflores') coddis char(3), insert distrito1 values('L27','San Isidro') nomdis varchar(50) ) insert distrito1 values('L02','Ancón') go insert distrito1 values('L03','Breña') insert distrito6 values('L01','Lima Cercado') go insert distrito6 values('L25','Rimac') --creando una tabla con 1 indice insert distrito6 values('L18','Miraflores') create table distrito2( insert distrito6 values('L27','San Isidro') coddis char(3) primary key, insert distrito6 values('L02','Ancón') nomdis varchar(50) ) insert distrito6 values('L03','Breña') go go insert distrito2 values('L01','Lima Cercado') create unique nonclustered index uq_nomdis on insert distrito2 values('L25','Rimac') distrito6(nomdis asc) insert distrito2 values('L18','Miraflores') go insert distrito2 values('L27','San Isidro') create clustered index id_coddis on insert distrito2 values('L02','Ancón') distrito6(coddis asc) insert distrito2 values('L03','Breña') go select * from distrito6 insert Distrito values('L27','San Isidro') go insert Distrito values('L25','Rimac') -- go create table producto( insert codpro int identity primary key, Cliente(nomcli,tipoPersona,direccion,codPostal, nompro varchar(50) unique not null, telefono,email) values('Carlos Chunga','n', precio money not null) 'av.tarapaca 654','L25','555-4552', go 'carloschunga@uni.pe') , create table cliente( ('SistemasUNI','j','av.tupac amaru s/n','L25', codcli int identity(101,2) primary key, '318-3851','informes@sistemasuni.edu.pe') nomcli varchar(50) not null, go ruc char(8) unique not null, select * from Cliente fechaReg date default getdate() ) go go create table ClienteNatural( create table factura( codcli int references Cliente(codcli) primary nrofact int identity primary key, key, fecha date default getdate(), sexo char(1) check(sexo in('m','f')) default 'f', codcliente int references cliente(codcli) ) fechaNacimiento date, go dni char(8), create table detalle_factura( ruc char(11), nrofact int references factura(nrofact), estadoCivil char(1) codpro int references producto(codpro), check(estadoCivil in('s','c','v','d')) cantidad int, default's') importe money, go constraint pk_det_fact primary create table ClienteJuridico( key(nrofact,codpro) ) codcli int references Cliente(codcli) primary go key, ruc char(11), nomGerente varchar(80), otroContacto varchar(80), /* cargo varchar(120) ) clase 3 go 14-ago-2012 --ingresando datos */ insert ClienteNatural values(1001,'m','1965-01- use clase2 21', go null,null,'c') select * from sys.tables insert ClienteJuridico values(1002,'20123456780', go 'Hernan Parra Osorio','Daniel Ramos','docente') exec sp_helpindex detalle_factura go go --mas tablas exec sp_helpindex distrito3 create table Producto( go codPro int identity primary key, exec sp_helpindex distrito5 nomPro varchar(120) unique not null, go precioVenta money, --creando una nueva BD stock int check(stock >=0) default 0, create database Clase3 fecReg datetime default getdate() ) go go use clase3 drop table Comprobante go go create table Distrito( create table Comprobante( coddis char(3) primary key, tipoCom char(1) check(tipoCom in('b','f')), nomdis varchar(50) unique not null ) nroCom int check(nroCom>=0), go fecEmision date default getdate(), create table Cliente( codCli int references Cliente(codcli), codcli int identity(1001,1) primary key, constraint PK_Comprobante primary nomcli varchar(80) not null, key(tipoCom,nroCom) ) tipoPersona char(1) check(tipoPersona go in('j','n')) create table DetaComprobante( default 'n', tipoCom char(1), nroCom int, direccion varchar(200), codPro int references Producto(codpro), codPostal char(3) references Distrito(coddis), cantidad int, telefono varchar(40), importe money, email varchar(120) unique not null, constraint FK_Comprobante foreign fecReg datetime default getdate(), key(tipoCom,nroCom) usuReg varchar(80) default suser_sname(), references Comprobante(tipoCom,nroCom), maqReg varchar(80) default host_name() ) constraint PK_Deta_Com go primary key(tipoCom,nroCom,codpro) ) --ingresando datos go insert Distrito values('L01','Lima Cercado') insert Distrito values('L02','Ancón') /* insert Distrito values('L03','Breña') implementando desencadenadores insert Distrito values('L18','Miraflores') */ create table Historico_Producto( create trigger nueva_cta on cta_bco id_Historico bigint identity primary key, for insert AS tipo char(3) check(tipo in('ins','upd','del')), insert movi_cta(nrocta,haber) codPro int, select nrocta,lineaCredito from inserted nomPro varchar(120), go precioVenta money, create trigger nuevo_movi on movi_Cta stock int , for insert AS fecReg datetime, declare @cta int,@debe money,@haber money fecHisto datetime default getdate(), select @cta=nrocta,@debe=debe,@haber=haber usuHisto varchar(80) default suser_sname(), from inserted maqHisto varchar(80) default host_name() ) update cta_bco set saldo=saldo+@haber-@debe go where nrocta=@cta --creando el trigger go create trigger nuevo_producto on producto --probando for insert AS insert cta_bco(usucta,lineacredito) insert historico_producto(tipo,codpro,nompro, values('Daniel Ramos',7500) precioventa,stock,fecreg) go select insert movi_cta(nrocta,debe) values(1,500) 'ins',codpro,nompro,precioventa,stock, insert movi_cta(nrocta,debe) values(1,950) fecreg from inserted insert movi_cta(nrocta,haber) values(1,600) go go --probando select * from cta_bco insert Producto values('mouse select * from movi_cta optico',23.50,15,default) go --modificacion create trigger modifica_producto on producto /* for update AS Clase 4 insert historico_producto(tipo,codpro,nompro, martes 21 agosto 2012 precioventa,stock,fecreg) */ select select * from sys.databases 'upd',codpro,nompro,precioventa,stock, go fecreg from deleted --verificar la existencia de la BD Northwind go -- 172.17.2.196 --probando use Northwind update Producto set precioVenta=28.99 go where codPro=1 --verificando q estamos dentro de la BD go select DB_NAME() --eliminacion go create trigger elimina_producto on producto select * from sys.tables for delete AS go insert historico_producto(tipo,codpro,nompro, --usando el Select precioventa,stock,fecreg) select * from Customers select go 'del',codpro,nompro,precioventa,stock, --para ver la estructura de la tabla fecreg from deleted exec sp_help customers go go --probando select delete Producto where codPro=1 CustomerID,CompanyName,ContactName,ContactTitle,A go ddress, select * from Producto City,Region,PostalCode,Country,Phone,Fax from select * from Historico_Producto Customers go go select /* CustomerID,CompanyName,Address,City,Country otro ejemplo de trigger from Customers */ go create table cta_bco( --mostrar los clientes de Alemania nrocta int identity primary key, select usucta varchar(80) not null, CustomerID,CompanyName,Address,City,Country lineaCredito money default 0, from Customers saldo money check(saldo>=0) default 0, where Country='germany' fecReg datetime default getdate() ) go go -- create table movi_cta( select * from Products operacion bigint identity primary key, go nrocta int references cta_bco(nrocta), --mostrar los productos cuyo precio es menor a 20 debe money default 0, select * from Products haber money default 0, where UnitPrice<20 fecmovi datetime default getdate() ) go go --creando los triggers --mostrar los productos cuyo stock esta entre 20 where Country='argentina' or Country='brazil' y 30 go select * from Products --mostrar todos los clientes de America where UnitsInStock>20 and UnitsInStock<30 select go CustomerID,CompanyName,Address,City,Country --mostrar los clientes que son de brazil o from Customers argentina where Country='argentina' or Country='brazil' or select Country='usa' CustomerID,CompanyName,Address,City,Country or Country='canada' or Country='mexico' or from Customers Country='venezuela' where Country='argentina' or Country='brazil' go go --usando listas -- select select * from Orders CustomerID,CompanyName,Address,City,Country go from Customers --mostrar las ordenes generadas entre 21-08-97 y where Country 21-09-97 in('argentina','brazil','usa','canada','mexico',' select OrderID,CustomerID,EmployeeID,OrderDate venezuela') from Orders go where OrderDate>='1997-08-21' and select OrderDate<='1997-09-21' CustomerID,CompanyName,Address,City,Country,Phone go ,Fax -- from Customers select go CustomerID,CompanyName,ContactName,Address,City,C --clientes que no tienen Nro de Fax ountry select from Customers where ContactName like '%ana%' CustomerID,CompanyName,Address,City,Country,Phone go ,Fax select from Customers where Fax is null CustomerID,CompanyName,ContactName,Address,City,C go ountry --cuales son los clientes que Si tienen Fax from Customers where CompanyName like 'dos%' select go CustomerID,CompanyName,Address,City,Country,Phone select ,Fax CustomerID,CompanyName,ContactName,Address,City,C from Customers where Fax is not null ountry go from Customers where CompanyName like '%dos' --ordenando los datos go select select CustomerID,CompanyName,Address,City,Country CustomerID,CompanyName,ContactName,Address,City,C from Customers ountry order by Country from Customers where CompanyName like '%dos%' go go select -- uso de operadores logicos CustomerID,CompanyName,Address,City,Country --mostrar los clientes de argentina from Customers select order by Country desc CustomerID,CompanyName,Address,City,Country go from Customers select where Country='argentina' CustomerID,CompanyName,Address,City,Country go from Customers --mostrar todos los clientes menos los de order by Country, City argentina go select select CustomerID,CompanyName,Address,City,Country CustomerID,CompanyName,Address,City,Country from Customers from Customers where not Country='argentina' order by Country desc, City asc go go --intervalo de valores select select * from Products CustomerID,CompanyName,Address,City,Country where UnitsInStock>20 and UnitsInStock<30 from Customers go order by Country desc, City desc select * from Products go where UnitsInStock>=20 and UnitsInStock<=30 --mostrar los paises donde tenemos clientes go select Country from Customers --between go select * from Products select distinct Country from Customers where UnitsInStock between 20 and 30 go go --cambiando el titulo del campo ---- select select CustomerID,CompanyName,Address,City,Country CustomerID,CompanyName,Address,City,Country from Customers from Customers go select CustomerID as Codigo,CompanyName as go Cliente,Address as Direccion, delete Demo11 City as Ciudad,Country as Pais go from Customers truncate table demo11 go go select CustomerID as Codigo,CompanyName as --- "Nombre del Cliente", select * from catalogo_productos Address as [Direccion del Cliente],City as go Ciudad,Country as Pais alter table catalogo_productos from Customers add PrecioVenta money go go --uso de literales update catalogo_productos set precioventa=9.99 select CompanyName,'codigo -->',CustomerID where productid=1 from Customers go go update catalogo_productos set precioventa=8.888 select 'El cliente ' as ' ',CompanyName,'se go encuentra en' as ' ',Country update catalogo_productos set from Customers precioventa=unitprice*1.25 go go --------------- ------------------------------------------------- select * from copia_cliente ---- go ------------------------------------------------- --insert desde otra tabla ---- insert copia_cliente select ------------------------------------------------- CustomerID,CompanyName,ContactName, ---- ContactTitle,Address,City,Region,PostalCode,Count select * from sys.tables ry,Phone,Fax from Customers go go select * into Copia_Cliente from Customers delete copia_cliente go go select * from copia_cliente insert go copia_cliente(customerid,companyname,city,country select * into copia2_cliente from copia_cliente ) go select CustomerID,CompanyName,City,Country from select * from copia2_cliente Customers go go select ProductID,ProductName,UnitPrice,UnitsInStock into Catalogo_Productos from Products go --tablas en Memoria select ProductID,ProductName,UnitPrice,UnitsInStock into #Catalogo1 from Products /* go Clase 5 select * from #catalogo1 23-ago-2012 go */ select use Northwind ProductID,ProductName,UnitPrice,UnitsInStock go into ##Catalogo2 from Products --mostrar los 5 productos mas caros go select top(5) ProductID,ProductName,UnitPrice select * from ##catalogo2 from Products go order by UnitPrice desc ----- go select * from copia_cliente --mostrar los 9 productos mas baratos go select top(9) ProductID,ProductName,UnitPrice --probando el uso del DELETE from Products --eliminando al cliente Antonio Moreno order by UnitPrice delete copia_cliente where customerid='anton' go go --existiran productos con el mismo precio??? delete copia_cliente where country='mexico' select top (9) with ties go ProductID,ProductName,UnitPrice from Products delete copia_cliente order by UnitPrice go go --- --cuantos clientes tenemos??? create table Demo11( select COUNT(*) from Customers codigo int identity primary key, go fecha datetime default getdate()) select COUNT(CustomerID) from Customers go go insert Demo11 default values select COUNT(Region) from Customers go go select * from Demo11 --cuantos clientes tienen Fax?? select COUNT(Fax) from Customers go -- 172.17.2.196 --y cuantos clientes NO tienen Fax?? select * from [Order Details] where OrderID=11077 select COUNT(*) from Customers where Fax is null select * from [Order Details] where OrderID=10895 go --cual es el precio mas alto??? --cual es la orden que tiene mas productos select MAX(unitprice) from Products solicitados go select top(1) OrderID,COUNT(productid) as --cual es el precio mas bajo??? Cantidad from [Order Details] select Min(unitprice) from Products group by OrderID go order by Cantidad desc --cual es el precio promedio?? go select avg(unitprice) from Products --cual es la orden que tiene mayor cantidad de go productos solicitados --cual es el valorizado del almacen??? select top(1) OrderID,SUM(quantity) as total from select * from Products [Order Details] go group by OrderID select order by total desc ProductName,UnitPrice,UnitsInStock,UnitPrice*Unit go sInStock from Products /* go uso del compute select sum(UnitPrice*UnitsInStock) from Products */ go select * from Customers --cuantos clientes tenemos x pais?? compute count(customerid) select country,COUNT(*) as Total from Customers go group by Country select * from Customers go order by Country ---- compute count(customerid) by country select * from Products go go --cuantos productos tengo x cada categoria?? /* select CategoryID,COUNT(*) from Products sub consultas group by CategoryID */ go --mostrar los productos cuyo precio sea mayor al --cuantos productos tengo x cada categoria cuyo precio promedio precio sea mayor a 50?? select ProductID,ProductName,UnitPrice, select CategoryID,COUNT(*) (select AVG(unitprice) from Products) as Promedio from Products where UnitPrice>50 from Products group by CategoryID where UnitPrice>(select AVG(unitprice) from go Products) --en que paises tenemos mas de 7 clientes??? go select country,COUNT(*) as Total from Customers --mejorando group by Country having COUNT(*)>7 declare @prome money go select @prome=AVG(unitprice) from Products ------------------------ select ProductID,ProductName,UnitPrice,@prome as select OrderID,CustomerID,EmployeeID,OrderDate Promedio from Orders from Products go where UnitPrice>@prome --cuantas ordenes se realizaron x cliente durante go el año 97 ??? -------------------- select CustomerID,COUNT(*) select EmployeeID,LastName,FirstName,Country from from Orders Employees where OrderDate>='1997-01-01' and go OrderDate<='1997-12-31' select CustomerID,CompanyName,Country from group by CustomerID Customers go go select CustomerID,COUNT(*) /*mostrar aquellos clientes que pueden ser from Orders atendidos en su pais where year(OrderDate)=1997 por un empleado*/ group by CustomerID select CustomerID,CompanyName,Country from go Customers ------------- where Country in(select distinct Country from select * from [Order Details] Employees) go go --cuales fueron los 5 productos q tuvieron mas solicitados??? /* select top(5) ProductID,SUM(quantity) as Total uso del JOIN from [Order Details] */ group by ProductID select * from [Order Details] order by Total desc go go select go OrderID,P.ProductName,OD.UnitPrice,Quantity,Disco --ranking de ventas x cliente unt select companyname,SUM(importe) as Ventas from [Order Details] as OD from v_orden_completa join Products as P on OD.ProductID=P.ProductID group by companyname go order by Ventas desc --cuantas ordenes han realizado cada empleado??? go select E.LastName,COUNT(*)as Total --que vistas hay creadas?? from Orders as O select * from sys.views join Employees as E on O.EmployeeID=E.EmployeeID go group by E.LastName --como veo la sentencia de una vista go exec sp_helptext v_orden_completa ----- go select OrderID,CustomerID,EmployeeID,OrderDate exec sp_helptext "Products Above Average Price" from Orders go go -- --luego select * from sys.objects select go O.OrderID,C.CompanyName,E.LastName,OrderDate, select * from sys.syscomments P.ProductName,OD.Quantity,OD.UnitPrice,OD.Discoun go t, --juntando las tablas (OD.Quantity*OD.UnitPrice*(1-OD.Discount)) as select SO.name,SSC.text Importe from sys.objects as SO from Orders as O join sys.syscomments as SSC on join Customers as C on O.CustomerID=C.CustomerID SO.object_id=SSC.id join Employees as E on O.EmployeeID=E.EmployeeID go join [Order Details] as OD on --vista encriptada O.OrderID=OD.OrderID create view v_Clientes AS join Products as P on OD.ProductID=P.ProductID select customerid,companyname,city,country from go Customers go select * from v_clientes go create view v_Clientes_2 with encryption AS /* select customerid,companyname,city,country from clase 6 Customers 28-ago-2012 go */ select * from v_clientes_2 order by country use Northwind go go --172.17.2.196 --uso del JOIN create view v_Clientes_3 with encryption AS select select customerid as Codigo,companyname as O.OrderID,C.CompanyName,E.LastName,OrderDate, Nombre,city as ciudad, P.ProductName,OD.Quantity,OD.UnitPrice,OD.Discoun country as Pais from Customers t, go (OD.Quantity*OD.UnitPrice*(1-OD.Discount)) as select * from v_clientes_3 order by pais Importe go from Orders as O -- mostrar los productos cuyo precio sea mayor al join Customers as C on O.CustomerID=C.CustomerID promedio join Employees as E on O.EmployeeID=E.EmployeeID declare @prome money join [Order Details] as OD on select @prome=AVG(unitprice) from Products O.OrderID=OD.OrderID select ProductID,ProductName,UnitPrice,@prome join Products as P on OD.ProductID=P.ProductID from Products go where UnitPrice>@prome --creando una vista go create view v_Orden_Completa AS --creando un procedimiento select create proc pa_Productos_mayor_promedio AS O.OrderID,C.CompanyName,E.LastName,OrderDate, declare @prome money P.ProductName,OD.Quantity,OD.UnitPrice,OD.Discoun select @prome=AVG(unitprice) from Products t, select ProductID,ProductName,UnitPrice,@prome (OD.Quantity*OD.UnitPrice*(1-OD.Discount)) as from Products Importe where UnitPrice>@prome from Orders as O go join Customers as C on O.CustomerID=C.CustomerID --probando join Employees as E on O.EmployeeID=E.EmployeeID exec pa_productos_mayor_promedio join [Order Details] as OD on go O.OrderID=OD.OrderID --mostrar los clientes de un determinado pais join Products as P on OD.ProductID=P.ProductID create proc pa_Cliente_Pais go @pais varchar(30) AS --probando select customerid,companyname,city,country from select * from v_orden_completa Customers where Country=@pais go select 'La Suma es:',@rpta --mejorando go alter proc pa_Cliente_Pais /* @pais varchar(30)=null AS Funciones if @pais is null */ begin create function f_Suma(@n int,@m int) returns int raiserror('Debe ingresar el Nombre de un begin PAIS...',15,1) return @n+@m return end end go if (select count(*) from Customers where --probando Country=@pais)>0 select 'La suma es: ',dbo.f_suma(7,13) select customerid,companyname,city,country go from Customers --otra where Country=@pais create function f_Nulos(@dato nvarchar(200)) else returns nvarchar(200) raiserror('Nombre de Pais NO begin Existe...',15,1) if @dato is null go set @dato=' ' --probando return @dato exec pa_cliente_pais end exec pa_cliente_pais 'usa' go exec pa_cliente_pais 'alemania' --probando exec pa_cliente_pais 'germany' select go CustomerID,CompanyName,Address,Region,City,Countr --mostrar las ventas de un empleado en un y, determinado año phone,fax from Customers create proc pa_Ventas_Empleado_Año go @empleado varchar(30),@año int AS select select lastname,SUM(importe) CustomerID,CompanyName,Address,dbo.f_nulos(Region from v_orden_completa ) as REGION, where lastname=@empleado and YEAR(orderdate)=@año City,Country,phone,dbo.f_nulos(Fax) as FAX group by lastname from Customers go go --probando --funcion con valores de multiples tablas exec pa_ventas_empleado_año 'suyama',1996 create function f_Lista_Contable() returns @tmp exec pa_ventas_empleado_año 'suyama',1997 table(tipo char(1), exec pa_ventas_empleado_año 'suyama',1998 codigo char(10),nombre varchar(80), direccion go varchar(120), create proc pa_Nuevo_Cliente ciudad varchar(30),pais varchar(30) ) @codigo char(10)=NULL, @nombre varchar(80), begin @contacto varchar(80), insert @tmp select @cargo varchar(30),@direccion 'C',customerid,companyname,address,city, varchar(120),@ciudad varchar(30), country from customers @pais varchar(30) AS insert @tmp select if @codigo is null 'P',supplierid,companyname,address,city, begin country from suppliers raiserror('Debe ingresar el return Codigo,Nombre,contacto,cargo,direccion, end ciudad y pais del Cliente',15,1) --probando return select * from dbo.f_lista_contable() end go insert --funcion con valores de tabla en linea Customers(CustomerID,CompanyName,ContactName,Cont create function f_Clientes_Pais(@pais actTitle, nvarchar(30)) Address,City,Country) returns table return(select values(@codigo,@nombre,@contacto, customerid,companyname,address,city, @cargo,@direccion,@ciudad,@pais) country from customers where go country=@pais) --probando go exec pa_nuevo_cliente --probando 'A0001','SistemasUNI','Daniel Ramos','Docente', select * from dbo.f_clientes_pais('usa') 'Av. Tupac Amaru s/n','Lima','Perú' go go /* --procedimientos con valores de salida XML create proc pa_Suma */ @n int,@m int,@r int output AS select set @r=@n+@m customerid,companyname,address,city,country go from customers for xml auto --probando go declare @rpta int select exec pa_suma 7,13,@rpta output customerid,companyname,address,city,country from customers for xml auto,elements group by OrderID go order by Cantidad desc select go customerid,companyname,address,city,country from customers for xml raw('Cliente'),root('Clientes') go
/*
1. cual fue el producto mas solicitado
2. cuales fueron los 3 productos mas vendidos 3. en que mes se realizaron mas ordenes 4. que cliente realizo la mayor cantidad de ordenes 5. cual fue la orden que tuvo mas productos solicitados */
use Northwind
1.--- cual fue le producto mas solicitado:
select top(1) ProductID,SUM(quantity) as Total
from [Order Details] group by ProductID order by Total desc go
2.----cuales fueron los tres priductos mas
vendidos
select top(3) ProductID,SUM(quantity) as cantidad
from [Order Details] group by ProductID order by cantidad desc
go
3.-- en que mes se realizaron mas ordenes
select OrderID,CustomerID,EmployeeID,OrderDate from Orders mon OrderDate>='1996' and OrderDate<='1999' go
4.- ----que cliente realizo la mayor cantidad de
ordenes
select top (1)C.CompanyName,OD.Quantity
from Orders as O join Customers as C on O.CustomerID=C.CustomerID join Employees as E on O.EmployeeID=E.EmployeeID join [Order Details] as OD on O.OrderID=OD.OrderID join Products as P on OD.ProductID=P.ProductID order by Quantity desc go --