Vous êtes sur la page 1sur 11

a--comentario de una linea

--creando una BD con filegroups


/* 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
--

5.- --cual fue la orden que tuvo mas productos


solicitado

select top(1) OrderID,COUNT(productid) as


Cantidad from [Order Details]

Vous aimerez peut-être aussi