Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The T-SQL Features in SQL Server 2012 You Can’t...

The T-SQL Features in SQL Server 2012 You Can’t Ignore

With the introduction of SQL Server 2012 data developers have new ways to interact with their databases. This session will review the powerful new analytic windows functions, new ways to generate numeric sequences and new ways to page the results of our queries. Other features that will be discussed are improvements in error handling and new parsing and concatenating features.

Richie Rump

June 16, 2012
Tweet

More Decks by Richie Rump

Other Decks in Technology

Transcript

  1. • Sequences • Data Paging • Analytic Window Functions •

    Conversion Functions • Logical Functions • Date/Time Functions • String Functions
  2. • New construct to generate numeric sequences. • Ability to

    set min and max values • Cycle will set the current value to the min value when the max value is reached • Future values can be cached minimizing disk IO.
  3. • Returns metadata for the supplied SQL statement. • Useful

    for determining column/database information for a SQL statement or Stored Procedure.
  4. • If set to 0, no information is returned. •

    If set to 1, each query is analyzed as if it includes a FOR BROWSE option on the query. This will return base table names as the source column information. • If set to 2, each query is analyzed as if it would be used in preparing or executing a cursor. This will return view names as source column information.
  5. • Allows the changing of column names and data types

    in the resultset of a stored procedure. • Yes, you can change column names when you call a stored procedure. • Note: Cannot be used with an INSERT..EXEC
  6. • Allows for server side paging. • Not data pages

    (8K of awesome) but paging like on a web page. • OFFSET AND FETCH are arguments of the ORDER BY clause • OFFSET – Number of rows to skip • FETCH – Number of rows to return
  7. • LAG • LEAD • FIRST_VALUE • LAST_VALUE • PERCENT_RANK

    • CUME_DIST • PERCENTILE_CONT • PERCENTILE_DISC
  8. • The OVER clause determines the partitions and order of

    a rowset before the window function is applied. • WHAT CHU TALKING ABOUT WILLIS?
  9. • PARTITON BY – Similar to GROUP BY but only

    applies to the window function and not the entire query. • ORDER BY – Specifies the order of the rows in the partition
  10. • No longer need to use a self-join or CTE.

    • LAG: Access data from previous rows in the result set. • LEAD: Access data from future rows in the result set.
  11. • FIRST_VALUE: Retrieves the first value in a partition. •

    LAST_VALUE: Retrieves the last value in a partition.
  12. • Calculates the percentage of values less than or equal

    to the current value in the group. • COUNT(*) OVER (ORDER BY Col1) / Total Count
  13. • Calculates a percentile value • Will interpolate the appropriate

    value • Can use to find the median – PERCENTILE_CONT(0.5) • CONT stands for continuous
  14. • Calculates a percentile value • Like PERCENTILE_CONT but will

    select a value that exists in the set. • Can use to find the median – PERCENTILE_DISC(0.5) • DISC stands for discrete distribution
  15. • Attempts to parse a string and convert it to

    a specified datatype. • Can only convert to a number or datetime • Uses the .Net CLR
  16. • Like PARSE but if an error occurs returns a

    NULL. • Still uses the .Net CLR.
  17. • Attempts to cast a value into a specified data

    type. Returns NULL if CONVERT fails.
  18. • Immediate If aka Inline If • Takes a boolean

    expression and returns one of two values. • Shorthand for CASE. • Has the same limitations as CASE – Can only be nested to 10 levels
  19. • Returns a value from a list based on a

    specified index. • If the specified index is not in the list NULL is returned. • Returns the data type based on data type precedence.
  20. • Returns last date of a specified month. • Can

    specify a month_to_add argument to increment or decrement result.
  21. • DATEFROMPARTS ( year, month, day) • DATETIME2FROMPARTS ( year,

    month, day, hour, minute, seconds, fractions, precision ) • DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds ) • DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision ) • SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute ) • TIMEFROMPARTS ( hour, minute, seconds, fractions, precision )
  22. • Does what it says…concatenates strings together. • NULLs are

    automatically converted to empty strings. • Can pass other data types for concatenation.
  23. • Simplifies the string formatting of dates and other data

    types. • No more memorizing numeric predefined format values. • Returns a string. • Uses .Net CLR
  24. • Reduces the need to use RAISERROR in TRY/CATCH blocks.

    • Can provide custom error messages. • Always uses severity level 16.
  25. Denali T-SQL at a Glance - New and Enhanced Functions

    http://www.sqlmag.com/blog/puzzled-by-t-sql-blog-15/tsql/denali-tsql-glance-enhanced- functions-140785 T-SQL Improvements in SQL Server 2012 http://www.infoq.com/news/2012/03/T-SQL-2012 SQL SERVER – Denali – 14 New Functions – A Quick Guide http://blog.sqlauthority.com/2011/09/21/sql-server-denali-14-new-functions-a-quick- guide/ Performance Test of New Date Manipulation Functions (SQL Spackle) http://www.sqlservercentral.com/articles/Performance/89505/ Keyboard Shortcuts in Visual Studio 2012. Need to import settings. http://www.mssqltips.com/sqlservertip/2625/improvement-to-keyboard-shortcuts-in-sql- server-2012-management-studio/
  26. • MSDN: http://msdn.microsoft.com/en- us/library/ff878091.aspx • Sequence: Why they aren’t just

    for surrogate keys: http://blog.infoadvisors.com/index.php/2012/02/16 /new-in-sql-server-2012-sequences-why-they-arent- just-for-surrogate-keys/ • Sequence in 2012: http://www.sql-server- performance.com/2011/sequence-sql-server-2011/ • Create Sequence: http://www.dbadiaries.com/new- t-sql-features-in-sql-server-2012-create-sequence/
  27. • MSDN: http://msdn.microsoft.com/en- us/library/ms188385.aspx • TSQL 2012 – OFFSET and

    FETCH: http://stevestedman.com/2012/04/tsql-2012- offset-and-fetch/ • OFFSET and FETCH: http://www.dbadiaries.com/new-t-sql- features-in-sql-server-2012-offset-and-fetch/
  28. • PERCENTILE_CONT - MSDN: http://msdn.microsoft.com/en- us/library/hh231473.aspx • Introduction to PERCENTILE_CONT:

    http://blog.sqlauthority.com/2011/11/20/sql- server-introduction-to-percentile_cont-analytic- functions-introduced-in-sql-server-2012/ • What exactly does PERCENTILE_CONT do? http://www.sqlskills.com/BLOGS/BOBB/post/Wh at-exactly-does-PERCENTILE_CONT-do- anyhow.aspx
  29. • PERCENTILE_DISC - MSDN: http://msdn.microsoft.com/en- us/library/hh231327 • Introduction to PERCENTILE_DISC:

    http://blog.sqlauthority.com/2011/11/22/sql- server-introduction-to-percentile_disc- analytic-functions-introduced-in-sql-server- 2012/
  30. • Difference between PARSE(), TRY_PARSE(), TRY_CONVERT(): http://blog.sqlauthority.com/2011/09/09/sql-server- denali-conversion-function-difference-between-parse- try_parse-try_convert/ •

    PARSE - MSDN: http://msdn.microsoft.com/en- us/library/hh213316.aspx • TRY_PARSE - MSDN: http://msdn.microsoft.com/en- us/library/hh974669 • TRY_CONVERT - MSDN: http://msdn.microsoft.com/en-us/library/hh230993
  31. • MSDN: http://msdn.microsoft.com/en- us/library/hh213019 • CHOOSE() – A Quick Introduction:

    http://blog.sqlauthority.com/2011/09/11/sql- server-denali-logical-function-choose-a-quick- introduction/
  32. • MSDN: http://msdn.microsoft.com/en- us/library/hh213020.aspx • EOMONTH() – A Quick Introduction:

    http://blog.sqlauthority.com/2011/09/20/sql- server-denali-date-and-time-functions- eomonth-a-quick-introduction/
  33. • MSDN: http://msdn.microsoft.com/en- us/library/hh213505.aspx • New SQL Server Function to

    Format Dates: http://www.mssqltips.com/sqlservertip/2655/ne w-sql-server-function-to-format- dates/?utm_source=dailynewsletter&utm_mediu m=email&utm_content=headline&utm_campaig n=2012427 • Custom Numeric Formats - http://msdn.microsoft.com/en- US/library/0c899ak8.aspx#SpecifierD