新しいバージョンには多数の革新があります。
この記事では、データベース開発者向けのいくつかの革新的技術のレビューについて詳しく説明します。
1.返される行の数を制限する新しいOFFSET句とFETCH句
最後に、SQL Serverは通常のページングを導入しました。
これで、セットの2番目の10レコード(2ページ目)を取得する要求は次のようになります。
SELECT DepartmentID, Name, GroupName FROM HumanResources.Department ORDER BY DepartmentID OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;
SQL 2005/2008のバージョンでは、次のような記述が必要でした。
WITH CTE AS ( SELECT DepartmentID, Name, GroupName, ROW_NUMBER() OVER (ORDER BY DepartmentID) AS RowNum FROM HumanResources.Department ) SELECT DepartmentID, Name, GroupName FROM CTE WHERE RowNum BETWEEN 10 AND 19 ORDER BY RowNum
詳細はこちら: msdn.microsoft.com/ru-ru/library/ms188385.aspx#Offset
2. OVERはウィンドウ機能のサポートを拡張しました
ROWS句またはRANGE句を使用して、開始点と終了点を指定することにより、セクション内の行をさらに制限できます。
たとえば、現在の合計を表示するクエリ:
SELECT DepartmentID, SaleDate, SUM(SalesYTD) OVER (PARTITION BY DepartmentID ORDER BY SaleDate ROWS UNBOUNDED PRECEDING) AS Total FROM dbo.Sales
詳細はこちら: msdn.microsoft.com/ru-ru/library/ms189461.aspx
3.追加された分析機能
- FIRST_VALUE
- LAST_VALUE
- CUME_DIST
- PERCENTILE_DISC
- PERCENT_RANK
- PERCENTILE_CONT
- リード
- ラグ
たとえば、プロジェクトの1つで、ろうそくの4つの価格(始値、高値、安値、終値)を計算する必要があります。
これで、リクエストは簡単なものに変わります。
SELECT MIN(Ask) OVER (PARTITION BY Pair, Candle) AS Low, MAX(Ask) OVER (PARTITION BY Pair, Candle) AS High, FIRST_VALUE(Ask) OVER (PARTITION BY Pair, Candle) AS Open, LAST_VALUE(Ask) OVER (PARTITION BY Pair, Candle) AS Close FROM dbo.Quotes WHERE Pair='EURUSD' and Candle = 100
4.登場したシーケンス
別の待望の改善。 年の初めから文書の番号付けを実装するために、松葉杖をフェンスで囲む必要はありませんでした。
使用例:
CREATE SEQUENCE Schema.SequenceName AS int START WITH 1 INCREMENT BY 1 ; DECLARE @NextID int ; SET @NextID = NEXT VALUE FOR Schema.SequenceName;
5. RAISERROR命令THROWを置き換えました
THROW 51000, 'The record does not exist.', 1; BEGIN TRY SET @a = 10 / 0 END TRY BEGIN CATCH PRINT 'In catch block.'; THROW; END CATCH;
6. 14の新機能があります
変換関数:
- パース
- TRY_CONVERT
- TRY_PARSE
日時関数:
- DATEFROMPARTS
- DATETIME2FROMPARTS
- DATETIMEFROMPARTS
- DATETIMEOFFSETFROMPARTS
- エオモント
- SMALLDATETIMEFROMPARTS
- TIMEFROMPARTS
論理関数:
- 選ぶ
- IIF
文字列関数:
- 連結
- FORMAT
私はこれを美的改善に帰するでしょう。
たとえば、次のように、月の最終日前に受信されました。
SET @LastDayOfMonth = dateadd(month,1,dateadd(day,1-day(@d),@d))-1
SQL Server 2012の場合:
SET @LastDayOfMonth = EOMONTH (@d)
または、代わりに:
CASE WHEN (@a > @b) THEN 'TRUE' ELSE 'FALSE' END
今、あなたは書くことができます:
IIF ( @a > @b, 'TRUE', 'FALSE' )
7. FileTableテーブル
現在、SQL Serverはファイルやドキュメントを特別なテーブルに保存しますが、Windowsアプリケーションに変更を加えることなく、ファイルシステムに保存されている場合と同じ方法でWindowsアプリケーションからアクセスできます。
詳細はこちら: msdn.microsoft.com/ru-ru/library/ff929144.aspx
8.統計的意味検索
統計セマンティック検索は、FileTable関数とともに、非構造化文書の詳細な分析を提供します。
セマンティック検索は、SQL Serverの既存のフルテキスト検索コンポーネントに基づいて構築され、キーワードではなくドキュメントの値による検索を提供する新しいシナリオを実装します。
たとえば、キーフレーズのインデックスに基づいて、分類または一連の技術文書を作成できます。 または、ドキュメントの類似性インデックスによって、職務内容に最適な履歴書を見つけます。
詳細はこちら: msdn.microsoft.com/ru-ru/library/gg492075.aspx