SlideShare una empresa de Scribd logo
1 de 26
Pablo Espada Bueno www.programadorautonomo.net www.esbupa.com
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],CREATE TABLE mySchema.LargeTable (varcharCol varchar(max)) CREATE TABLE mySchema.XMLTable (idCol int, xmlCol xml)
[object Object],[object Object],[object Object],[object Object],ALTER INDEX IX_CustDOB ON Sales.Customer DISABLE ALTER INDEX PK_CustId ON Sales.Customer REBUILD ALTER INDEX ALL ON Sales.Customer REBUILD
[object Object],[object Object],[object Object],ALTER INDEX PK_CustId ON Sales.Customer REORGANIZE CREATE NONCLUSTERED INDEX IX_CustomerPostalCode  ON Sales.Customer (PostalCode)  INCLUDE (AddressLine1, AddressLine2, City)
[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object]
DECLARE @InsertDetails TABLE ( ProductID int, InsertedBy sysname )  INSERT INTO Stock.ProductList  OUTPUT INSERTED.ProductID, suser_name() INTO @InsertDetails  VALUES ('Racing Bike', 412.99)  SELECT * FROM @InsertDetails  DECLARE @PriceChangeDetails TABLE ( ProductID int, OldPrice money, NewPrice money, UpdatedBy sysname )  UPDATE Stock.ProductList SET Price = 3.99  OUTPUT INSERTED.ProductID, DELETED.Price, INSERTED.Price, suser_name() INTO @PriceChangeDetails  WHERE ProductID = 1  SELECT * FROM @PriceChangeDetails  DECLARE @DeleteDetails TABLE ( ProductID int, DeletedBy sysname ) DELETE Stock.ProductList  OUTPUT DELETED.ProductID, suser_name() INTO @DeleteDetails  WHERE ProductID = 2  SELECT * FROM @DeleteDetails
[object Object],[object Object],[object Object],WITH TopSales (SalesPersonID, NumSales)  AS  (  SELECT SalesPersonID, Count(*)  FROM Sales.SalesOrderHeader  GROUP BY SalesPersonId  )  --Select simple SELECT * FROM TopSales  WHERE SalesPersonID IS NOT NULL  ORDER BY NumSales DESC  --Ejemplo de Join SELECT ts.SalesPersonID, sp.SalesYTD, ts.NumSales  FROM Sales.SalesPerson sp INNER JOIN TopSales ts ON ts.SalesPersonID = sp.SalesPersonID  ORDER BY NumSales DESC
[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],CREATE TABLE Sales.[Order]  (  Customer varchar(8),  Product varchar(5),  Quantity int  )  Customer Product Quantity Mike  Bike  3 Mike  Chain  2 Mike  Bike  5 Lisa  Bike  3 Lisa  Chain  3 Lisa  Chain  4
[object Object],[object Object],SELECT * FROM Sales.[Order]  PIVOT (SUM(Quantity) FOR Product IN ([Bike],[Chain])) AS PVT Customer Bike Chain Lisa  3 7 Mike  8 2 Lisa  3 7 Mike  8 2 Lisa  3 7 Mike  8 2
[object Object],[object Object],SELECT Customer, Product, Quantity FROM Sales.PivotedOrder UNPIVOT (Quantity FOR Product IN ([Bike],[Chain])) AS UnPVT  Customer Product Quantity Mike  Bike  8 Mike  Chain  2 Lisa  Bike  3 Lisa  Chain  7
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],CREATE FUNCTION Sales.MostRecentOrders(@CustID int) RETURNS TABLE AS  RETURN  SELECT TOP (3) SalesOrderID, OrderDate  FROM Sales.SalesOrderHeader  WHERE CustomerID = @CustID  ORDER BY OrderDate DESC SELECT Name Customer, MR.*  FROM Sales.Store  CROSS APPLY Sales.MostRecentOrders(CustomerID) AS MR
[object Object],SELECT Name AS Customer, MR.*  FROM Sales.Store  OUTER APPLY Sales.MostRecentOrders(CustomerID) AS MR
[object Object],[object Object],[object Object],OVER ( [ PARTITION BY < value_expression > , ... [ n ] ]  ORDER BY <column> [ ASC | DESC ] [, ...[ n ] ] )
[object Object],SELECT P.Name Product, P.ListPrice, PSC.Name Category, RANK() OVER(PARTITION BY PSC.Name ORDER BY P.ListPrice DESC) AS PriceRank FROM Production.Product P JOIN Production.ProductSubCategory PSC ON P.ProductSubCategoryID = PSC.ProductSubCategoryID
[object Object],SELECT P.Name Product, P.ListPrice, PSC.Name Category, DENSE_RANK() OVER(PARTITION BY PSC.Name ORDER BY P.ListPrice DESC) AS PriceRank FROM Production.Product P JOIN Production.ProductSubCategory PSC ON P.ProductSubCategoryID = PSC.ProductSubCategoryID
[object Object],SELECT ROW_NUMBER() OVER(PARTITION BY PC.Name ORDER BY ListPrice) AS Row, PC.Name Category, P.Name Product, P.ListPrice FROM Production.Product P JOIN Production.ProductSubCategory PSC ON P.ProductSubCategoryID = PSC.ProductSubCategoryID JOIN Production.ProductCategory PC ON PSC.ProductCategoryID = PC.ProductCategoryID
[object Object],SELECT NTILE(3) OVER(PARTITION BY PC.Name ORDER BY ListPrice) AS PriceBand, PC.Name Category, P.Name Product, P.ListPrice FROM Production.Product P JOIN Production.ProductSubCategory PSC ON P.ProductSubCategoryID = PSC.ProductSubCategoryID JOIN Production.ProductCategory PC ON PSC.ProductCategoryID = PC.ProductCategoryID
[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],BEGIN TRY { sql_statement | statement_block } END TRY BEGIN CATCH TRAN_ABORT { sql_statement | statement_block } END CATCH
[object Object],[object Object],[object Object]
CREATE TABLE dbo.DataTable (ColA int PRIMARY KEY, ColB int) CREATE TABLE dbo.ErrorLog (ColA int, ColB int, error int, date datetime) GO CREATE PROCEDURE dbo.AddData @a int, @b int AS SET XACT_ABORT ON BEGIN TRY BEGIN TRAN INSERT INTO dbo.DataTable VALUES (@a, @b) COMMIT TRAN END TRY BEGIN CATCH TRAN_ABORT DECLARE @err int SET @err = @@error --trap the error number ROLLBACK TRAN INSERT INTO dbo.ErrorLog VALUES (@a, @b, @err, GETDATE()) END CATCH GO EXEC dbo.AddData 1, 1 EXEC dbo.AddData 2, 2 EXEC dbo.AddData 1, 3 --violates the primary key

Más contenido relacionado

La actualidad más candente

Tutorial de programación hp user rpl en modo algebraico v1.2
Tutorial de programación hp user rpl en modo algebraico v1.2Tutorial de programación hp user rpl en modo algebraico v1.2
Tutorial de programación hp user rpl en modo algebraico v1.2Jeremy Butler
 
Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)José Toro
 
Manejo y programación de la calculadora hp50g
Manejo y programación de la calculadora hp50gManejo y programación de la calculadora hp50g
Manejo y programación de la calculadora hp50gonsepulvedas
 
Investigacion Uno
Investigacion UnoInvestigacion Uno
Investigacion UnoRoberto
 
Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)José Toro
 
Forms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresForms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresEdwin Romero
 
Introducción a Sql
Introducción a SqlIntroducción a Sql
Introducción a Sqlalexmerono
 
Pseudocódigo apunte segun sea y subrutinas
Pseudocódigo apunte segun sea y subrutinasPseudocódigo apunte segun sea y subrutinas
Pseudocódigo apunte segun sea y subrutinasAlejandro Canosa
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de controlFernando Solis
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sqlfer951
 
Comandos del-ddl-y-del-dml-liz
Comandos del-ddl-y-del-dml-lizComandos del-ddl-y-del-dml-liz
Comandos del-ddl-y-del-dml-lizBolivar Castillo
 

La actualidad más candente (20)

Funciones
FuncionesFunciones
Funciones
 
Visual Basic
Visual BasicVisual Basic
Visual Basic
 
Elementos
ElementosElementos
Elementos
 
Tutorial de programación hp user rpl en modo algebraico v1.2
Tutorial de programación hp user rpl en modo algebraico v1.2Tutorial de programación hp user rpl en modo algebraico v1.2
Tutorial de programación hp user rpl en modo algebraico v1.2
 
Comandos SQL
Comandos SQLComandos SQL
Comandos SQL
 
Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)
 
Manejo y programación de la calculadora hp50g
Manejo y programación de la calculadora hp50gManejo y programación de la calculadora hp50g
Manejo y programación de la calculadora hp50g
 
Investigacion Uno
Investigacion UnoInvestigacion Uno
Investigacion Uno
 
Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)Sesión11 - Paquetes (Oracle)
Sesión11 - Paquetes (Oracle)
 
Forms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresForms 10g procedimientos y cursores
Forms 10g procedimientos y cursores
 
Introducción a Sql
Introducción a SqlIntroducción a Sql
Introducción a Sql
 
Pseudocódigo apunte segun sea y subrutinas
Pseudocódigo apunte segun sea y subrutinasPseudocódigo apunte segun sea y subrutinas
Pseudocódigo apunte segun sea y subrutinas
 
Pl Sql
Pl SqlPl Sql
Pl Sql
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Manual hp2
Manual hp2Manual hp2
Manual hp2
 
Los lenguajes
Los lenguajesLos lenguajes
Los lenguajes
 
Master vba
Master vbaMaster vba
Master vba
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sql
 
Comandos vb
Comandos vbComandos vb
Comandos vb
 
Comandos del-ddl-y-del-dml-liz
Comandos del-ddl-y-del-dml-lizComandos del-ddl-y-del-dml-liz
Comandos del-ddl-y-del-dml-liz
 

Similar a Mejoras en T-SQL para SQL Server 2005 (20)

Sentencia select
Sentencia selectSentencia select
Sentencia select
 
Vistas (1)
Vistas (1)Vistas (1)
Vistas (1)
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Qué es SQL
Qué es SQL Qué es SQL
Qué es SQL
 
Sentencias sql
Sentencias sqlSentencias sql
Sentencias sql
 
bd2-teorico02.pdf
bd2-teorico02.pdfbd2-teorico02.pdf
bd2-teorico02.pdf
 
Tutorial Sql
Tutorial SqlTutorial Sql
Tutorial Sql
 
Charla Mysql
Charla MysqlCharla Mysql
Charla Mysql
 
Consultas condicionales en sq server
Consultas condicionales en sq serverConsultas condicionales en sq server
Consultas condicionales en sq server
 
Funciones+sql+server
Funciones+sql+serverFunciones+sql+server
Funciones+sql+server
 
Commit y rollback
Commit y rollbackCommit y rollback
Commit y rollback
 
Ti. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.ConsultasTi. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.Consultas
 
Arreglos, Procedimientos y Funciones
Arreglos, Procedimientos y FuncionesArreglos, Procedimientos y Funciones
Arreglos, Procedimientos y Funciones
 
Seleccion de datos_sql_2005
Seleccion de datos_sql_2005Seleccion de datos_sql_2005
Seleccion de datos_sql_2005
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Proyecto Base de Datos I
Proyecto Base de Datos IProyecto Base de Datos I
Proyecto Base de Datos I
 
Guia de ejercicio sql
Guia de ejercicio sqlGuia de ejercicio sql
Guia de ejercicio sql
 
Precentacion de sql visual
Precentacion de sql visualPrecentacion de sql visual
Precentacion de sql visual
 
Manual_Mysql Query Browser
Manual_Mysql Query BrowserManual_Mysql Query Browser
Manual_Mysql Query Browser
 
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
Base de Datos(Funciones, Vistas,Procedimientos Almacenados,Triggers)
 

Último

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxlosdiosesmanzaneros
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilJuanGallardo438714
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Último (15)

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

Mejoras en T-SQL para SQL Server 2005

  • 1. Pablo Espada Bueno www.programadorautonomo.net www.esbupa.com
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9. DECLARE @InsertDetails TABLE ( ProductID int, InsertedBy sysname ) INSERT INTO Stock.ProductList OUTPUT INSERTED.ProductID, suser_name() INTO @InsertDetails VALUES ('Racing Bike', 412.99) SELECT * FROM @InsertDetails DECLARE @PriceChangeDetails TABLE ( ProductID int, OldPrice money, NewPrice money, UpdatedBy sysname ) UPDATE Stock.ProductList SET Price = 3.99 OUTPUT INSERTED.ProductID, DELETED.Price, INSERTED.Price, suser_name() INTO @PriceChangeDetails WHERE ProductID = 1 SELECT * FROM @PriceChangeDetails DECLARE @DeleteDetails TABLE ( ProductID int, DeletedBy sysname ) DELETE Stock.ProductList OUTPUT DELETED.ProductID, suser_name() INTO @DeleteDetails WHERE ProductID = 2 SELECT * FROM @DeleteDetails
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26. CREATE TABLE dbo.DataTable (ColA int PRIMARY KEY, ColB int) CREATE TABLE dbo.ErrorLog (ColA int, ColB int, error int, date datetime) GO CREATE PROCEDURE dbo.AddData @a int, @b int AS SET XACT_ABORT ON BEGIN TRY BEGIN TRAN INSERT INTO dbo.DataTable VALUES (@a, @b) COMMIT TRAN END TRY BEGIN CATCH TRAN_ABORT DECLARE @err int SET @err = @@error --trap the error number ROLLBACK TRAN INSERT INTO dbo.ErrorLog VALUES (@a, @b, @err, GETDATE()) END CATCH GO EXEC dbo.AddData 1, 1 EXEC dbo.AddData 2, 2 EXEC dbo.AddData 1, 3 --violates the primary key