So-net無料ブログ作成
検索選択

SELECT文の基礎 [SQL]

SQL言語(SELECT)

プログラムでは勿論ですが保守でもSQLを使用することは多々あります。
そこで、SQLの基礎の備忘録

メモ:

・予約語及び英字の列名は全て大文字で記述する。(気持ち早くなるかな)

・括弧及びスペースの扱いの統一を行う。

・開発の場合は複雑な処理はプログラムで行う。

・保守及び個人的な興味の為、複雑なSQLに挑戦することは必要

・SELECT文

SELECT文は、DBからデータを取得する場合に使用します。

SELECT文は、SELECT句、FROM句、WHERE句、GROUP BY句、HAVING句及びORDER BY句により
生成されます。


基本書式:


SELECT句
検索の結果データを抜き出すテーブルのカラムを指定します。
・ALL:重複行も全てを表示する。(デフォルト)
・DISTINCT:重複行の削除。
・*:FROM句で指定されたテーブルの列名を全て取得する。
・列名,...:取得したい列名を指定
・列名 AS 列別名,...:列名の別名をつける時に使用。


基本例:

別名を使用:
出力結果の列名を別の名前に変更したい場合はASを使用し列名に別の名前を割当てることが出来ます。
値を使用1:
検索結果の列に値を結合したい場合は、&を指定し結果と値を結合します。

値を使用2:
検索に全て同じ値の列を追加したい場合は、SELECT句に値を指定します。

関数の使用:
処理系により様々な関数が用意されています。マニュアル等を参考にしてください。


FROM句
検索するテーブルを指定します。また、テーブルとみなすことが出来るものを指定することができます。 何をテーブルとみなすかはDBMSに依存します。DBMSのマニュアルを確認してください。
・表名 [ 表別名 ] , ...:取得する表名を指定する。
・表別名:表別名を指定することにより長い表名も扱いやすい名前に変更できます。
表別名の使用:
複数の表を使用した場合、表の表記がわずらわしいときがあります。このような場合に 表別名を使用して表名を単純化します。

↓別名使用

↓別名使用(JOINを使わない場合)


WHERE句
・検索条件:取得データを検索条件により検索対象データを選択する。
・複数の条件指定:ANDまたはORにより指定。
・条件式の否定:条件式にNOTを指定することで条件式の否定が使用できる。
条件式

条件式 意味
= 等しい a='10'
列aの値が10と等しい
< 小さい a<'10'
列aの値が10より小さい
<= 以下 a<='10'
列aの値が10以下
> 大きい a>'10'
列aの値が10より大きい
>= 以上 a>='10'
列aの値が10以上
LIKE ワイルドカード a LIKE 'a%'
先頭の文字がa
a LIKE '%a'
最後文字がa
a LIKE 'a%b'
先頭の文字がaで最後の文字がb
ワイルドカードには「_」と「%」があり、 「_」は任意の1文字で、「%」は0文字以上の任意の文字列
BETWEEN 範囲指定 a BETWEEN '10' AND '10'
列aの値が10~20までの値
IS NULL NULLの検索 a IS NULL
列aに値がセットされていない(NULL)
IS NOT NULL 非NULLの検索 a IS NOT NULL
列aに値がセットされている
IN 複数の値を検索 a IN ('2','4','6')
列aの値が2,4,6のデータを検索
=とORで表現できるがINを使用した方がコストがかからないといわれている。

GROUP BY句
表内の行をグループ化します。
* SELECT句に指定したグループ関数を使用していない列は、GROUP BY句に指定しなければなりません。
グループ関数
関数名 意味
AVG 平均 SELECT AVG(年齢) FROM 社員マスタ
社員の平均年齢
COUNT NULLでない行数 SELECT COUNT(社員) FROM 社員マスタ
社員数
MAX 最大値 SELECT MAX(給与) FROM 社員マスタ
最高額給与
MIN 最小値 SELECT MIN(給与) FROM 社員マスタ
最低額給与
SUM 合計 SELECT SUM(給与) FROM 社員マスタ
社員給与の合計



HAVING句
グループ分けしたデータにWHERE句と同様に検索条件を追加します。 HAVING句を使用する場合は、GROUP BY句によりグループ化されている必要があります。



ORDER BY句
SELECTで指定した列の検索結果をソートします。
・ASC:昇順
・DESC:降順
* ソートキーは複数指定可能


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。