Está en la página 1de 20

1 Bloques de Cdigo

Ejemplo 1.1
SELECT * FROM HumanResources.Employee
SELECT * FROM HumanResources.EmployeePayHistory
SELECT * FROM Person.Address
GO

Ejemplo 1.2
SELECT * FROM Person.AddressType
SELECT * FROM Production.BillOfMaterials
SELECT * FROM Person.BusinessEntity
GO

Ejemplo 1.3
SELECT AddressID as 'ID de Direccion', PostalCode as 'Codigo Postal'
FROM Person.Address
SELECT Name as 'Nombre', StartTime as 'Fecha de Inicio'
FROM HumanResources.Shift
GO

Ejemplo 1.4
SELECT ed.DepartmentID, s.Name
FROM HumanResources.EmployeeDepartmentHistoryed INNER JOIN
HumanResources.Shift s
ON ed.ShiftID = s.ShiftID
SELECT ed.DepartmentID, d.Name, d.GroupName
FROM HumanResources.EmployeeDepartmentHistoryed INNER JOIN
HumanResources.Department d
ON ed.DepartmentID = d.DepartmentID
GO





Ejemplo 1.5
SELECT ed.DepartmentID, s.Name
FROM HumanResources.EmployeeDepartmentHistoryed INNER JOIN
HumanResources.Shift s
ON ed.ShiftID = s.ShiftID WHERE ed.ShiftID = 3
SELECT ed.DepartmentID, d.Name, d.GroupName
FROM HumanResources.EmployeeDepartmentHistoryed INNER JOIN
HumanResources.Department d
ON ed.DepartmentID = d.DepartmentID WHERE ed.DepartmentID = 4
GO





2 Usando Variables
Ejemplo 2.1 DECLARE @Nombre varchar(30);
Ejemplo 2.2 DECLARE @Numero int
Ejemplo 2.3 DECLARE @Dinero Money
Ejemplo 2.4 DECLARE @NumeroPequenosmallint
Ejemplo 2.5 DECLARE @Fecha date
Ejemplo 2.6 DECLARE @Decimal real





3 EstablecerValores a Variables
Ejemplo 3.1
DECLARE @Nombre varchar(30)
SET @Nombre = Tu Variable de Cadena
PRINT @Nombre
Ejemplo 3.2
DECLARE @Numeroint
SET @Numero = 12
PRINT @Numero
Ejemplo 3.3
DECLARE @Dineromoney
SET @Dinero = 20
PRINT @Dinero
Ejemplo 3.4
DECLARE @NumeroPequenosmallint
SET @NumeroPqueno = 12
PRINT @NumeroPequeno
Ejemplo 3.5
DECLARE @Fechadate
SET @Fecha = GETDATE()
PRINT @Fecha
Ejemplo 3.6
DECLARE @Decimal real
SET @Decimal = 12.56999999
PRINT @Decimal

4 DesplegandoMensajes de Usuario
Ejemplo 4.1
PRINT Hola, Muy buenos das
GO
Ejemplo 4.2
PRINT El tipo de dato no es correcto
GO
Ejemplo 4.3
PRINT El pago debe ser mayor a 50000
GO
Ejemplo 4.5
PRINT Iniciando Curso de SQL Server 2008
GO
Ejemplo 4.6
PRINT Este es mi Mensaje de Usuario
GO

Ejemplo 4.7
PRINT Vamos al siguiente tema
GO

5 Instruccin IF ELSE
Ejemplo 5.1
IF
(SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5
PRINT 'Aquiestan mas de 5 bicletasTouring-3000.'
ELSE
PRINT 'Aqui hay menos de 5 biciletas Touring-3000.'
GO
Ejemplo 5.2
DECLARE @AvgWeight decimal(8,2), @BikeCountint
IF
(SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5
BEGIN
SET @BikeCount =
(SELECT COUNT(*)
FROM Production.Product
WHERE Name LIKE 'Touring-3000%')
SET @AvgWeight =
(SELECT AVG(Weight)
FROM Production.Product
WHERE Name LIKE 'Touring-3000%')
PRINT 'Aqui hay ' + CAST(@BikeCount AS varchar(3)) + ' bicilcetas Touring-3000.'
PRINT 'El peso promedio de las bicicletas Touring-3000 es ' + CAST(@AvgWeight AS
varchar(8)) + '.'
END
ELSE
BEGIN
SET @AvgWeight =
(SELECT AVG(Weight)
FROM Production.Product
WHERE Name LIKE 'Touring-3000%' )
PRINT 'El promedio de peso de las bicicletas Touring-3000 es ' + CAST(@AvgWeight AS
varchar(8)) + '.'
END
Ejemplo 5.3
DECLARE @Sueldo money
SELECT @Sueldo = Rate
FROM HumanResources.EmployeePayHistory WHERE BusinessEntityID = 5
IF @Sueldo< 15.00
PRINT 'ConsiderarAumento'
ELSE
PRINT 'El empleado tiene buen sueldo'

Ejemplo 5.4
DECLARE @Contadorint
SELECT @Contador = COUNT(BusinessEntityID) FROM HumanResources.JobCandidate
IF @Contador <= 2
PRINT 'Solo hay ' + CAST(@Contador AS varchar(5)) + ' Entidadades de Negocio'
ELSE
PRINT 'No hay Entidades de Negocio'

Ejemplo 5.5
DECLARE @Contadorint
SELECT @Contador = COUNT(Name) FROM HumanResources.Department
IF @Contador < 20
PRINT 'Hay Departamentos ' + CAST(@Contador AS varchar(5)) + ' Falta Agregar'
ELSE
PRINT 'Los Departamentos estn Completos'







6 Instruccion Case
Ejemplo 6.1
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Camino'
WHEN 'M' THEN 'Montaa'
WHEN 'T' THEN 'Tour'
WHEN 'S' THEN 'Otro articulo de ventas'
ELSE 'No Esta en Venta'
END,
Ejemplo 6.2
USE AdventureWorks;
GO
Name
FROM Production.Product
GO
USE AdventureWorks;
GO
SELECT ProductNumber, Name, 'Rango de Precios' =
CASE
WHEN ListPrice = 0 THEN 'Este elemento no esta en reventa'
WHEN ListPrice< 50 THEN 'Menos de 50'
WHEN ListPrice>= 50 and ListPrice< 250 THEN 'Mayor a 50 y Menor a 250'
WHEN ListPrice>= 250 and ListPrice< 1000 THEN 'Mayor a 250 y Menor a 1000'
ELSE 'Mayor a 1000'
END
FROM Production.Product
GO




7 Instruccin WHILE
Ejemplo 7.1
WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300
BEGIN
UPDATE Production.Product
SET ListPrice = ListPrice * 2
SELECT MAX(ListPrice) FROM Production.Product
IF (SELECT MAX(ListPrice) FROM Production.Product) > $500
BREAK
ELSE
CONTINUE
END
Ejemplo 7.2
DECLARE @counter INT
SET @counter = 0
WHILE @counter <5
BEGIN
SET @counter = @counter + 1
PRINT 'El contador : ' + CAST(@counter AS CHAR)
END
Ejemplo 7.3
DECLARE @contadorint
SET @contador = 0
WHILE (@contador< 100)
BEGIN
SET @contador = @contador + 1
IF (@contador % 2 = 0)
CONTINUE
PRINT 'Contador ' + cast(@contador AS varchar)
END
Ejemplo 7.4
DECLARE @contador INT, @contador1 INT
SELECT @contador = 0, @contador1 = 5
WHILE @contador <> @contador1
BEGIN
SELECT 'La variable @contador es menor que @contador1'
SELECT @contador = @contador + 1
END

8 Instruccin TRY CATCH
Ejemplo 8.1
BEGIN TRY
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
Ejemplo 8.2
BEGIN TRY
PRINT N'Starting execution';
SELECT ** FROM HumanResources.Employee;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_MESSAGE() AS ErrorMessage;
END CATCH;








9 Usando Raiserror
Ejemplo 9.1
RAISERROR (N'Este mensaje es %s %d.', 10,1, N'Numero',5)
GO
Ejemplo 9.2
BEGIN TRY
RAISERROR ('Error que regresa el Bloque Try.',16, 1);
END TRY
BEGIN CATCH
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;

SELECT
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
RAISERROR (@ErrorMessage, @ErrorSeverity,@ErrorState)
END CATCH








10 DML Triggers
Ejemplo 10.1
IF OBJECT_ID ('Sales.reminder1', 'TR') IS NOT NULL
DROP TRIGGER Sales.reminder1;
GO
CREATE TRIGGER reminder1
ON Sales.Customer
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Customer Relations', 16, 10);
GO
Ejemplo 10.2
IF OBJECT_ID ('Sales.reminder2','TR') IS NOT NULL
DROP TRIGGER Sales.reminder2;
GO
CREATE TRIGGER reminder2
ON Sales.Customer
AFTER INSERT, UPDATE, DELETE
AS
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Administardor de la base',
@recipients = 'ae.tello@hotmail.com',
@body = 'No olvides realizar el reporte de los cambios,',
@subject = 'Recordatorio';
GO






Ejemplo 10.3
IF OBJECT_ID ('Purchasing.LowCredit','TR') IS NOT NULL
DROP TRIGGER Purchasing.LowCredit;
GO

CREATE TRIGGER Purchasing.LowCredit ON Purchasing.PurchaseOrderHeader
AFTER INSERT
AS
IF EXISTS (SELECT *
FROM Purchasing.PurchaseOrderHeader p
JOIN inserted AS i
ON p.PurchaseOrderID = i.PurchaseOrderID
JOIN Purchasing.Vendor AS v
ON v.BusinessEntityID = p.VendorID
WHERE v.CreditRating = 5
)
BEGIN
RAISERROR ('A vendor''s credit rating is too low to accept new
purchase orders.', 16, 1);
ROLLBACK TRANSACTION;
RETURN
END;
GO




11 DDL Triggers
Ejemplo 11.1
CREATE TRIGGER ddl_message ON DATABASE
AFTER ALTER_TABLE
AS
PRINT 'Someone is changing tables!';
GO
Ejemplo 11.2
CREATE TRIGGER LogNewTableCreation
ON DATABASE
FOR CREATE_TABLE
AS
BEGIN
INSERT INTO Management.DatabaseOperations
VALUES(SUSER_SNAME(),
N'A new table was created', GETDATE())
END
GO

12 Stored Procedures
Ejemplo 12.1
IF OBJECT_ID ( 'HumanResources.uspGetAllEmployees', 'P' ) IS NOT NULL
DROP PROCEDURE HumanResources.uspGetAllEmployees;
GO
CREATE PROCEDURE HumanResources.uspGetAllEmployees
AS
SET NOCOUNT ON;
SELECT LastName, FirstName, Department
FROM HumanResources.vEmployeeDepartmentHistory;
GO
Ejemplo 12.2
CREATE PROCEDURE dbo.uspMultipleResults
AS
SELECT TOP(10) BusinessEntityID, Lastname, FirstName FROM Person.Person;
SELECT TOP(10) CustomerID, AccountNumber FROM Sales.Customer;
GO


13 Stored Procedures con Parmetros
Ejemplo 13.1
IF OBJECT_ID ( 'HumanResources.uspGetEmployees', 'P' ) IS NOT NULL
DROP PROCEDURE HumanResources.uspGetEmployees;
GO
CREATE PROCEDURE HumanResources.uspGetEmployees
@LastNamenvarchar(50),
@FirstNamenvarchar(50)
AS

SET NOCOUNT ON;
SELECT FirstName, LastName,Department
FROM HumanResources.vEmployeeDepartmentHistory
WHERE FirstName = @FirstName AND LastName = @LastName;
GO
Ejemplo 13.2
IF OBJECT_ID ( 'HumanResources.uspGetEmployees2', 'P' ) IS NOT NULL
DROP PROCEDURE HumanResources.uspGetEmployees2;
GO
CREATE PROCEDURE HumanResources.uspGetEmployees2
@LastNamenvarchar(50) = N'D%',
@FirstNamenvarchar(50) = N'%'
AS
SET NOCOUNT ON;
SELECT FirstName, LastName, Department
FROM HumanResources.vEmployeeDepartmentHistory
WHERE FirstName LIKE @FirstName AND LastName LIKE @LastName;
GO



14 StoredProcedures con parmetros y un parametro de salida
Ejemplo 14.1
IF OBJECT_ID ( 'Production.uspGetList', 'P' ) IS NOT NULL
DROP PROCEDURE Production.uspGetList;
GO
CREATE PROCEDURE Production.uspGetList @Product varchar(40)
, @MaxPrice money
, @ComparePrice money OUTPUT
, @ListPrice money OUT
AS
SET NOCOUNT ON;
SELECT p.[Name] AS Product, p.ListPrice AS 'List Price'
FROM Production.Product AS p
JOIN Production.ProductSubcategory AS s
ON p.ProductSubcategoryID = s.ProductSubcategoryID
WHERE s.[Name] LIKE @Product AND p.ListPrice< @MaxPrice;
SET @ListPrice = (SELECT MAX(p.ListPrice)
FROM Production.Product AS p
JOIN Production.ProductSubcategory AS s
ON p.ProductSubcategoryID = s.ProductSubcategoryID
WHERE s.[Name] LIKE @Product AND p.ListPrice< @MaxPrice);
SET @ComparePrice = @MaxPrice;
GO
Ejemplo 14.2
CREATE PROCEDURE HumanResources.Update_VacationHours
@NewHourssmallint
AS
SET NOCOUNT ON;
UPDATE HumanResources.Employee
SET VacationHours =
( CASE
WHEN SalariedFlag = 0 THEN VacationHours + @NewHours
ELSE @NewHours
END
)
WHERE CurrentFlag = 1;
GO
Ejemplo 14.3
CREATE PROCEDURE Sales.uspGetEmployeeSalesYTD
@SalesPersonnvarchar(50),
@SalesYTD money OUTPUT
AS
SET NOCOUNT ON;
SELECT @SalesYTD = SalesYTD
FROM Sales.SalesPerson AS sp
JOIN HumanResources.Employee AS e ON e.BusinessEntityID = sp.BusinessEntityID
WHERE e.BusinessEntityID = @SalesPerson;
RETURN
GO



15 FuncionesEscalares
Ejemplo 15.1
CREATE FUNCTION HumanResources.MonthlySal (@ParteSalario float)
RETURNS float
AS
BEGIN
DECLARE @PayRate float
RETURN (@PayRate * 8 * 30)
END
Ejemplo 15.2
CREATE FUNCTION fx_SumTwoValues
( @Val1 int, @Val2 int )
RETURNS int
AS
BEGIN
RETURN (@Val1+@Val2)
END
GO

Ejemplo 15.3
CREATE FUNCTION fx_SumTwoValues2
( @Val1 int, @Val2 int )
RETURNS int
AS
BEGIN
WHILE @Val1 <100
BEGIN
SET @Val1 =@Val1 +1
END
RETURN (@Val1+@Val2)
END
GO

16 Funcion Inline Table-Valued
Ejemplo 16.1
CREATE FUNCTION fx_Department_GName (@GrNamevarchar(20))
RETURNS table
AS
RETURN (
SELECT * FROM HumanResources.Department
WHERE GroupName = @GrName
)
GO
Ejemplo 16.2
CREATE FUNCTION fx_Emp_Pay (@Rate int)
RETURNS table
AS
RETURN (
SELECT e.BusinessEntityID, e.JobTitle, er.Rate
FROM HumanResources.Employee AS e
JOIN HumanResources.EmployeePayHistory AS er
ON e.BusinessEntityID = er.BusinessEntityID
WHERE er.Rate = @Rate
)
GO

Ejemplo 16.3
IF OBJECT_ID(N'Sales.ufn_CustomerNamesInRegion', N'IF') IS NOT NULL
DROP FUNCTION Sales.ufn_CustomerNamesInRegion;
GO
CREATE FUNCTION Sales.ufn_CustomerNamesInRegion
( @Region nvarchar(50) )
RETURNS table
AS
RETURN (
SELECT DISTINCT s.Name AS Store, a.City
FROM Sales.Store AS s
INNER JOIN Person.BusinessEntityAddress AS bea
ON bea.BusinessEntityID = s.BusinessEntityID
INNER JOIN Person.Address AS a
ON a.AddressID = bea.AddressID
INNER JOIN Person.StateProvince AS sp
ON sp.StateProvinceID = a.StateProvinceID
WHERE sp.Name = @Region
);
GO
SELECT *
FROM Sales.ufn_CustomerNamesInRegion(N'Washington')
GO






17 FuncinMultistatement Table-Valued
Ejemplo 17.1
CREATE FUNCTION PayRate (@rate money)
RETURNS @tabla table
(EmployeeID NOT NULL,
RateChangeDatedatatme NOT NULL,
Rate money NOT NULL,
PayFrecuencytinyint NOT NULL,
ModifiedDatedatetime NOT NULL)
AS
BEGIN
INSERT @tabla
SELECT * FROM HumanResources.EmployeePayHistory
WHERE Rate < @rate
RETURN
END
GO
Ejemplo 17.2
CREATE FUNCTION fnProductListBySubcategory (@SubCategoryIDint)
RETURNS @ProdList Table
( ProductIDint, Name nvarchar(50), ListPrice money)
AS
BEGIN
IF @SubCategoryID IS NULL
BEGIN
INSERT INTO @ProdList (ProductID, Name, ListPrice)SELECT ProductID, Name, ListPrice
FROM Production.Product
END
ELSE
BEGIN
INSERT INTO @ProdList (ProductID, Name, ListPrice)SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ProductSubcategoryID = @SubcategoryID
END
RETURN
END

18 GROUP BY
Ejemplo 18.1
SELECT SalesOrderID, SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail AS sod
GROUP BY SalesOrderID
Ejemplo 18.2
SELECT a.City, COUNT(bea.AddressID) EmployeeCount
FROM Person.BusinessEntityAddress AS bea
INNER JOIN Person.Address AS a
ON bea.AddressID = a.AddressID
GROUP BY a.City
Ejemplo 18.3
SELECT DATEPART(yyyy,OrderDate) AS N'Ao'
,SUM(TotalDue) AS N'Contidad Total de Ordenes'
FROM Sales.SalesOrderHeader
GROUP BY DATEPART(yyyy,OrderDate)

19 Compute
Ejemplo 19.1
USE AdventureWorks;
GO
SELECT CustomerID, OrderDate, SubTotal, TotalDue
FROM Sales.SalesOrderHeader
ORDER BY OrderDate
COMPUTE SUM(SubTotal), SUM(TotalDue);
Ejemplo 19.2
SELECT SalesPersonID, CustomerID, OrderDate, SubTotal, TotalDue
FROM Sales.SalesOrderHeader
ORDER BY SalesPersonID, OrderDate
COMPUTE SUM(SubTotal), SUM(TotalDue) BY SalesPersonID;





20 PIVOT
Ejemplo 20.1
SELECT DaysToManufacture, AVG(StandardCost) AS AverageCost
FROM Production.Product
GROUP BY DaysToManufacture;
Ejemplo 20.2
SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days,
[0], [1], [2], [3], [4]
FROM
(SELECT DaysToManufacture, StandardCost
FROM Production.Product) AS SourceTable
PIVOT
(
AVG(StandardCost)
FOR DaysToManufacture IN ([0], [1], [2], [3], [4])
) AS PivotTable;
Ejemplo 20.3
SELECT VendorID, [250] AS Emp1, [251] AS Emp2, [256] AS Emp3, [257] AS Emp4, [260]
AS Emp5
FROM
(SELECT PurchaseOrderID, EmployeeID, VendorID
FROM Purchasing.PurchaseOrderHeader) p
PIVOT
(
COUNT (PurchaseOrderID)
FOR EmployeeID IN
( [250], [251], [256], [257], [260] )
) AS pvt
ORDER BY pvt.VendorID;

También podría gustarte