はじめてのSQL

SQL WHERE句で検索条件の指定

SQLの修飾語としてもっともよく使われるのが

WHERE句です テーブルのどの部分を処理したいのか指定する時に使います

WHERE句の基本

WHERE句とは、テーブルデータの検索条件を指定するためのSQL構文です

  • SELECT、UPDATE、DELETE文で使用するINSERTでは使用できない
  • WHERE句では条件式の結果は常に真(TRUE)になる物を検索します
  • SELECT、UPDATE、DELETE文でWHEREを指定しない場合は全ての行が対象になる
  • WHEREの後ろに条件式を記述する

WHERE句の後ろの条件式はどんな式でも書けるのでは無く

「食費 + 1000」のような計算式は指定出来ません

会計事務所データベースより従業員テーブルを使って説明していきますね

従業員テーブル  ~横に3つの列~
社員コード社員名性別
01山田 太郎
02鈴木 花子
03横井 次郎
04福田 美津子
~縦にに4つの行~
男の人だけの情報を取り出したい時は

SELECT  社員名 , 性別   
  FROM   従業員
WHERE    性別 男   ←ここに条件を書く

検索結果
従業員テーブル  
社員名性別
山田 太郎
横井 次郎
山田さんの名前を変更したい場合は 

UPDATE 従業員(UPDATEの後にテーブル名を指定する)
  SET 社員名 = 山田 一郎(更新したい 列名 = 値 を書く)
WHERE 社員コード = 01 
(↑どの列のどこを書き換えるか指定)

更新結果
社員コード社員名性別
01山田 一郎
02鈴木 花子
03横井 次郎
04福田 美津子
山田さんの名前を消去したい場合は 
DELETE
  FROM    従業員(FROMの後にどのテーブルからかを書く)
WHERE   01 (WHEREの後に行を指定)



消去結果
従業員テーブル  
社員コード社員名性別
02鈴木 花子
03横井 次郎
04福田 美津子

条件式の基本構文

条件式に使える比較演算子
比較演算子 意味
左右の値が等しい
左側は右より小さい
左側は右よりも大きい
<= 左側は右側の値以下
>= 左側は右側の値以上
<> 左右の値が等しくない
【比較演算子とは】初心者 早見表さまざまな条件式で使われる比較演算子ですが 書き方を間違えると全く反対の意味になってしまいますが ついついこの場合はと混乱する事ありませんか?...

NULL は=(比較演算子)では判定できない

NULLを指定したい時にやっちゃう うっかりミスはSQLをはじめたばかりの時はよくある代表的なミスですNULLは比較演算子では判定出来ないんです

NULL の判定方法

NULLである事を判定する
WHERE IS NULL  

NULLでない事を判定する
WHERE IS NOT NULL  

WHERE句の後に『IS NULL』『IS NOT NULL』のいずれかを記載します

SQL NULL(ヌル)とはSQLでのNULL(ヌル)とはなんで0じゃあダメなの? WHERE句 では NULL は=(比較演算子)で判定できない ...

LIKE 演算子 で パターンマッチング

LIKEを使うと文字の部分一致を検索する事ができます

パターン文字 意味
% 任意の0文字以上の文字列
_(アンダースコア) 任意の1文字
LIKE (ライク)演算子とはSQLの条件式で利用されるLIKE (ライク)演算子とは%を含む文字列を探す場合...

BETWEEN 演算子 で 範囲判定

BETWEEN を使うと値が『値1以上かつ値2以下』のように指定した範囲に合致する値を検索する事ができます

WHERE(探す列名)BETWEEN値1(ここから)AND値2 (ここまで)  

BETWEEN 演算子とはBETWEENとは指定した範囲内に収まっている値を探す時に使います...

IN 演算子 で 複数の値との比較

IN 演算子は複数の値をカッコ内にセットできいずれかに合致するかを判定できます

WHERE(探す列名)IN(値1,値2,値3)

IN / NOT IN 演算子とは複数の値を探す時に使います 同じく値を探すには『=』でも探せますが =では1つの値としか比較できません『IN』や『 NOT IN』を使う事で複数の値を同時に比較する事ができます...

ANY/ALL 演算子 で複数の値と比較

ANY/ALLでは必ずその直前に比較演算子を付けて利用します

いずれかが合致するなら
WHERE(探す列名)(比較演算子)ANY(値1,値2,値3)

すべてが合致するなら
WHERE(探す列名)(比較演算子)ALL(値1,値2,値3)

ANY/ALL 演算子 で複数の値と比較WHERE句で検索条件の指定で利用されるANY/ALL 演算子の使い方と違い...

AND演算子とOR演算子

複数の条件式を組み合わせたい時はAND演算子とOR演算子を使います

2つの条件式の両方が真の場合だけ真 (AかつB)
WHERE   (条件式1)AND(条件式2)

2つの条件式のどちらかが真なら真 (AまたはB)
WHERE   (条件式1)OR(条件式2)

このようにWHERE句にさまざまな条件を付ける事で複雑な処理が可能になります