Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012

837 views

Published on

Página oficial del SolidQ Summit: http://summit.solidq.com/madrid/2013/

Con la llegada de SQL Server 2012, aparecen muchas mejoras a nivel de lenguaje T-SQL. En esta sesión, daremos un repaso de todas las novedades a nivel desarrollo que nos aporta la nueva expresividad T-SQL.

  • Be the first to comment

  • Be the first to like this

Mejoras del lenguaje T-SQL 2012 (parte 1) | SolidQ Summit 2012

  1. 1. Mejoras del lenguaje T-SQL 2012 (parte 1)Enrique Catalá BañulsREL300003Mentor – Relational engineMAP 2012 – Microsoft Technical Ranger – Microsoft Certified Trainerecatala@solidq.com@enriquecatala
  2. 2. Mejoras del lenguaje T-SQL 2012 (parte 1)Especificación robusta de metadatosTRY-CATCHNuevas funcionesMejoras en formateo de datosPaginaciónSecuenciasWindow functions
  3. 3.  Podemos definir “contratos” de conjuntos de resultado Número de resultsets devueltos Tipos de datos y columnas Nueva cláusula WITH RESULT SETS permitida: T-SQL Dinámico Cláusulas OPENROWSET Procedimientos almacenados No permitida por ahora en INSERT…EXECEspecificacion robusta de metadatosWITH RESULT SETSexec sp_who2WITH RESULT SETS((spid int,estado varchar(255),login sysname,nombre_de_host sysname,bloueado_por_spid sysname,nombre_bbdd sysname,comando nvarchar(max),tiempo_cpu int,entrada_salida int,ultima_ejecucion sysname,nombre_de_programa sysname,tralari int,tralara int))
  4. 4. Incluye nuevas DMV para análisis demetadatos Sys.dm_exec_describe_first_result_set Sp_describe_first_result_set Sys.dm_exec_describe_first_result_set_for_object Sp_describe_first_undeclared_parametersSe analizan correctamente metadatos desalida (no como SET FMTONLY)Especificacion robusta de metadatosAnálisis de metadatos dinámico
  5. 5. DEMODEMOEspecificación robusta de metadatos
  6. 6. Mejoras del lenguaje T-SQL 2012 (parte 1)Especificación robusta de metadatosTRY-CATCHNuevas funcionesMejoras en formateo de datosPaginaciónSecuenciasWindow functions
  7. 7.  Por fin disponemos de operación THROW Si un THROW no lleva catch asociado, la sesión finaliza Se permite relanzar hacia arriba en CATCH o ejecuciónaislada ADIÓS AL GOTO!! TRY-CATCHPor fin cláusula THROWTHROW [ { error_number | @local_variable },{ message | @local_variable },{ state | @local_variable }][ ; ]RAISERROR THROWLos msg_id que se usan enRAISEERROR deben existir ensys.messagesEl número de error no tiene por quéestar definido en sys.messages.Se aceptan formateos de printf No se aceptan formateos printfSe puede especificar la severidad delerror.La severidad es siempre 16. No sepuede cambiar
  8. 8. Mejoras del lenguaje T-SQL 2012 (parte 1)Especificación robusta de metadatosTRY-CATCHNuevas funcionesMejoras en formateo de datosPaginaciónSecuenciasWindow functions
  9. 9.  EOMONTH(date [, months_to_add]) DATEFROMPARTS(year, month, day) TIMEFROMPARTS(hour, minutes, seconds, fractions, scale) DATETIME2FROMPARTS(year, month, day, hour, minutes,seconds, fractions, scale) DATETIMEFROMPARTS(year, month, day,hour, minutes,seconds, milliseconds) SMALLDATETIMEFROMPARTS(year, month, day,hour,minutes)Nuevas funciones(1/2)
  10. 10.  TRY_CONVERT( data_type [(lenght)], expression [, style]) FORMAT( value, format [, culture] ) PARSE( string_value as data_type [USING culture] ) TRY_PARSE( string_value as data_type [,USING culture]) CONCAT(val1, val2…[, valN]) Una función mejorada LOG() ahora acepta como parámetro la base de logaritmoNuevas funciones(2/2)
  11. 11. Permiten abreviar sentencias que antes solose podian realizar mediante CASEIIF( boolean expr, true_value, false_value) Cuando se trata de un IF-ELSECHOOSE( index, val1, val2 [, valN]) Cuando queremos compactar un CASE grandeNuevas funcionesMejoras en bifurcadores
  12. 12. DEMODEMOTRY-CATCH-THROWNuevas funciones
  13. 13. Mejoras del lenguaje T-SQL 2012 (parte 1)Especificación robusta de metadatosTRY-CATCHNuevas funcionesMejoras en formateo de datosPaginaciónSecuenciasWindow functions
  14. 14.  Sintaxis ANSI que puede servir a fines idénticos a TOP(n) Muchísima mas potente Filtro aplicado sobre la cláusula ORDER BY OFFSET indica cuantas filas hay que saltarse FETCH indica cuantas filas se deben devolver tras elOFFSET *Por ahora, mismo plan de ejecuciónPaginaciónAhora
  15. 15.  Clara y concisaPaginaciónSintaxis
  16. 16. Mejoras del lenguaje T-SQL 2012 (parte 1)Especificación robusta de metadatosTRY-CATCHNuevas funcionesMejoras en formateo de datosFull-text searchspatialPaginaciónSecuenciasWindow functions
  17. 17.  Una secuencia es un objeto usado para autogenerarnúmeros basados en criterios flexibles Es la evolución de IDENTITY Muy flexible y con posibilidad de optimizar su rendimiento Solo se soporta nombre de dos partes Almacenado a nivel de base de datos La equivalencia lógica con IDENTITYSecuencias¿Qué son?
  18. 18.  Sirven para crear valores de clave en inserciones Permiten incluso almacenar dicho valor en variable NEXT VALUE FOR Función para obtener el siguiente valor de la secuencia No guardan relación con los números generados. Pueden borrarse incluso después de haber asignado valores en uso Se deben quitar las constraints previamenteSecuencias¿Para qué sirven?
  19. 19. Secuenciasvs identityOption Identity SequencesObtain value before use No YesTable-Independent No YesUse in UPDATE No YesUsed in SELECT No YesControl orderNot in SELECT INTOYes in INSERT SELECTYesEffected by rollback No NoCan associate/disassociatewith an existing columnNo YesCan define minimum andmaximum valuesNo YesCan cycle No YesCan change increment No YesSupports defining caching No YesObtain range of values No Yes
  20. 20. DEMODEMOPaginaciónSecuencias
  21. 21. Mejoras del lenguaje T-SQL 2012 (parte 1)Especificación robusta de metadatosTRY-CATCHNuevas funcionesMejoras en formateo de datosFull-text searchspatialPaginaciónSecuenciasWindow functions
  22. 22.  Window function Función que aplicada a un conjunto de filas definidas por unwindow descriptor, devuelve un valor único por cada fila de laconsulta Window descriptor Define a qué filas se les aplicará la función.Window functionsDefinición
  23. 23.  Versión 2000 SQL Server 2000 no provee de sintaxis alguna para soportar windowfunctions Versión 2005 SQL Server 2005 introduce una implementación parcial de laswindow functions utilizando la clausula OVER Versión 2012 SQL Server 2012 tiene una implementación casi completa de laswindow functionsWindow functionsPasado, presente y futuro
  24. 24.  SQL Server 2005 introdujo Operador OVER (parcialmente implementado) Nuevas window functions ROW_NUMBER() RANK() DENSE_RANK() NTILE() SQL Server 2008/2008R2 no añadieron ninguna nuevaimplementación en esta área específica.Window funtionsSQL 2005-2008R2
  25. 25.  SQL Server 2012 está casi cerca de ofrecernos laimplementación completa de window funtions SQL Serve 2012 introduce: Reimplementación de cláusula OVER Casi completa ORDER BY Windows Frame 8 nuevas window functions LAG(), LEAD() FIRST_VALUE(), LAST_VALUE() CUME_DIST(),PERCENT_RANK() PERCENTILE_DISC(), PERCENTILE_COUNT()Window functionsSQL 2012
  26. 26.  SQL Server 2005/2008/R2Window functionsCláusula OVER SQL Server 2012
  27. 27.  Qué pasa si queremos obtener la suma y el valor de dichacolumna que lo provoca? (agrupación y detalle)Window functions¿Por qué son necesarias las window functions?select id_table, value,sum(value) as [sum(value)]from table1 group by id_tableMsg 8120, Level 16, State 1, Line 1Column table1.value is invalid in the select list because it is notcontained in either an aggregate function or the GROUP BY clause.id_table value1 12 12 23 13 23 3SUM(value)136id_table value sum(value)1 1 12 1 32 2 33 1 63 2 63 3 6Select sum(value) as [sum(value)]from table1 group by id_table Si estamos en SQL Server 2005/2008/R2… ¿estoy en locierto con esta aproximación?
  28. 28.  Ahora que ya sabemos que la cláusula OVER existe… Esta debería ser nuestra soluciónWindow functionsselect id_table,value,sum(value) over(partition by id_table)from table1id_table value sum(value)1 1 12 1 32 2 33 1 63 2 63 3 6
  29. 29. Window functionsConceptos clave: Todos juntosPartitionUNBOUNDEDFOLLOWINGUNBOUNDEDPRECEDINGCURRENTROW
  30. 30. Window functionsSintaxisPartitioningOrderingSlicing/framing
  31. 31. Window functionsConceptos clave
  32. 32.  Una partición es como un grupo de filas con“características” similares dentro del mismo conjunto dedatosWindow functionsConceptos clave: Particionado
  33. 33.  Una partición es como un grupo de filas con“características” similares dentro del mismo conjunto dedatosWindow functionsConceptos clave: Particionado
  34. 34.  RANGE/ROWS ROWS | RANGE BETWEEN <B1> AND <B2> ROWS | RANGE <B1>Window functionsConceptos clave: Slicing/Framing
  35. 35.  B1 and B2 can be UNBOUNDED PRECEDING UNBOUNDED FOLLOWING CURRENT ROW For “ROWS” clause only <scalar expression> PRECEDING <sclara expression> FOLLOWING Note B1 <= B2 or NULL will be returned Except in COUNT() that 0 will be returnedWindow functionsConceptos clave: Slicing/Framing
  36. 36. Window functionsConceptos clave: Todos juntosPartitionUNBOUNDEDFOLLOWINGUNBOUNDEDPRECEDINGCURRENTROW
  37. 37.  De offset LAG() LEAD() FIRST_VALUE() LAST_VALUE() De distribución PERCENT_RANK() CUME_DIST() PERCENTILE_CONT() PERCENTILE_DIST()Window functionsNuevas funciones analíticas enSQL 2012
  38. 38. DEMODEMONuevas funciones y sintaxis
  39. 39.  Implementación para definición de frames ROWS: Completa RANGE: Parcial. Solo soporta UNBOUNDED PRECEDING UNBOUNDED FOLLOWING CURRENT ROW EXCLUDE: No implementado Funciones de ranking no soportan framing ROW_NUMBER(), RANK(), NTILE(), DENSE_RANK(),PERCENTILE_DIST(), PERCENTILE_CONT() No implementado Window aliases Clausulas: NULLs FIRST y NULLs LASTWindow functions¿por qué implementación casi completa?
  40. 40. Mejoras del lenguaje T-SQL 2012 (parte 1)Especificación robusta de metadatosTRY-CATCHNuevas funcionesMejoras en formateo de datosPaginaciónSecuenciasWindow functions
  41. 41. Si quieres disfrutar de las mejores sesiones denuestros mentores de España y Latino América,ésta es tu oportunidad.http://summit.solidq.com/madrid/Síguenos:

×