SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
Mejoras del lenguaje T-SQL 2012 (parte 1)
Enrique Catalá Bañuls
REL300003
Mentor – Relational engine
MAP 2012 – Microsoft Technical Ranger – Microsoft Certified Trainer
ecatala@solidq.com
@enriquecatala
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
 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…EXEC
Especificacion robusta de metadatos
WITH RESULT SETS
exec sp_who2
WITH 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
)
)
Incluye nuevas DMV para análisis de
metadatos
 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 de
salida (no como SET FMTONLY)
Especificacion robusta de metadatos
Análisis de metadatos dinámico
DEMODEMO
Especificación robusta de metadatos
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
 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ón
aislada
 ADIÓS AL GOTO!! 
TRY-CATCH
Por fin cláusula THROW
THROW [ { error_number | @local_variable },
{ message | @local_variable },
{ state | @local_variable }
]
[ ; ]
RAISERROR THROW
Los msg_id que se usan en
RAISEERROR deben existir en
sys.messages
El número de error no tiene por qué
estar definido en sys.messages.
Se aceptan formateos de printf No se aceptan formateos printf
Se puede especificar la severidad del
error.
La severidad es siempre 16. No se
puede cambiar
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
 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)
 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 logaritmo
Nuevas funciones
(2/2)
Permiten abreviar sentencias que antes solo
se 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 grande
Nuevas funciones
Mejoras en bifurcadores
DEMODEMO
TRY-CATCH-THROW
Nuevas funciones
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
 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 el
OFFSET
 *Por ahora, mismo plan de ejecución
Paginación
Ahora
 Clara y concisa
Paginación
Sintaxis
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
 Una secuencia es un objeto usado para autogenerar
nú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 IDENTITY
Secuencias
¿Qué son?
 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 previamente
Secuencias
¿Para qué sirven?
Secuencias
vs identity
Option Identity Sequences
Obtain value before use No Yes
Table-Independent No Yes
Use in UPDATE No Yes
Used in SELECT No Yes
Control order
Not in SELECT INTO
Yes in INSERT SELECT
Yes
Effected by rollback No No
Can associate/disassociate
with an existing column
No Yes
Can define minimum and
maximum values
No Yes
Can cycle No Yes
Can change increment No Yes
Supports defining caching No Yes
Obtain range of values No Yes
DEMODEMO
Paginación
Secuencias
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
 Window function
 Función que aplicada a un conjunto de filas definidas por un
window descriptor, devuelve un valor único por cada fila de la
consulta
 Window descriptor
 Define a qué filas se les aplicará la función.
Window functions
Definición
 Versión 2000
 SQL Server 2000 no provee de sintaxis alguna para soportar window
functions
 Versión 2005
 SQL Server 2005 introduce una implementación parcial de las
window functions utilizando la clausula OVER
 Versión 2012
 SQL Server 2012 tiene una implementación casi completa de las
window functions
Window functions
Pasado, presente y futuro
 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 nueva
implementación en esta área específica.
Window funtions
SQL 2005-2008R2
 SQL Server 2012 está casi cerca de ofrecernos la
implementació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 functions
SQL 2012
 SQL Server 2005/2008/R2
Window functions
Cláusula OVER
 SQL Server 2012
 Qué pasa si queremos obtener la suma y el valor de dicha
columna 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_table
Msg 8120, Level 16, State 1, Line 1
Column 'table1.value' is invalid in the select list because it is not
contained in either an aggregate function or the GROUP BY clause.
id_table value
1 1
2 1
2 2
3 1
3 2
3 3
SUM(value)
1
3
6
id_table value sum(value)
1 1 1
2 1 3
2 2 3
3 1 6
3 2 6
3 3 6
Select sum(value) as [sum(value)]
from table1 group by id_table
 Si estamos en SQL Server 2005/2008/R2… ¿estoy en lo
cierto con esta aproximación?
 Ahora que ya sabemos que la cláusula OVER existe…
 Esta debería ser nuestra solución
Window functions
select id_table,
value,
sum(value) over(partition by id_table)
from table1
id_table value sum(value)
1 1 1
2 1 3
2 2 3
3 1 6
3 2 6
3 3 6
Window functions
Conceptos clave: Todos juntos
Partition
UNBOUNDED
FOLLOWING
UNBOUNDED
PRECEDING
CURRENT
ROW
Window functions
Sintaxis
Partitioning
Ordering
Slicing/framing
Window functions
Conceptos clave
 Una partición es como un grupo de filas con
“características” similares dentro del mismo conjunto de
datos
Window functions
Conceptos clave: Particionado
 Una partición es como un grupo de filas con
“características” similares dentro del mismo conjunto de
datos
Window functions
Conceptos clave: Particionado
 RANGE/ROWS
 ROWS | RANGE BETWEEN <B1> AND <B2>
 ROWS | RANGE <B1>
Window functions
Conceptos clave: Slicing/Framing
 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 returned
Window functions
Conceptos clave: Slicing/Framing
Window functions
Conceptos clave: Todos juntos
Partition
UNBOUNDED
FOLLOWING
UNBOUNDED
PRECEDING
CURRENT
ROW
 De offset
 LAG()
 LEAD()
 FIRST_VALUE()
 LAST_VALUE()
 De distribución
 PERCENT_RANK()
 CUME_DIST()
 PERCENTILE_CONT()
 PERCENTILE_DIST()
Window functions
Nuevas funciones analíticas enSQL 2012
DEMODEMO
Nuevas funciones y sintaxis
 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 LAST
Window functions
¿por qué implementación casi completa?
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
Si quieres disfrutar de las mejores sesiones de
nuestros mentores de España y Latino América,
ésta es tu oportunidad.
http://summit.solidq.com/madrid/
Síguenos:

Más contenido relacionado

La actualidad más candente

Funciones de sql server
Funciones de sql serverFunciones de sql server
Funciones de sql serverEmily_Fdez
 
Intro sql y plsql
Intro sql y plsqlIntro sql y plsql
Intro sql y plsqlolsoftware
 
Administración de base de datos oracle - sesion 1
Administración de base de datos oracle - sesion 1Administración de base de datos oracle - sesion 1
Administración de base de datos oracle - sesion 1Sefira111
 
Funciones de sql server
Funciones de sql serverFunciones de sql server
Funciones de sql serverdioselina123
 
Structured Query Language (Guía rápida)
Structured Query Language (Guía rápida)Structured Query Language (Guía rápida)
Structured Query Language (Guía rápida)Juan Pablo Cid Velasco
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005pabloesp
 
Funciones de sql server
Funciones de sql serverFunciones de sql server
Funciones de sql serverdioselina123
 
Fundamentos de BD - Unidad 4 diseño de bd relacional
Fundamentos de BD - Unidad 4 diseño de bd relacionalFundamentos de BD - Unidad 4 diseño de bd relacional
Fundamentos de BD - Unidad 4 diseño de bd relacionalJosé Antonio Sandoval Acosta
 
Resumen fundamentos de sistemas de bases de datos
Resumen fundamentos de sistemas de bases de datosResumen fundamentos de sistemas de bases de datos
Resumen fundamentos de sistemas de bases de datosaula40tics2finanzas
 
Lenguaje estructurado sql
Lenguaje estructurado sqlLenguaje estructurado sql
Lenguaje estructurado sqlDiego Sánchez
 

La actualidad más candente (14)

Funciones de sql server
Funciones de sql serverFunciones de sql server
Funciones de sql server
 
Intro sql y plsql
Intro sql y plsqlIntro sql y plsql
Intro sql y plsql
 
Act4 screencast-bdatos cmch
Act4 screencast-bdatos cmchAct4 screencast-bdatos cmch
Act4 screencast-bdatos cmch
 
1. introduccion a transact-sql
1.  introduccion a transact-sql1.  introduccion a transact-sql
1. introduccion a transact-sql
 
Administración de base de datos oracle - sesion 1
Administración de base de datos oracle - sesion 1Administración de base de datos oracle - sesion 1
Administración de base de datos oracle - sesion 1
 
Comandos SQL
Comandos SQLComandos SQL
Comandos SQL
 
Funciones de sql server
Funciones de sql serverFunciones de sql server
Funciones de sql server
 
Structured Query Language (Guía rápida)
Structured Query Language (Guía rápida)Structured Query Language (Guía rápida)
Structured Query Language (Guía rápida)
 
Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005Mejoras en T-SQL para SQL Server 2005
Mejoras en T-SQL para SQL Server 2005
 
Funciones de sql server
Funciones de sql serverFunciones de sql server
Funciones de sql server
 
Fundamentos de BD - Unidad 4 diseño de bd relacional
Fundamentos de BD - Unidad 4 diseño de bd relacionalFundamentos de BD - Unidad 4 diseño de bd relacional
Fundamentos de BD - Unidad 4 diseño de bd relacional
 
Resumen fundamentos de sistemas de bases de datos
Resumen fundamentos de sistemas de bases de datosResumen fundamentos de sistemas de bases de datos
Resumen fundamentos de sistemas de bases de datos
 
Lenguaje estructurado sql
Lenguaje estructurado sqlLenguaje estructurado sql
Lenguaje estructurado sql
 
Aprenda SQL Server
Aprenda SQL ServerAprenda SQL Server
Aprenda SQL Server
 

Destacado

SQL Saturday 254 10- Cosas que no se deben de hacer en una BD
SQL Saturday 254   10- Cosas que no se deben de hacer en una BDSQL Saturday 254   10- Cosas que no se deben de hacer en una BD
SQL Saturday 254 10- Cosas que no se deben de hacer en una BDAdrian Miranda
 
Como leer planes de ejecución - edición 2015
Como leer planes de ejecución - edición 2015Como leer planes de ejecución - edición 2015
Como leer planes de ejecución - edición 2015Enrique Catala Bañuls
 
Indices columnares | SolidQ Summit 2012
Indices columnares | SolidQ Summit 2012Indices columnares | SolidQ Summit 2012
Indices columnares | SolidQ Summit 2012SolidQ
 
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique CatalaSpanishPASSVC
 
Creacion de indices y constraints en sql server
Creacion de indices y constraints en sql serverCreacion de indices y constraints en sql server
Creacion de indices y constraints en sql serverZeleneMorita
 
El negocio-del-siglo-xxi-robert-kiyosaki
El negocio-del-siglo-xxi-robert-kiyosakiEl negocio-del-siglo-xxi-robert-kiyosaki
El negocio-del-siglo-xxi-robert-kiyosakiSantiago Pereyra
 
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012SolidQ
 
Robert kiyosaki el cuadrante del flujo de dinero
Robert kiyosaki el cuadrante del flujo de dineroRobert kiyosaki el cuadrante del flujo de dinero
Robert kiyosaki el cuadrante del flujo de dineroNicanor Manzanarez
 
Frontend Web Parte 3 Usabilidad
Frontend Web Parte 3 UsabilidadFrontend Web Parte 3 Usabilidad
Frontend Web Parte 3 UsabilidadToni Martin Avila
 
Node.js - Eventos para Todos
Node.js - Eventos para TodosNode.js - Eventos para Todos
Node.js - Eventos para TodosMariano Iglesias
 
Escribiendo código T-SQL eficientemente
Escribiendo código T-SQL eficientementeEscribiendo código T-SQL eficientemente
Escribiendo código T-SQL eficientementeJoseph Lopez
 
Toolbox SQL Server para optimización
Toolbox SQL Server para optimizaciónToolbox SQL Server para optimización
Toolbox SQL Server para optimizaciónSolidQ
 
Creación de aplicaciones de bases de datos con MS SQL Server 2012
Creación de aplicaciones de bases de datos con MS SQL Server 2012Creación de aplicaciones de bases de datos con MS SQL Server 2012
Creación de aplicaciones de bases de datos con MS SQL Server 2012Joseph Lopez
 
Diplomado Técnico SQL Server 2012 - Sesión 6/8
Diplomado Técnico SQL Server 2012 - Sesión 6/8Diplomado Técnico SQL Server 2012 - Sesión 6/8
Diplomado Técnico SQL Server 2012 - Sesión 6/8John Bulla
 
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos SolidQ
 
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...SolidQ
 
Sql Saturday CR - Introducción al Optimizador
Sql Saturday CR - Introducción al OptimizadorSql Saturday CR - Introducción al Optimizador
Sql Saturday CR - Introducción al OptimizadorJOSE AHIAS LOPEZ PORTILLO
 
Planes de ejecución 1
Planes de ejecución 1Planes de ejecución 1
Planes de ejecución 1SolidQ
 

Destacado (20)

SQL Saturday 254 10- Cosas que no se deben de hacer en una BD
SQL Saturday 254   10- Cosas que no se deben de hacer en una BDSQL Saturday 254   10- Cosas que no se deben de hacer en una BD
SQL Saturday 254 10- Cosas que no se deben de hacer en una BD
 
Como leer planes de ejecución - edición 2015
Como leer planes de ejecución - edición 2015Como leer planes de ejecución - edición 2015
Como leer planes de ejecución - edición 2015
 
Indices columnares | SolidQ Summit 2012
Indices columnares | SolidQ Summit 2012Indices columnares | SolidQ Summit 2012
Indices columnares | SolidQ Summit 2012
 
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
 
Creacion de indices y constraints en sql server
Creacion de indices y constraints en sql serverCreacion de indices y constraints en sql server
Creacion de indices y constraints en sql server
 
El negocio-del-siglo-xxi-robert-kiyosaki
El negocio-del-siglo-xxi-robert-kiyosakiEl negocio-del-siglo-xxi-robert-kiyosaki
El negocio-del-siglo-xxi-robert-kiyosaki
 
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
Novedades en seguridad en SQL Server 2012 v1 | SolidQ Summit 2012
 
Instalación FrontEnd
Instalación FrontEndInstalación FrontEnd
Instalación FrontEnd
 
Frontend Web Parte 1
Frontend Web Parte 1Frontend Web Parte 1
Frontend Web Parte 1
 
Robert kiyosaki el cuadrante del flujo de dinero
Robert kiyosaki el cuadrante del flujo de dineroRobert kiyosaki el cuadrante del flujo de dinero
Robert kiyosaki el cuadrante del flujo de dinero
 
Frontend Web Parte 3 Usabilidad
Frontend Web Parte 3 UsabilidadFrontend Web Parte 3 Usabilidad
Frontend Web Parte 3 Usabilidad
 
Node.js - Eventos para Todos
Node.js - Eventos para TodosNode.js - Eventos para Todos
Node.js - Eventos para Todos
 
Escribiendo código T-SQL eficientemente
Escribiendo código T-SQL eficientementeEscribiendo código T-SQL eficientemente
Escribiendo código T-SQL eficientemente
 
Toolbox SQL Server para optimización
Toolbox SQL Server para optimizaciónToolbox SQL Server para optimización
Toolbox SQL Server para optimización
 
Creación de aplicaciones de bases de datos con MS SQL Server 2012
Creación de aplicaciones de bases de datos con MS SQL Server 2012Creación de aplicaciones de bases de datos con MS SQL Server 2012
Creación de aplicaciones de bases de datos con MS SQL Server 2012
 
Diplomado Técnico SQL Server 2012 - Sesión 6/8
Diplomado Técnico SQL Server 2012 - Sesión 6/8Diplomado Técnico SQL Server 2012 - Sesión 6/8
Diplomado Técnico SQL Server 2012 - Sesión 6/8
 
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
BEST_PRACTICES: Buenas Prácticas para el Desarrollador de bases de datos
 
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
 
Sql Saturday CR - Introducción al Optimizador
Sql Saturday CR - Introducción al OptimizadorSql Saturday CR - Introducción al Optimizador
Sql Saturday CR - Introducción al Optimizador
 
Planes de ejecución 1
Planes de ejecución 1Planes de ejecución 1
Planes de ejecución 1
 

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

Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012SolidQ
 
Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014JOSE AHIAS LOPEZ PORTILLO
 
SQLSaturday Guatemala - SOS de Alto de rendimiento con Window Functions
SQLSaturday Guatemala - SOS de Alto de rendimiento con Window FunctionsSQLSaturday Guatemala - SOS de Alto de rendimiento con Window Functions
SQLSaturday Guatemala - SOS de Alto de rendimiento con Window FunctionsJOSE AHIAS LOPEZ PORTILLO
 
Dominando las funciones de ventana (window functions) en TSQL
Dominando las funciones de ventana (window functions) en TSQLDominando las funciones de ventana (window functions) en TSQL
Dominando las funciones de ventana (window functions) en TSQLSpanishPASSVC
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddlyehisam
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddlyehisam
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddlusamn
 
lenguaje transact
lenguaje transactlenguaje transact
lenguaje transactbandida123
 
lenguaje transact
lenguaje transactlenguaje transact
lenguaje transactbandida123
 
Sql basico parte_ii_
Sql basico parte_ii_Sql basico parte_ii_
Sql basico parte_ii_Luis Jherry
 
Sql basico parte_ii_
Sql basico parte_ii_Sql basico parte_ii_
Sql basico parte_ii_Luis Jherry
 
Investigacion Uno
Investigacion UnoInvestigacion Uno
Investigacion UnoRoberto
 

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

Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012
Mejoras del lenguaje T-SQL 2012 (parte 2) | SolidQ Summit 2012
 
Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014Técnicas avanzadas de consultas con sql server 2014
Técnicas avanzadas de consultas con sql server 2014
 
SQLSaturday Guatemala - SOS de Alto de rendimiento con Window Functions
SQLSaturday Guatemala - SOS de Alto de rendimiento con Window FunctionsSQLSaturday Guatemala - SOS de Alto de rendimiento con Window Functions
SQLSaturday Guatemala - SOS de Alto de rendimiento con Window Functions
 
Dominando las funciones de ventana (window functions) en TSQL
Dominando las funciones de ventana (window functions) en TSQLDominando las funciones de ventana (window functions) en TSQL
Dominando las funciones de ventana (window functions) en TSQL
 
Amnel
AmnelAmnel
Amnel
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
 
Data warehouse
Data warehouseData warehouse
Data warehouse
 
Data warehouse
Data warehouseData warehouse
Data warehouse
 
Data werehousing
Data werehousingData werehousing
Data werehousing
 
lenguaje transact
lenguaje transactlenguaje transact
lenguaje transact
 
lenguaje transact
lenguaje transactlenguaje transact
lenguaje transact
 
Sql basico parte_ii_
Sql basico parte_ii_Sql basico parte_ii_
Sql basico parte_ii_
 
t-sql
t-sqlt-sql
t-sql
 
Sql basico parte_ii_
Sql basico parte_ii_Sql basico parte_ii_
Sql basico parte_ii_
 
Investigacion Uno
Investigacion UnoInvestigacion Uno
Investigacion Uno
 
D49996 cs10 51_e
D49996 cs10 51_eD49996 cs10 51_e
D49996 cs10 51_e
 
Sql ddl
Sql ddlSql ddl
Sql ddl
 
Expo
ExpoExpo
Expo
 

Más de SolidQ

SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ
 
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ
 
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ
 
SolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?SolidQ
 
SQL Server 2017 en Linux
SQL Server 2017 en LinuxSQL Server 2017 en Linux
SQL Server 2017 en LinuxSolidQ
 
Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida realSolidQ
 
PowerApprízate
PowerApprízatePowerApprízate
PowerApprízateSolidQ
 
Jugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksJugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksSolidQ
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BISolidQ
 
Mantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesMantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesSolidQ
 
R en relacional
R en relacionalR en relacional
R en relacionalSolidQ
 
Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!SolidQ
 
Arquitecturas lambda en Azure
Arquitecturas lambda en AzureArquitecturas lambda en Azure
Arquitecturas lambda en AzureSolidQ
 
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018SolidQ
 
BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018SolidQ
 
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018SolidQ
 
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018SolidQ
 
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...SolidQ
 

Más de SolidQ (20)

SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
 
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
 
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
 
SolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantes
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?
 
SQL Server 2017 en Linux
SQL Server 2017 en LinuxSQL Server 2017 en Linux
SQL Server 2017 en Linux
 
Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida real
 
PowerApprízate
PowerApprízatePowerApprízate
PowerApprízate
 
Jugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksJugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocks
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BI
 
Mantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesMantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para Dummies
 
R en relacional
R en relacionalR en relacional
R en relacional
 
Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!
 
Arquitecturas lambda en Azure
Arquitecturas lambda en AzureArquitecturas lambda en Azure
Arquitecturas lambda en Azure
 
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
 
BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018
 
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
 
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
 
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
 

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

  • 1. Mejoras del lenguaje T-SQL 2012 (parte 1) Enrique Catalá Bañuls REL300003 Mentor – Relational engine MAP 2012 – Microsoft Technical Ranger – Microsoft Certified Trainer ecatala@solidq.com @enriquecatala
  • 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.  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…EXEC Especificacion robusta de metadatos WITH RESULT SETS exec sp_who2 WITH 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. Incluye nuevas DMV para análisis de metadatos  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 de salida (no como SET FMTONLY) Especificacion robusta de metadatos Análisis de metadatos dinámico
  • 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.  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ón aislada  ADIÓS AL GOTO!!  TRY-CATCH Por fin cláusula THROW THROW [ { error_number | @local_variable }, { message | @local_variable }, { state | @local_variable } ] [ ; ] RAISERROR THROW Los msg_id que se usan en RAISEERROR deben existir en sys.messages El número de error no tiene por qué estar definido en sys.messages. Se aceptan formateos de printf No se aceptan formateos printf Se puede especificar la severidad del error. La severidad es siempre 16. No se puede cambiar
  • 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.  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.  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 logaritmo Nuevas funciones (2/2)
  • 11. Permiten abreviar sentencias que antes solo se 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 grande Nuevas funciones Mejoras en bifurcadores
  • 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.  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 el OFFSET  *Por ahora, mismo plan de ejecución Paginación Ahora
  • 15.  Clara y concisa Paginación Sintaxis
  • 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.  Una secuencia es un objeto usado para autogenerar nú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 IDENTITY Secuencias ¿Qué son?
  • 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 previamente Secuencias ¿Para qué sirven?
  • 19. Secuencias vs identity Option Identity Sequences Obtain value before use No Yes Table-Independent No Yes Use in UPDATE No Yes Used in SELECT No Yes Control order Not in SELECT INTO Yes in INSERT SELECT Yes Effected by rollback No No Can associate/disassociate with an existing column No Yes Can define minimum and maximum values No Yes Can cycle No Yes Can change increment No Yes Supports defining caching No Yes Obtain range of values No Yes
  • 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.  Window function  Función que aplicada a un conjunto de filas definidas por un window descriptor, devuelve un valor único por cada fila de la consulta  Window descriptor  Define a qué filas se les aplicará la función. Window functions Definición
  • 23.  Versión 2000  SQL Server 2000 no provee de sintaxis alguna para soportar window functions  Versión 2005  SQL Server 2005 introduce una implementación parcial de las window functions utilizando la clausula OVER  Versión 2012  SQL Server 2012 tiene una implementación casi completa de las window functions Window functions Pasado, presente y futuro
  • 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 nueva implementación en esta área específica. Window funtions SQL 2005-2008R2
  • 25.  SQL Server 2012 está casi cerca de ofrecernos la implementació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 functions SQL 2012
  • 26.  SQL Server 2005/2008/R2 Window functions Cláusula OVER  SQL Server 2012
  • 27.  Qué pasa si queremos obtener la suma y el valor de dicha columna 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_table Msg 8120, Level 16, State 1, Line 1 Column 'table1.value' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. id_table value 1 1 2 1 2 2 3 1 3 2 3 3 SUM(value) 1 3 6 id_table value sum(value) 1 1 1 2 1 3 2 2 3 3 1 6 3 2 6 3 3 6 Select sum(value) as [sum(value)] from table1 group by id_table  Si estamos en SQL Server 2005/2008/R2… ¿estoy en lo cierto con esta aproximación?
  • 28.  Ahora que ya sabemos que la cláusula OVER existe…  Esta debería ser nuestra solución Window functions select id_table, value, sum(value) over(partition by id_table) from table1 id_table value sum(value) 1 1 1 2 1 3 2 2 3 3 1 6 3 2 6 3 3 6
  • 29. Window functions Conceptos clave: Todos juntos Partition UNBOUNDED FOLLOWING UNBOUNDED PRECEDING CURRENT ROW
  • 32.  Una partición es como un grupo de filas con “características” similares dentro del mismo conjunto de datos Window functions Conceptos clave: Particionado
  • 33.  Una partición es como un grupo de filas con “características” similares dentro del mismo conjunto de datos Window functions Conceptos clave: Particionado
  • 34.  RANGE/ROWS  ROWS | RANGE BETWEEN <B1> AND <B2>  ROWS | RANGE <B1> Window functions Conceptos clave: Slicing/Framing
  • 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 returned Window functions Conceptos clave: Slicing/Framing
  • 36. Window functions Conceptos clave: Todos juntos Partition UNBOUNDED FOLLOWING UNBOUNDED PRECEDING CURRENT ROW
  • 37.  De offset  LAG()  LEAD()  FIRST_VALUE()  LAST_VALUE()  De distribución  PERCENT_RANK()  CUME_DIST()  PERCENTILE_CONT()  PERCENTILE_DIST() Window functions Nuevas funciones analíticas enSQL 2012
  • 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 LAST Window functions ¿por qué implementación casi completa?
  • 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. Si quieres disfrutar de las mejores sesiones de nuestros mentores de España y Latino América, ésta es tu oportunidad. http://summit.solidq.com/madrid/ Síguenos: