Contents
WHERE句
4つのSQL文で、データベースを操作することができますが、WHERE句と呼ばれる修飾語のような記述を使うことによって、ピンポイントで操作したいデータ(行)を絞り込むことができます。
WHERE句の基本
①処理対象の行の絞り込みに使う
→使わないと全ての行が処理対象になってしまう。DELETE文であれば、全データを削除してしまいかねないので、注意しておかないとメッチャ怖い。
②SELECT文、UPADATE文、DELETE文で使用可能
③WHEREの後ろは条件式(真か偽か、YesかNoかで判断できる式)を記述する
→RDBMSはテーブルの一行一行に対して、WHERE句で記述された条件に合うかどうかを判断している。
演算子
基本的な演算子
よく使われるのは比較演算子と呼ばれるもの。小学校の算数の授業でやってた「大なり」「小なり」ってやつ。
比較演算子 | 意味 |
= (例: 1=1) | 左右の値が等しい |
< (例: 2 < 3) | 左辺は右辺より小さい |
> (例: 3 > 2) | 左辺は右辺より大きい |
<= (例: 2 <= 3) | 左辺は右辺の値以下 |
>=(例: 2 >= 3) | 左辺は右辺の値以上 |
<>(例: 2 <> 3) | 左右の値が等しくない |
NULL
NULLは何も格納されていない。定義されていないという意味。
INTEGER型を例に取る、「0」と「NULL」は意味が違う。「0」は「0」というINTEGER型の値が格納されていることを意味するが、「NULL」は何も格納されておらず、未定義のままという意味になる。
1 2 3 4 5 6 7 8 9 |
#NULLであることを判定 SELECT * FROM テーブル名 WHERE 列名 IS NULL #NULLでないことを判定 SELECT * FROM テーブル名 WHERE 列名 IS NOT NULL |
LIKE演算子
ある文字(キーワード)を含む行を取り出したいときに使う。
1 2 3 4 |
SELECT * FROM 家計簿 WHERE メモ --メモ列を指定 LIKE '%1月%' --メモ列の中で1月という文字を含むものを指定 |
1 2 3 4 |
SELECT * FROM 口座 WHERE 口座番号 LIKE '4_____' -- 口座番号が40000番台という意味 OR 名義 LIKE 'チョ__ %ペ' -- 姓がチョで始まる4文字で、名がペで終わるという意味 |
文字 | 意味 |
% | 任意の0文字以上の文字列 |
_(アンダースコア) | 任意の1文字 |
BETWEEN演算子
ある範囲内に値が収まっているかを判定したいときに使う。
1 2 3 4 |
SELECT * FROM 家計簿 WHERE 支出 --支出の列を指定 BETWEEN 2000 AND 3000 -- 2000〜3000以内のデータを取得 |
IN / NOT IN演算子
IN演算子は値が列挙した複数の値のいずれかに合致するかを判定したいときに使う
1 2 3 4 |
SELECT * FROM 家計簿 WHERE 費目 --費目の列を指定 IN ('食費' , '交際費') -- 食費と交際費に合致するものを取得 |
NOT IN演算子は列挙した値のどれとも合致していないことを判定したいときに使う
1 2 3 4 |
SELECT * FROM 家計簿 WHERE 費目 -- 費目の列を指定 NOT IN('食費', '交際費') -- 食費と交際費以外のものを全て取得 |
NOT IN演算子と <>ALL は同じ意味で、全ての値と一致しない場合に真となる。
論理演算子
WHERE句でピンポイントでデータ(行)を取得したいときに、複数の条件式を組み合わせたいときに使う
AND演算子
「条件式1 かつ 条件式2 が真の場合」というデータ(行)を特定して処理したいときに使う。
1 2 3 4 |
UPDATE ちょぺのお使いメモ -- テーブルの指定 SET 価格 = 300 -- 編集したい列と編集後の値を指定 WHERE お店 = スーパー -- 「価格」という列の中でも、お店の名前がスーパー AND 商品名 = チョコレート -- 且つ商品がチョコレートの値を300円に編集する |
OR演算子
「条件式1 あるいは 条件式2 が真の場合」というデータ(行)を特定して処理したいときに使う。
NOT演算子
これはある条件式に合わないものを特定して処理したいときに使う。
例えば、AND演算子の例文を、「WHERE NOT お店 = スーパー」と書き換えると「お店がスーパー以外の」という意味になる。
論理演算子の優先順位
論理演算子は
①NOT
②AND
③OR
という優先順位にそって処理されるので、記述する際は順番に注意が必要。
複数の論理演算子を使う場合は条件式にかっこ()をつけると分かりやすくなる
1 2 3 4 5 6 |
SELECT * FROM ちょぺのお使いメモ WHERE (お店 = スーパー OR お店 = コンビニ) AND (お菓子 = チロルチョコ OR お菓子 = チョコボール) |
WHERE句や演算子を使って、行を絞り込む方法が少し分かった。
今度はSELECT文やWHERE句を使って絞り込んだ行を「値段が高い順に表示させる」「日付が最新順になるように表示させる」みたいなことができる、検索結果の加工方法を勉強してみます。