はじめに
SQL Serverに流すクエリの書き方で学んだことをまとめます。
可読性を高める書き方
・命令語(SELECT等)は小文字でもエラーにならないが、全て大文字で統一するべき
SELECT文
SELECT 列,.. FROM テーブル WHERE 条件式 ORDER BY 並び替え基準列
-列:抽出対象の列。
-テーブル:抽出対象のテーブル
-条件式:出力データの絞り込み条件
-並び替え基準列:この列の値を基準に並び替える。通常は昇順。オプションでDESCを指定すると降順。
○列にアスタリスクを指定すると全列指定になる
○条件式で使える比較演算子
比較演算子 | 意味 |
---|---|
A = B | A = Bか |
A <> B | A != Bか |
A > B | A > Bか |
A < B | A < Bか |
A >= B | A >= Bか |
A <= B | A <= Bか |
A BETWEEN B AND C | B <= A <= Cか |
A LIKE '%B%' | AにBの文字列が含まれるか |
A IN (B,C,...) | Aが括弧内の要素のどれかに一致するか |
スカラ変数宣言から代入まで
DECLARE @変数名 型名 = 代入値(代入部は省略可)
SET @変数名 = 代入値
-変数名:任意の変数名
-型名:INTやVARCHARなどの型を指定
-代入値:代入する値。ここにSELECT文を書く場合は括弧で囲む必要がある
○宣言文、代入文をSELECT文内に書くことはできない
CASE文の使い方
CASE 変数名 WHEN 比較値 THEN 出力値 ELSE 規定値 END
CASE WHEN 条件式 THEN 出力値 ELSE 規定値 END
-変数名:任意の変数名
-比較値:この値と変数名が一致すると条件成立
-出力値:条件に一致した時に出力する値
-規定値:どの条件にも当てはまらない時に出力する値
-条件式:条件式
○単純式は見やすく書きやすい。検索式は汎用性が高い
バインド変数
- コロン(:)から始まる項目(Oracle等)やクエスチョンマーク(?)(他の言語)をプレースホルダと呼び、プレースホルダーを割り当てることをバインドと呼ぶ
- データベース管理システムへSQL文を発行する際、一部を動的に変更できる変数にする機能のこと。その部分に後から代入や変更を行ってもSQL文の再生成や解釈をし直す必要がなく、高速に実行することができる
INSERT文
INSERT INTO テーブル(列,...) VALUES(値,...)
-テーブル:値を挿入するテーブル
-列:挿入先の列
-値:挿入する値
○(列,...)部を省略するとテーブル内の全列を指定したことになる
○VALUES(値,...)部にSELECT文を書くと、他のテーブルから取ってきた値を入れたりできる
サブクエリ
SELECT文を括弧でくくって色々な部分に組み込める。
SELECT * FROM テーブル名1 WHERE 列名1 = (SELECT 列名2 FROM テーブル名2)
SELECT * FROM テーブル名1 WHERE 列名1 IN (SELECT 列名2 FROM テーブル名2)
○乱用すると可読性が低下する
リンクサーバー
リンクサーバーのテーブルを参照する為には以下のように記述する
[リンクサーバー名].[DB名].[テーブル名]
UPDATE文
UPDATE テーブル名 SET 列名1 = データ1,... WHERE 更新条件
-テーブル名:更新対象のテーブル名
-列名:更新対象の列名
-データ:更新データ
-更新条件:更新する列を絞り込む条件