Your SlideShare is downloading. ×
0
T-SQL 振り返り     SQL Saturday #181 TOKYO 2012     SQLWorld お だ
自己紹介織田 信亮(おだ しんすけ)大阪で開発者していますSQLWorld の代表ですhttp://d.hatena.ne.jp/odashinsuke/Twitter:@shinsukeoda
SQLWorld とはhttp://sqlworld.org/Twitter:@SQLWorld_JP次のような情報を発信しているコミュニティです  MS の RDBMS である「SQL Server」  もちろん他の DB の話しも!  正規...
World と名乗っていますが、   Worldwideでは無いです!
関西限定!大阪で勉強会を開催しています
このセッションの対象者SQL は知ってる/書ける  開発者の方SQL Server の使用経験が…  使ったことない!  昔のなら使ったことある  新しいのなら使ったことある
T-SQL のお話しの前に…
開発者の方がよく使う Edition の紹介Developer Edition   開発用 (※運用では使っちゃダメ!)   Enterprise Edition と同等の機能   有償(Amazon で 5,000 位)   無償だと Eva...
インストール
インストールExpress with Tools をダウンロード http://www.microsoft.com/ja-jp/download/details.aspx?id=29062     JPNx86SQLEXPRWT_x86_JPN...
使ってみる
SQL Server Management Studio SSMS は、構成・管理・開発に使用出来る 統合開発環境    何でも出来ます    GUI での操作    クエリの入力補完(インテリセンス)も効く    SQL のテンプレートも豊富...
使ってみるSQL Server に接続するDatabase の作成Table の作成クエリの実行 (INSERT/SELECT)
T-SQL の進化
各バージョンで使える機能SQL   Server   2005SQL   Server   2008SQL   Server   2008R2SQL   Server   2012
SQL Server 2005 で使える機能http://msdn.microsoft.com/ja-jp/library/ms189465(SQL.90).aspx データ型 SQL CLR T-SQL
データ型追加  XML  varchar(max)  nvarchar(max)  varbinary(max)削除予定  text => varchar(max)  ntext => nvarchar(max)  image => varbi...
SQL CLR T-SQL ではなく、CLR(C# や VB.NET) で ストアドや関数、トリガーなどを実装出 来る仕組み SQL Server のプロセス内で実行されるの で高速 C# や VB.NET で実装出来るので、開発効 率が良い/...
T-SQL (1) OUTPUT 句    INSERT/UPDATE/DELETE で影響を受ける行の    情報を返す WITH (CTE)    共通テーブル式    再帰クエリ .WRITE 句    varchar/nvarchar/...
OUTPUT 追加/更新/削除された行の情報を取得    INSERT/UPDATE/DELETE/MERGE(2008 以降) 新しく追加/更新された後のデータ    INSERTED.カラム名 更新/削除される前のデータ    DELETE...
WITH (CTE) CTE = Common Table Query    一時的な結果セットに名前を付けたもの WITH を使ってクエリに名前を付ける 同じクエリ内で複数回参照可能 UNION ALL で自己参照 (再帰CTE)
T-SQL (2) FOR       SELECT の結果を XML 形式に変換 TOP       式も書けるようになった! PIVOT/UNPIVOT       行列変換/列行変換 APPLY       JOIN の感覚で使って、行毎...
TOP 2000 でもあったが構文が変わった!      TOP <integer> => TOP (<expression>) 式が書けるようになったので、変数やサ ブクエリなんかも書けるようになった 旧構文は SELECT でのみ互換性のた...
T-SQL (3) OVER 句    ウィンドウ関数(順位付け、集計) で使用 TRY…CATCH    T-SQL でも
OVER ウィンドウ 関数 が使えるように! 順位付け関数       RANK, ROW_NUMBER, … 集計関数 に partition by が使えるよう に       SUM, MAX, MIN, COUNT, …
クエリ通知ADO.NET とセットで利用SELECT / EXECUTE に対して設定可能対象のデータが変更されると、結果がSQL Server から PUSH される
SQL Server 2008 で使える機能http://technet.microsoft.com/ja-jp/library/bb500435(SQL.100).aspx データ/データ型 T-SQL データの変更監視
データ/データ型FILESTREAM   非構造化データをファイルシステムに保存スパース列   NULL が多い列の最適化日付/時刻型Spatial 型hierarchyid   階層構造を表す
日付/時刻 データ型date   日付だけtime   時刻だけdatetime2   datetime より扱える範囲/精度が良いdatetimeoffset   タイムゾーン持ちの日付時刻 データ型
Spatial データ型空間型 座標を表すデータ型 gemmetry    平面空間データ型 平面座標系のデータ Geography    地理空間データ型 球体地球座標系のデータ
T-SQL (1) DECLARE 時の代入    変数宣言時に代入可能     declare @hoge int = 5 複合演算子    +=, -=, *=. /=, %=, ^=, |= INSERT の VALUES 複数対応   ...
T-SQL (2) MERGE GROUPING の強化    GROUP BY での指定方法が強化 テーブル値パラメータ    ストアドやファンクションに 一時テーブル    を使わずにパラメータを渡せる
MERGE 更新対象テーブルと元となるテーブルの 結合結果に対して、更新処理を行う。    MATHCED        結合結果でデータが存在していた         DELETE or UPDATE(主に UPDATE)    NOT MA...
GROUPING の強化 GROUPING SETS    カラムの組み合わせを自由に指定    複数列を単一のセットと見なせる ROLLUP    説明しづらいので例を   GROUP BY ROLLUP (year, month, day)...
データの変更監視変更データキャプチャ (CDC)  Express/Standard Edition では使えない  変更されたデータも保持変更の追跡 (Change Tracking)  Express Edition でも使える!  変更さ...
SQL Server 2008 R2 で使える機能http://technet.microsoft.com/ja-jp/library/bb510411(SQL.105).aspx データ層アプリケーション(DAC) Unicode 圧縮   ...
2012 の新機能
T-SQL に絞って紹介 ORDER BY での OFFSET FETCH   ページング処理も楽々 THROW ステートメント   TRY-CATCH で OVER 句の強化   分析関数も使用可能に!
OFFSET FECTH 結果セットから一部のデータだけを フェッチするオプション    ORDER BY は必須    TOP と同時使用はNG    OFFSET:開始位置    FETCH:取得件数
OVER 分析関数も使えるようになった       LAG       LEAD       FIRST_VALUE       LAST_VALUE       CUME_DIST       PERCENTILE_CONT       PE...
T-SQL に絞って紹介 RESULT SETS オプション   ストアド呼び出し時に、結果セットの型を   指定 (異なる場合は実行時エラー)    名前と型を変更可能 追加された関数
追加された関数PARSE   文字列 => 日付/時刻 or 数値型   .NET に依存 (culture 指定可)TRY_PARSE/TRY_CONVERT   PARSE/CONVERT の変換失敗で null 返すFORMAT   書式...
追加された関数CHOOSE      値の一覧から index にある項目を返す      CHOOSE(index, val1, val2, …)IIF      CASE の簡略化CONCAT      2つ以上文字列結合で null は空...
さいごに
T-SQL を振り返って…2005 から使いやすくなった2008 は型が追加された2012 ではさらに便利な物が増えたExpress Edition は無償で使えるので、是非お試しを!
T sql 振り返り
T sql 振り返り
T sql 振り返り
T sql 振り返り
Upcoming SlideShare
Loading in...5
×

T sql 振り返り

1,468

Published on

2012/12/01 SQL Saturday #181 TOKYO

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,468
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "T sql 振り返り"

  1. 1. T-SQL 振り返り SQL Saturday #181 TOKYO 2012 SQLWorld お だ
  2. 2. 自己紹介織田 信亮(おだ しんすけ)大阪で開発者していますSQLWorld の代表ですhttp://d.hatena.ne.jp/odashinsuke/Twitter:@shinsukeoda
  3. 3. SQLWorld とはhttp://sqlworld.org/Twitter:@SQLWorld_JP次のような情報を発信しているコミュニティです MS の RDBMS である「SQL Server」 もちろん他の DB の話しも! 正規化/モデリング SQL/NoSQL
  4. 4. World と名乗っていますが、 Worldwideでは無いです!
  5. 5. 関西限定!大阪で勉強会を開催しています
  6. 6. このセッションの対象者SQL は知ってる/書ける 開発者の方SQL Server の使用経験が… 使ったことない! 昔のなら使ったことある 新しいのなら使ったことある
  7. 7. T-SQL のお話しの前に…
  8. 8. 開発者の方がよく使う Edition の紹介Developer Edition 開発用 (※運用では使っちゃダメ!) Enterprise Edition と同等の機能 有償(Amazon で 5,000 位) 無償だと Evaluation Edition (評価版) があるExpress Edition 機能制限版 http://msdn.microsoft.com/ja-jp/library/cc645993.aspx 無償
  9. 9. インストール
  10. 10. インストールExpress with Tools をダウンロード http://www.microsoft.com/ja-jp/download/details.aspx?id=29062 JPNx86SQLEXPRWT_x86_JPN.exeダブルクリックで実行特に設定を変えずに、次へ次へでOK! 設定を変える必要があるケース FILESTREAM を使いたい場合 SQL Server への接続に Windows のユーザー認証 を使いたくない場合
  11. 11. 使ってみる
  12. 12. SQL Server Management Studio SSMS は、構成・管理・開発に使用出来る 統合開発環境 何でも出来ます GUI での操作 クエリの入力補完(インテリセンス)も効く SQL のテンプレートも豊富 Access ライクなクエリの作成も可能
  13. 13. 使ってみるSQL Server に接続するDatabase の作成Table の作成クエリの実行 (INSERT/SELECT)
  14. 14. T-SQL の進化
  15. 15. 各バージョンで使える機能SQL Server 2005SQL Server 2008SQL Server 2008R2SQL Server 2012
  16. 16. SQL Server 2005 で使える機能http://msdn.microsoft.com/ja-jp/library/ms189465(SQL.90).aspx データ型 SQL CLR T-SQL
  17. 17. データ型追加 XML varchar(max) nvarchar(max) varbinary(max)削除予定 text => varchar(max) ntext => nvarchar(max) image => varbinary(max)
  18. 18. SQL CLR T-SQL ではなく、CLR(C# や VB.NET) で ストアドや関数、トリガーなどを実装出 来る仕組み SQL Server のプロセス内で実行されるの で高速 C# や VB.NET で実装出来るので、開発効 率が良い/機能が豊富
  19. 19. T-SQL (1) OUTPUT 句 INSERT/UPDATE/DELETE で影響を受ける行の 情報を返す WITH (CTE) 共通テーブル式 再帰クエリ .WRITE 句 varchar/nvarchar/varbinary(max) の部分 更新
  20. 20. OUTPUT 追加/更新/削除された行の情報を取得 INSERT/UPDATE/DELETE/MERGE(2008 以降) 新しく追加/更新された後のデータ INSERTED.カラム名 更新/削除される前のデータ DELETED.カラム名
  21. 21. WITH (CTE) CTE = Common Table Query 一時的な結果セットに名前を付けたもの WITH を使ってクエリに名前を付ける 同じクエリ内で複数回参照可能 UNION ALL で自己参照 (再帰CTE)
  22. 22. T-SQL (2) FOR SELECT の結果を XML 形式に変換 TOP 式も書けるようになった! PIVOT/UNPIVOT 行列変換/列行変換 APPLY JOIN の感覚で使って、行毎にテーブル値関 数を呼び出す
  23. 23. TOP 2000 でもあったが構文が変わった! TOP <integer> => TOP (<expression>) 式が書けるようになったので、変数やサ ブクエリなんかも書けるようになった 旧構文は SELECT でのみ互換性のために 残してある
  24. 24. T-SQL (3) OVER 句 ウィンドウ関数(順位付け、集計) で使用 TRY…CATCH T-SQL でも
  25. 25. OVER ウィンドウ 関数 が使えるように! 順位付け関数 RANK, ROW_NUMBER, … 集計関数 に partition by が使えるよう に SUM, MAX, MIN, COUNT, …
  26. 26. クエリ通知ADO.NET とセットで利用SELECT / EXECUTE に対して設定可能対象のデータが変更されると、結果がSQL Server から PUSH される
  27. 27. SQL Server 2008 で使える機能http://technet.microsoft.com/ja-jp/library/bb500435(SQL.100).aspx データ/データ型 T-SQL データの変更監視
  28. 28. データ/データ型FILESTREAM 非構造化データをファイルシステムに保存スパース列 NULL が多い列の最適化日付/時刻型Spatial 型hierarchyid 階層構造を表す
  29. 29. 日付/時刻 データ型date 日付だけtime 時刻だけdatetime2 datetime より扱える範囲/精度が良いdatetimeoffset タイムゾーン持ちの日付時刻 データ型
  30. 30. Spatial データ型空間型 座標を表すデータ型 gemmetry 平面空間データ型 平面座標系のデータ Geography 地理空間データ型 球体地球座標系のデータ
  31. 31. T-SQL (1) DECLARE 時の代入 変数宣言時に代入可能 declare @hoge int = 5 複合演算子 +=, -=, *=. /=, %=, ^=, |= INSERT の VALUES 複数対応 “,” 区切りで複数書ける insert into <table> (~) values (~), (~),..
  32. 32. T-SQL (2) MERGE GROUPING の強化 GROUP BY での指定方法が強化 テーブル値パラメータ ストアドやファンクションに 一時テーブル を使わずにパラメータを渡せる
  33. 33. MERGE 更新対象テーブルと元となるテーブルの 結合結果に対して、更新処理を行う。 MATHCED 結合結果でデータが存在していた DELETE or UPDATE(主に UPDATE) NOT MATCHED (BY TARGET) 更新対象にデータがなかった INSERT NOT MATCHED BY SOURCE 元となるテーブルにデータがなかった DELETE or UPDATE(主に DELETE)
  34. 34. GROUPING の強化 GROUPING SETS カラムの組み合わせを自由に指定 複数列を単一のセットと見なせる ROLLUP 説明しづらいので例を GROUP BY ROLLUP (year, month, day) year, month, day | year, month | year | () の4パターン CUBE 組み合わせ(表)
  35. 35. データの変更監視変更データキャプチャ (CDC) Express/Standard Edition では使えない 変更されたデータも保持変更の追跡 (Change Tracking) Express Edition でも使える! 変更された事だけを保持 データは保持しないので、任意のタイミングのス ナップショットと比較
  36. 36. SQL Server 2008 R2 で使える機能http://technet.microsoft.com/ja-jp/library/bb510411(SQL.105).aspx データ層アプリケーション(DAC) Unicode 圧縮 nchar(n)/nvarchar(n) の Unicode データ が圧縮 Express の DBサイズが 10GB に増量
  37. 37. 2012 の新機能
  38. 38. T-SQL に絞って紹介 ORDER BY での OFFSET FETCH ページング処理も楽々 THROW ステートメント TRY-CATCH で OVER 句の強化 分析関数も使用可能に!
  39. 39. OFFSET FECTH 結果セットから一部のデータだけを フェッチするオプション ORDER BY は必須 TOP と同時使用はNG OFFSET:開始位置 FETCH:取得件数
  40. 40. OVER 分析関数も使えるようになった LAG LEAD FIRST_VALUE LAST_VALUE CUME_DIST PERCENTILE_CONT PERCENTILE_DISC PERCENT_RANK
  41. 41. T-SQL に絞って紹介 RESULT SETS オプション ストアド呼び出し時に、結果セットの型を 指定 (異なる場合は実行時エラー) 名前と型を変更可能 追加された関数
  42. 42. 追加された関数PARSE 文字列 => 日付/時刻 or 数値型 .NET に依存 (culture 指定可)TRY_PARSE/TRY_CONVERT PARSE/CONVERT の変換失敗で null 返すFORMAT 書式指定文字列を返す .NET に依存 (culture 指定可)
  43. 43. 追加された関数CHOOSE 値の一覧から index にある項目を返す CHOOSE(index, val1, val2, …)IIF CASE の簡略化CONCAT 2つ以上文字列結合で null は空文字扱い。EOMONTH 月の最終日を返す
  44. 44. さいごに
  45. 45. T-SQL を振り返って…2005 から使いやすくなった2008 は型が追加された2012 ではさらに便利な物が増えたExpress Edition は無償で使えるので、是非お試しを!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×