SlideShare a Scribd company logo
「開発者の方向けの」
SQL Server / T-SQL 振り返り
CLR/H #clrh101 ~日本の夏、MR の夏~
2016/7/2 SQLWorld お だ
自己紹介
織田 信亮(おだ しんすけ)
大阪で開発者しています
SQLWorld の代表です
http://odashinsuke.hatenablog.com/
Twitter:@shinsukeoda
SQLWorld とは
http://sqlworld.org/
Twitter:@SQLWorld_JP
次のような情報を発信しているコミュニ
ティです
MS の RDBMS である「SQL Server」
もちろん他の DB の話しも!
正規化/モデリング
SQL/NoSQL
World と名乗っていますが、
Worldwide
では無いです!
関西限定!
大阪で勉強会を
開催しています
平日夜開催 クエリ書いてみよう
http://tsqlrunner.azurewebsites.net/
このセッションの対象者
現場でSQL を書いている
開発者の方
SQL Server じゃなくても良いよ
SQL Server の使用経験が…
使ったことない!
昔のなら使ったことある
新しいのなら使ったことある
このセッションの内容
開発者の方のためのセッション!
Standard 以下で使えるものを中心に
管理 / 運用 のお話しは無し
専門外なので
知ってると開発時に便利な機能を pickup
T-SQL の構文 / 関数 等の紹介
SQL Server 2005 ~ 2016 まで順に紹介
名前だけ憶えてもらえればOK!
必要になったら詳細調べてね~
アジェンダ
SQL Server 2005
SQL Server 2008
SQL Server 2012
SQL Server 2014
SQL Server 2016 / SQL Database
SQL Server 2005
SQL CLR
T-SQL ではなく、CLR(C# や VB.NET)
で、ストアドや関数、トリガー等を実装
出来るしくみ
SQL Server のプロセス内で実行される
プロセス間通信とかしないよ
実際にどれ位使われてるのかは不明。。
使ってる人います?
クエリ通知 (Query Notification)
ADO.NET で利用可能
SELECT / EXECUTE に対して設定可能
使える構文の制限がきつい
対象のデータが変更されると、結果が
SQL Server から PUSH されるイメージ
昔は ASP.NET の cache で使われてる感
じ(専用のクラスも用意されてた)
OUTPUT 句
追加/更新/削除 された行の情報を取得
INSERT/UPDATE/DELETE/(MERGE)
よく利用するシチュエーション
INSERT後の IDENTITY列の値取得!
複数件の INSERT でもOK
プログラムからだと、ExecuteScalar /
ExecuteReader 等の結果セットを返すメソッドで
開発者の方向けの Sql server(db) t sql 振り返り
WITH CTE
CTE = Common Table Expression
一時的な結果セットに名前を付けたもの
CTE は複数作成出来る
同じクエリ内で複数回参照可能
UNION ALL で自己参照 (再帰CTE)
自己結合による階層構造や連番作成 等に
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
TOP
2000 でもあったが構文が変わった!
TOP <integer> => TOP (<expression>)
式が書けるようになったので、変数 / サ
ブクエリも可
旧構文は SELECT でのみ互換性のため残
してある
ORDER BY 後に適用
開発者の方向けの Sql server(db) t sql 振り返り
OVER 句
ウィンドウ 関数が使えるように!
順位付け関数 / 集計関数 に partition by
で関数を実行するグループを決める
RANK, ROW_NUMBER, …
SUM, MAX, MIN, COUNT, …
GROUP BY と PARTITON BY の違い
GROUP BY
集計関数で使用。結果セット全体を指定し
たグループで集計する。
結果セットもグループ単位になる
PARTITON BY
集計関数 / 順位付け関数 / (分析関数) で指
定したグループで関数を実行する。
結果セットはグループ単位にならず、全件
返る
開発者の方向けの Sql server(db) t sql 振り返り
SQL Server 2008
データ型
FILESTREAM
非構造型データをファイルシステムに保存
日付/時刻
date/time/dateitme2/datetimeoffset
Spatial Data(空間データ)
geometry/geography
hierarchyid
階層構造を表す専用の型
データの変更監視
変更データキャプチャ(CDC)
Enterprise のみ (Developer ではOK)
変更されたデータも保持
大きいストアドとかのデバッグで重宝!
変更の追跡 (Change Tracking)
Express Edition でも使える
変更された事実だけを保持
変更されたデータは保持しない
開発者の方向けの Sql server(db) t sql 振り返り
T-SQL の強化
DECLARE 時の代入
変数宣言時に代入可能
declare @hoge int = 5
複合演算子
+= -= *= /= %= ^= |=
MERGE
更新対象テーブルと元となるテーブルの
結合結果に対して、更新処理を行う
MATCHED
結合結果でデータが存在していた
NOT MATCHED (BY TARGET)
更新対象にデータが無かった
NOT MATCHED BY SOURCE
元となるテーブルにデータが無かった
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
テーブル値コンストラクタ
行の値式のセット を表す
複数個まとめて INSERT 出来るアレの事
INSERT ~ VALUES (~), (~), (~), …
FROM や MERGE USING で利用可能
開発者の方向けの Sql server(db) t sql 振り返り
GROUPING の強化(GROUP BY)
GROUPING SETS
UNION ALL と同じ結果
ROLLUP
ROLLUP (C1, C2, C3)
C1, C2, C3 | C1, C2 | C1 | () の4パターン の
UNION ALL
CUBE
CUBE (C1, C2, C3)
全組み合わせ 8パターン の UNION ALL
(3C3 + 3C2 + 3C1 + 3C0) = 8
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
SQL Server 2012
OFFSET FETCH 句
結果セットから一部のデータだけを
フェッチするオプション
ページングの実装用が主な使い道
ORDER BY は必須
TOP と同時には使えない
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
OVER
分析関数も使えるように!
LAG
LEAD
FIRST_VALUE
LAST_VALUE
…
開発者の方向けの Sql server(db) t sql 振り返り
関数の追加
PARSE
文字列 => 日付/時刻 or 数値
.NET に依存 (culture 指定可)
TRY_~
PARSE / CONVERT / CAST
変換失敗で null
FORMAT
書式指定文字列を返す
.NET に依存 (culture 指定可)
関数の追加
CHOOSE
値の一覧から index にある項目を返す
CHOOSE(index, val1, val2, …)
IIF
CASE の簡略化
CONCAT
N個の文字列結合で、null は空文字扱い
EOMONTH
月の最終日を返す
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
SQL Server 2014
なし!!
SQL Server 2016
Azure SQL Database
Live Query Statistics
実行中のクエリの進行状況を表示する
SSMS クエリエディタ / 利用状況モニ
ター で確認
開発者の方向けの Sql server(db) t sql 振り返り
Query Store
名前の通りクエリの実行情報を保持
時系列でクエリの情報を取得
同一クエリで実行プランが変わっても、プ
ラン単位で実行情報を取得可能
特定の実行プランを強制することも
Stretch Database
テーブルのデータを SQL DB に自動的に
移動
テーブル検索時に、透過的に SQL DB の
テーブルもリモートクエリにより検索
どっちにデータがあるか意識しなくてOK
フィルター述語により、移行対象のデータ
をフィルター可
SQL DB に移動したデータは変更不可
制限も色々と
JSON サポート
SQLの実行結果をJSONとして出力
FOR JSON
JSON を テーブルっぽく展開する
OPENJSON
JSON 型が追加されたわけではない
文字列データ型に JSON を格納
他にも JSON 関数が追加
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
Temporal Tables
ANSI SQL:2011 規格
テーブルの変更履歴を自動で取得、任意
のタイミング/期間のデータを検索可能
履歴テーブルに更新データを保持
期間指定の検索は透過的に行われる
通常の運用では履歴は過去のみ
来月社員増えるから先に登録して、来月から参照
可能みたいなのは無理ー
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
Row-Level Security
テーブルにフィルターを設定することで、
条件にマッチするデータのみ取得
INSERT / UPDATE / DELETE も制限可
ルールに一致しないデータの登録NG
INSERT / UPDATE
ルールに一致しないデータの操作NG
UPDATE / DELETE
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
Dynamic Data Masking
特定の列のデータを取得時に透過的にマ
スキングした結果を返す
データ自体はマスキングされていない
権限持ってるユーザーはマスクされていな
いデータを取得可能
よくあるのは メールアドレス や クレ
ジットカード番号 のマスキングとか
開発者の方向けの Sql server(db) t sql 振り返り
関数
SESSION_CONTEXT
COMPRESS / DECOMPRESS
gzip での圧縮 / 展開
DATEDIFF_BIG
AT TIME ZONE
STRING_SPLIT
STRING_ESCAPE
FORMATMESSAGE の強化
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
まとめ
Standard 環境に絞ってもこれなので、
Enterprise な人は大変ですね!!
どの RDBMS も似たり寄ったりの機能 /
構文 があると思うので、キーワード憶え
ておけば探せると思います。
クエリ書く人視点では、行式サポートし
てないところがイケてない。
where ([受注番号], [受注枝番]) in (
('JU0001', '01'), ('JU0001', '02')
)

More Related Content

What's hot (14)

PPTX
ビルド時にSqlファイルを検証しよう
Oda Shinsuke
 
PPTX
いまいまMySQL@OSC2016長岡
sakaik
 
PPTX
いまいまMySQL@OSC2016島根
sakaik
 
PDF
MySQL Workbench 6.1 の紹介
yoyamasaki
 
PDF
MySQL Workbench をモデリングツールとして使ってみた
Norio Nakamura
 
PDF
Miyazaki流sql
hafuu
 
PDF
NoNoSQL
Yuichiro Ebihara
 
PPTX
Sql azure へ移行してみよう
Oda Shinsuke
 
PDF
EC-CUBE とクラウドは仲良しか?
Kentaro Ohkouchi
 
PPTX
Sql world を支える技術
Oda Shinsuke
 
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
 
PDF
WEBエンジニア勉強会 #13 LT 資料 データベース2.0
Shuichi Takaku
 
PPT
Microsoft Access講習
Tetsuya Yamamoto
 
PDF
Scalaで萌える関数型プログラミング[エッセンシャル版]
Ra Zon
 
ビルド時にSqlファイルを検証しよう
Oda Shinsuke
 
いまいまMySQL@OSC2016長岡
sakaik
 
いまいまMySQL@OSC2016島根
sakaik
 
MySQL Workbench 6.1 の紹介
yoyamasaki
 
MySQL Workbench をモデリングツールとして使ってみた
Norio Nakamura
 
Miyazaki流sql
hafuu
 
Sql azure へ移行してみよう
Oda Shinsuke
 
EC-CUBE とクラウドは仲良しか?
Kentaro Ohkouchi
 
Sql world を支える技術
Oda Shinsuke
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
 
WEBエンジニア勉強会 #13 LT 資料 データベース2.0
Shuichi Takaku
 
Microsoft Access講習
Tetsuya Yamamoto
 
Scalaで萌える関数型プログラミング[エッセンシャル版]
Ra Zon
 

Viewers also liked (20)

PDF
手書きスライド
Hideyuki Tanaka
 
PDF
怪しいWindowsプログラミング
nagoya313
 
PDF
Xpath in-lens
Hideyuki Tanaka
 
PPTX
IdrisでWebアプリを書く
Hideyuki Tanaka
 
PDF
Fighting history of CGFloat in Swift
Hirohito Kato
 
PDF
A4でまとめるClean architecture概要
Hirohito Kato
 
PPT
プログラミングで言いたい聞きたいこと集
tecopark
 
PPTX
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
Ken Morishita
 
PPTX
Visual studioとそのライバル
Tadahiro Ishisaka
 
PDF
Digitization-software is eating the world
Kenji Hiranabe
 
PDF
160625 cloud samurai_adds_migration_160625
wintechq
 
PDF
Rdra in 東京
Zenji Kanzaki
 
PDF
デザイン・制作をはじめる前に
取り組む事
kenji goto
 
PDF
メガネ型デバイスの未来について考える
Sho Okada
 
PDF
HTML5 Conference 2013 HybridCast
Satoshi Shoda
 
PDF
新規ビジネスデザイン研修 DYA2  テキスト<サンプル版>
Satoru Itabashi
 
PDF
Jenkins実践入門 第二版 What's New
Masanori Satoh
 
PDF
KPTAふりかえり体験研修のご紹介
ESM SEC
 
PPSX
Rdra4越境アジャイル
Zenji Kanzaki
 
PPTX
Fitnesse を用いたテストの効率化について
tecopark
 
手書きスライド
Hideyuki Tanaka
 
怪しいWindowsプログラミング
nagoya313
 
Xpath in-lens
Hideyuki Tanaka
 
IdrisでWebアプリを書く
Hideyuki Tanaka
 
Fighting history of CGFloat in Swift
Hirohito Kato
 
A4でまとめるClean architecture概要
Hirohito Kato
 
プログラミングで言いたい聞きたいこと集
tecopark
 
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
Ken Morishita
 
Visual studioとそのライバル
Tadahiro Ishisaka
 
Digitization-software is eating the world
Kenji Hiranabe
 
160625 cloud samurai_adds_migration_160625
wintechq
 
Rdra in 東京
Zenji Kanzaki
 
デザイン・制作をはじめる前に
取り組む事
kenji goto
 
メガネ型デバイスの未来について考える
Sho Okada
 
HTML5 Conference 2013 HybridCast
Satoshi Shoda
 
新規ビジネスデザイン研修 DYA2  テキスト<サンプル版>
Satoru Itabashi
 
Jenkins実践入門 第二版 What's New
Masanori Satoh
 
KPTAふりかえり体験研修のご紹介
ESM SEC
 
Rdra4越境アジャイル
Zenji Kanzaki
 
Fitnesse を用いたテストの効率化について
tecopark
 
Ad

Similar to 開発者の方向けの Sql server(db) t sql 振り返り (20)

PPTX
T sql 振り返り
Oda Shinsuke
 
PDF
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
 
PPTX
Sql world を支える技術
Oda Shinsuke
 
PDF
Google Gears データベースの基礎
webos-goodies
 
PDF
とあるDBAの黒い画面(ターミナル)
Kazuhiro Yoshikawa
 
PDF
Sql基礎の基礎
Satomi Tsujita
 
PPTX
T sql の parse と generator
Oda Shinsuke
 
PPTX
Sql database でも使えるほにゃらら
Oda Shinsuke
 
PPT
20080617 05 Mysql
stiq 2e
 
PPTX
[LT] T sql の parse と generator
Oda Shinsuke
 
PPTX
本当にあった怖い話し Db編
Oda Shinsuke
 
PDF
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
Ryota Watabe
 
PDF
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
 
PPTX
本当にあった怖い話し (やきに駆動 2.0)
Oda Shinsuke
 
PPTX
SQL Serverの関数を一覧でマスターしよう
A AOKI
 
PDF
traceur-compilerで未来のJavaScriptを体験
Toshio Ehara
 
PDF
簡単!AWRをEXCELピボットグラフで分析しよう♪
Yohei Azekatsu
 
PDF
Let s database_testing
Yuji Shimada
 
PDF
Sql server data store data access internals
Masayuki Ozawa
 
PDF
Form libraries
Atsushi Odagiri
 
T sql 振り返り
Oda Shinsuke
 
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
 
Sql world を支える技術
Oda Shinsuke
 
Google Gears データベースの基礎
webos-goodies
 
とあるDBAの黒い画面(ターミナル)
Kazuhiro Yoshikawa
 
Sql基礎の基礎
Satomi Tsujita
 
T sql の parse と generator
Oda Shinsuke
 
Sql database でも使えるほにゃらら
Oda Shinsuke
 
20080617 05 Mysql
stiq 2e
 
[LT] T sql の parse と generator
Oda Shinsuke
 
本当にあった怖い話し Db編
Oda Shinsuke
 
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
Ryota Watabe
 
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
 
本当にあった怖い話し (やきに駆動 2.0)
Oda Shinsuke
 
SQL Serverの関数を一覧でマスターしよう
A AOKI
 
traceur-compilerで未来のJavaScriptを体験
Toshio Ehara
 
簡単!AWRをEXCELピボットグラフで分析しよう♪
Yohei Azekatsu
 
Let s database_testing
Yuji Shimada
 
Sql server data store data access internals
Masayuki Ozawa
 
Form libraries
Atsushi Odagiri
 
Ad

More from Oda Shinsuke (20)

PDF
SQL Server2022_PSPoptimization_pub.pdf
Oda Shinsuke
 
PDF
What's hyperscale
Oda Shinsuke
 
PDF
Dot net+sql server tips
Oda Shinsuke
 
PDF
Sql server 2019 ざっくり紹介
Oda Shinsuke
 
PDF
Spark on sql server?
Oda Shinsuke
 
PPTX
SQL Server のロック概要
Oda Shinsuke
 
PDF
Blazor 触ってみた
Oda Shinsuke
 
PDF
Linux + PHP でも SQL Server
Oda Shinsuke
 
PPTX
グラフデータベースの話し
Oda Shinsuke
 
PPTX
Sql server 2017 新機能のご紹介
Oda Shinsuke
 
PPTX
Sql server 2017 からはじめる graph データベース
Oda Shinsuke
 
PPTX
Transaction scopeまだダメ
Oda Shinsuke
 
PPTX
Sql serverと他dbの違いを押さえよう!
Oda Shinsuke
 
PPTX
Ms build 触ってみよう
Oda Shinsuke
 
PPTX
Sql server2014復習とsqlserver2016の紹介
Oda Shinsuke
 
PPTX
Sql server sql database 最新機能紹介
Oda Shinsuke
 
PPTX
Selenium 触ってみよう
Oda Shinsuke
 
PPTX
Sql database のご紹介
Oda Shinsuke
 
PPTX
Sql database のご紹介
Oda Shinsuke
 
PPTX
Jsf アプリ作ったった
Oda Shinsuke
 
SQL Server2022_PSPoptimization_pub.pdf
Oda Shinsuke
 
What's hyperscale
Oda Shinsuke
 
Dot net+sql server tips
Oda Shinsuke
 
Sql server 2019 ざっくり紹介
Oda Shinsuke
 
Spark on sql server?
Oda Shinsuke
 
SQL Server のロック概要
Oda Shinsuke
 
Blazor 触ってみた
Oda Shinsuke
 
Linux + PHP でも SQL Server
Oda Shinsuke
 
グラフデータベースの話し
Oda Shinsuke
 
Sql server 2017 新機能のご紹介
Oda Shinsuke
 
Sql server 2017 からはじめる graph データベース
Oda Shinsuke
 
Transaction scopeまだダメ
Oda Shinsuke
 
Sql serverと他dbの違いを押さえよう!
Oda Shinsuke
 
Ms build 触ってみよう
Oda Shinsuke
 
Sql server2014復習とsqlserver2016の紹介
Oda Shinsuke
 
Sql server sql database 最新機能紹介
Oda Shinsuke
 
Selenium 触ってみよう
Oda Shinsuke
 
Sql database のご紹介
Oda Shinsuke
 
Sql database のご紹介
Oda Shinsuke
 
Jsf アプリ作ったった
Oda Shinsuke
 

Recently uploaded (10)

PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 

開発者の方向けの Sql server(db) t sql 振り返り